本人现在北京某大型互联网公司高级数据开发工程师一枚,三年工作经验,一年多面试官经验。
2.为啥要写这篇文章?
面试中经常会遇到这种情况:之前专心写web的Java码农突然转型想做大数据了,然后写几个大数据的项目经验跑来面试,结果就是一问三不知,还有好多人只是搭了个Hadoop环境就说自己是搞大数据的,然后来面数据开发,结果肯定悲剧。一般情况下,面试失败的我都会送走,然后针对不同的人给点建议。面试候选人一激动就要加微信,最后的结果就是人没招来几个,微信好友加了不少。这篇文章基本上就是一些经验的汇总。
3.正题
首先,我个人进入大数据行业也纯属偶然,当年实习的时候做的是纯纯的Java开发,后来正式毕业了以后找了份Java开发的工作,本以为和大多数Java猿一样天天搞增删改查了,但是巧的是搞好部门有个做大数据开发的离职了,数据开发缺人手,然后领导就让我顶上了。刚开始什么Hadoop,HDFS也是各种不懂,只会写hive,因为毕竟有SQL基础嘛。再后来发现hive实现一些东西很麻烦,就开始学习spark。网上找的例子,从Wordcount入手,边写简单的例子边看《Hadoop权威指南这本书》,不到一周时间就上手写了一个计算报表数据的作业。后来就不断深入,过程之中觉得《Hadoop权威指南》这本书每一次读都有不同的体会,前前后后应该读了有三四遍吧。
总体感受就是理解了分布式计算的模型,就知道如何写mapreduce了。但是如何进行作业优化以及数据处理过程中遇到的问题如何解决就需要更深入的研究。
前面提到来面试的有应届生也有工作几年的,针对不同的人给一些不同的建议。
3.1 对应届生
个人觉得应届生应该打好基础,大学本科一般都会开设数据结构,算法基础,操作系统,编译原理,计算机网络等课程。这些课程一定要好好学,基础扎实了学其他东西问题都不大,而且好多大公司面试都会问这些东西。如果你准备从事IT行业,这些东西对你会很有帮助。
至于学什么语言,我觉得对大数据行业来说,Java还是比较多。有时间有兴趣的话可以学学scala,这个语言写spark比较棒。
集群环境一定要搭起来。有条件的话可以搭一个小的分布式集群,没条件的可以在自己电脑上装个虚拟机然后搭一个伪分布式的集群。一来能帮助你充分认识Hadoop,而来可以在上面做点实际的东西。你所有踩得坑都是你宝贵的财富。
然后就可以试着写一些数据计算中常见的去重,排序,表关联等操作。
对于我来说,面试应届生就问你的基础,笔试大多是数据结构和算法方面的,如果你基础不错而且有一定的大数据方面的经验,基本上都会过。
3.2 对有工作经验想转行的
主要考察三个方面,一是基础,二是学习能力,三是解决问题的能力。
基础很好考察,给几道笔试题做完基本上就知道什么水平了。
学习能力还是非常重要的,毕竟写Javaweb和写mapreduce还是不一样的。大数据处理技术目前都有好多种,而且企业用的时候也不单单使用一种,再一个行业发展比较快,要时刻学习新的东西并用到实践中。
解决问题的能力在什么时候都比较重要,数据开发中尤为重要,我们同常会遇到很多数据问题,比如说最后产生的报表数据对不上,一般来说一份最终的数据往往来源于很多原始数据,中间又经过了n多处理。要求你对数据敏感,并能把握问题的本质,追根溯源,在尽可能短的时间里解决问题。
基础知识好加强,换工作前两周复习一下就行。学习能力和解决问题的能力就要在平时的工作中多锻炼。
社招的最低要求就上面三点,如果你平日还自学了一些大数据方面的东西,都是很好的加分项。
以上是个人的一些经历和见解,希望能帮到你。当然也不完全正确,如果你认为不妥可以评论开喷,哈哈。
最后祝各位看官都找到称心如意的工作!