一般来说,拿到一个大数据工程师的Offer需要经过以下几个环节:

  • Get noticed/contacted by a recruiter/Approach a recruiter
  • Online Assignment (Optional)
  • Phone interview: usually by a lead/manager
  • Onsite interview: meet with the technical team and crack some problems

 

Recruiter round

怎样让Recruiter注意到你?一般来说,Recruiter并不具备相关的的技术背景,可能他们都不知道Spark,Hadoop到底是什么,那他如何帮助公司找到合适的的人才呢?

 

答案是通过搜索关键词。如果公司想要Recruiter招一位熟悉Spark,Hadoop等的大数据工程师,Recruiter可能会在LinkedIn上搜索Spark等的关键词,以寻找符合要求的人才。

 

LinkedIn的Profile里有一项Knowledge base,其他人可以Endorse你,要好好利用这个渠道,找同学或教授Endorse,Endorsement越多,在Recruiter搜索关键词时,你的排名就越靠前,就越可能被Recruiter看到。如果你Hadoop这一项的Endorsement很多,比如超过两百,Recruiter就会更相信你是懂Hadoop的。

 

此外,LinkedIn可以多加一些好友,越多越好,这样你会有更多的机会,可能你很久以前聊过加过的一个人之后可以帮你内推。

 

最后,准备好一份相关性高的简历。简历上放的项目也是有讲究的,在这里我们举两个例子。

 

Candidate 1的简历中写了以下三个项目:

Tiny URL, Chess Game in Java (course project), Compiler (Computer Architecture)

大家觉得这样的简历如何呢?

其实Recruiter看到的的简历中,可能有一半的简历上都有Tiny URL项目,而有80%的简历上都有Compiler,这样的简历显然是不能脱颖而出的。怎样使自己的简历突出出来?

 

Candidate 2的简历中写了以下三个项目:

HDFS Cluster Monitoring, Customized Spark Adapter for S3, Apache Hadoop Contributor

大家觉得简历上放这三个项目如何呢?如果Recruiter看到这样的简历,只要项目描述不成问题,一般是会通过的。这些项目与Course project不一样,用到的也是流行的技术,是可以脱颖而出的。

下面来看两个具体的项目描述:

 

 

这个简历中,除了有提到Kafka和Python,并没有用到其他大数据的技术。虽然写了Spark,但没有反映出他是怎么用的。看完这个项目描述后,我知道他做了这些事情,但是不知道这些事情有什么用,像一个Course project。

 

 

再看这位同学修改后的简历,他做了一些新的项目,描述中写得非常有条理,Implemented a web app等,还有提到Twitter-API, JSON, Data pipeline, Node.js等等关键词,清楚地介绍了项目做了什么,用了哪些技术,有怎样的结果,对比这两份简历就会体会到其中的不同,后者显然会更吸引面试官。

 

Hiring Manager/Tech lead Round

过了Recruiter这一轮过后,Hiring Manager可能会和你约Phone interview。首先会让你自我介绍,大致了解你的背景。然后让你介绍以前做过的项目,最后会问一些Behavior questions,比如你以前解决过的问题,你从过去的项目中学到了什么等等。

 

Hiring Manager问这些问题的目的是看你适不适合他们的团队,你能否把做过的的事情解释清楚,你的知识和简历上写的是不是一致的。

 

需要注意的是,Hiring Manager还会问一些关于大数据或分布式系统的General knowledge。例如:

  • Hadoop是什么?
  • HDFS的结构是怎样的?为什么这么设计?
  • HBase和Hive有何区别?
  • Spark和Hadoop有什么区别?什么时候用Spark,什么时候用Hadoop?

 

什么是Hadoop?

Hadoop是一个大数据的框架,用来做大数据分析,可以把很多数据存到Hadoop里,并把数据拿出来作分析。

大家觉得这样的回答怎样呢?

其实这个回答是很笼统的,说了和没说的区别并不大,因为没有任何Insights。

假如说我这样回答:Hadoop包括两个方面,一个是存储,一个是计算。存储是你需要有一个分布式并行的系统来存储数据,如HDFS。同时还有一个MapReduce框架用来做计算。看你具体想问哪一个方面,我们可以进一步再聊。这样的回答答出了一些Insights,说得很清楚,Hadoop包括两个方面,并且问面试官他想问我什么,这样显得你是真的很懂Hadoop。

 

HDFS的结构是怎样的?为什么这么设计?

 

 

你可以直接画出这个图,并且介绍道,HDFS中有Namenode和Datanode,数据通过Namenode来访问,再通过Datanode读数据。这样介绍一番其实很像“照葫芦画瓢”,大家都是这么写的,这么说的,并没有讲出她为什么这样设计,别的的设计为什么不行。

 

如果我这样回答:HDFS查数据的方法和我们查纸质字典的方法是一样的。Client需要一个数据,他会向Namenode要这个数据,Namenode不存数据,只存Index,它管理所有数据的Location。它告诉你这个数据在哪里,Client就去哪里读数据。如果可以用一些比喻来解释这个过程,说明你对此理解得比较深刻。

 

由此看来,我们如何看一个大数据架构?

第一,你要明白它为什么这样设计;第二,它是怎么设计的?第三,这样设计有什么好处?不这样设计有什么不好之处?即Why,What,How。

 

Onsite  interview

接下来是Onsite  interview,主要考察以下三方面的知识:

  • Coding类的基础知识
  • 系统设计相关的题:比如如何设计一个Data pipeline来解决Business问题
  • 大数据系统相关的概念和知识