先说一下自己的经历，大学的时候我从大二开始学习 Java ，然后学了大半年多的安卓。之后就开始学习 Java 后台，学习完 Java 后台一些常用的知识比如 Java基础、Spring、MyBatis等等之后。因为感觉大数据领域发展也挺不错的，所以就接触了一些大数据方面的知识比如当时大数据领域的霸主 Hadoop 。

> 我当时学习了很多比较古老的技术比如现在基本不会用的 JSP、Struts2等等。另外，我

所以，我当时在找工作之间也纠结过自己到底是投大数据岗位还是Java后台开发岗位。

主要纠结点如下：

1. **薪资：** 大数据当时的薪资水平高于 Java 后台开发很多；
2. **前景：** 我个人感觉大数据岗位的发展前景很好；
3. **个人偏见：** 感觉大数据开发比 Java后台开发听着高大上点（哈哈，当时的我就是这么真实）；

不过在我分析了大部分公司的大数据岗位的要求以及自身的优势（Java后台开发的实际经验）之后还是义无反顾的只投递 Java 后台开发岗位。

先来看一下几家典型的互联网公司对大数据工程师的要求（我找的都是允许应届毕业生投递的岗位）：

**SHEIN**

> 很多人可以不了解这家低调的公司，主要原因是因为 SHEIN目前的主要业务是出口跨境电商，用户基本集中在海外。SHEIN 这些年的发展非常不错，总的来说是一家值得去的公司。

![SHEIN Big Data](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/shein-bigdata.jpg)

SHEIN 的大数据岗位的要求写的还是比较有代代表性的！但是我觉得加上：**有扎实的Java基础、熟悉多线程与JVM相关原理** 这一条可能会更好！

一家公司可能并不具有代表性，我们再来找一家公司的大数据岗位看看。

**Alibaba**

![Alibaba Big Data](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-11/alibaba-bigdata.jpg)

说明一下，阿里巴巴大的大数据开发岗位的描述其实挺友好的比如这样描述：

> “如果你有参与过数据处理、分析、挖掘等相关项目更好”、“如果你对Hadoop、Hive、Hbase等分布式平台有一定的理解更好”。

实际是这样吗？nonono!我信你个鬼，你个糟老头子坏的很！毕竟这么多人竞争这一个岗位，不会像描述的这么简单。

如果你对 HDFS、HBase、Hadoop 甚至是 Elasticsearch这些不了解的话，还是会很难入场。

**总结一下（偏大厂）大数据岗位的对于应届生的基本要求（社招的其实也差不多，对于经验要求会更高）:**

1. **算法和数据结构是最基本的（比如手写快排、手撕红黑树）。**
2. **有扎实的Java基础、熟悉多线程与JVM相关原理。**
3. **熟练使用 Linux ，熟悉一门脚本语言 shell 或者 Python**
4. 熟悉Hadoop架构和工作原理、MapReduce编程、HDFS；熟悉Hive,最好有HQL优化经验；
5. **熟练掌握 Spark 及 Spark Streaming开发，有实际项目研发经验更佳；**
6. 熟悉 Elasticsearch、Kafka等技术会是加分项；
7. ......

所以，总的来说不论是对于 **Java 后台开发还是大数据开发都会要求你的数据结构和算法 Java 基础、多线程、jvm 底层这些掌握的要很好。** 很多人 Java 后台的人转大数据开发很快的原因也是在这里。

正常一点的大数据面试还是比较有难度的，比如如果你写了你会 Spark 的话，他就会问题你：

1. 什么场景下用的Spark ？解决了什么问题？
2. Spark 执行机制了解吗？
3. Spark 内存模型了解吗？
4. ......

另外，如果你的简历上写了你会 Spring 这些东西的话，面试官应该也会一并提问。可以看出现在的大数据岗位没有强制性要求你有 web 开发经验,在我那一年的时候，大部分大数据开发岗位都要求你还要有 web 开发经验。







