「大数据工程师技术面试攻略」知乎 Live 笔录
本文为 100offer 发起的知乎 Live「大数据工程师技术面试攻略」活动笔录。分享嘉宾为 58 集团大数据团队技术经理 吴培培。

大家好,我是吴培培,58集团大数据团队技术经理,从业5年一直在大数据行业,从底层hadoop平台到日志系统、统计系统再到数据仓库和数据产品及应用都有涉猎,希望今天的分享能够帮到大家,也期待更多的互动交流。

1. 大数据时代下,大数据工程师该如何应对?


a.行业整体情况—万亿市场、百万人才缺口

在国内,大数据严格讲从2011年开始兴起,2012年左右正式进入概念期,这个时期伴随着hadoop在互联网公司的广泛应用,开始步入快速发展期,目前已经进入成熟期,基本上C轮以上的it公司都有自己的hadoop集群,互联网类公司在这方面更是领先。大数据相关的技术应用也比较普及,hdfs、mapreduce、hive、spark、spark streaming、hbase、flume、kafka、storm、kylin等等。

因为大数据在基础设施上要求比较高,所以大学或者培训机构提供学习的机会比较少,最近2年部分大学开始提供类似的理论课程,但是大规模的分布式实战环境还是比较匮乏,从北京it培训机构的课程也可以发现,很少提供大数据实践的培训,行业整体人才稀缺,对于资深的大数据开发更是难求。当然随着近几年大数据的火热,很多传统java工程师纷纷转向大数据方向,这在面试时感触非常明显,由于大数据先天和java比较近,所以站在工程师职业规划的角度也是可以理解的。

目前大数据已经被写入我国十三五规划,伴随着互联网+的兴起,大数据与金融通信旅游医疗交通政府公共服务等各个领域交叉融合,万亿级市场一触即发,据第三方统计,目前大数据人才缺口在150万左右,未来3-5年需求总量将达200万左右。

b.薪资待遇情况

在工作年限相同的情况下,大数据工程师整体待遇相对其他传统岗位普遍要高,这和行业人才稀缺是密不可分的,而且随着工作年限和经验的积累的,待遇上涨的幅度也是超越其他岗位的。在大数据行业内,平台型人才一般比业务型人才待遇略高,大数据工程师的待遇要高于大数据分析师。如果学历还不错的情况下,普通工程师一般在这个行业工作3年待遇大概在20-30万左右(年薪),5年大概在30-50万左右。

c.未来发展情况

大数据已经进入成熟期,相关技术也在不断落地应用,随着IT到DT时代的转变,大数据技术及相关人才的需求只会越来越强,伴随着最近人工智能的崛起,大数据是AI的基础,随着各种智能应用的落地及普及,促使大数据的需求会更加旺盛。这里我觉得大数据和安卓之类的不太一样,安卓等移动开发说白了和传统其他的语言开发没有本质的区别,只不过是赶上了移动互联网的浪潮有了一个小高潮而已,学习和培训的机会非常多,门槛相对不高,正如前面所述,大数据人才基本靠企业实践培养,随着需求场景的逐步扩大,人才需求会越来越旺盛。


2. 结合58大数据团队情况,谈谈大数据工程师所需的核心技能


a.大数据团队构成及岗位职责简介

一般大数据可以分成三层,最底层的大数据基础平台,这块包括上述的很多开源组件的预研和落地,中层的大数据应用平台,主要解决如何应用底层技术帮助业务解决痛点,上层是面向不同场景的数据应用,比如用户画像等等。近两年,在国内基于中层的创业比较多,针对不同的数据使用场景有相应的通用解决方案,底层和上层的则相对较少。底层的人员主要的工作职责包括开源框架的预研、优化升级、本地化、部署,有实力的公司会在开源基础上针对自己业务的特点大改甚至是重构,在这个层工作的人员要求对常见的分布式开源框架原理非常熟悉,精通源代码。中层的人员主要职责则是降低底层大数据技术的使用门槛,帮助业务部门简单高效的使用先进技术解决业务问题,这里的人员不要求精读源代码,但必须熟练使用相关的系统,精通大数据组件的编程开发,因为需要面向业务,并且和数据打交道,所以需要对业务敏感,并且了解数据开发流程如etl、数据建模等等。上层主要关注如何利用数据驱动业务,常见的数据应用包括BI、用户画像、智能推荐等等。

b.58的大数据平台架构

这是58大数据平台的整体架构图,提供一站式的平台服务,中间是整个平台的核心部分,和上述大数据团队结构类似,总共分为三层,最底层的数据基础平台层,中间的数据应用平台层,上方的数据应用层,基础平台层包含业界主流的大数据框架和组件,支持数据的接入、存储、调度、计算等。应用平台提供各种面向用户和业务的数据开发和分析平台,针对数据流的各个场景提供通用的解决方案,包括但不限于任务调度平台、元数据管理平台、数据仓库平台、数据查询平台、数据可视化平台、多维分析平台等。数据应用提供面向不同业务场景的智能数据服务,如BI、用户行为分析、用户画像、智能推荐、精准广告、经营分析等。

c.58的大数据应用平台架构

大部分互联网公司可能都会有基础平台和数据应用这两层,只有业务和人员达到一定规模后才会有也才有必要有应用平台层,这一层极大的降低了大数据技术的使用门槛,让业务部门轻松高效的玩转大数据,在提高效率的同时也降低了企业的人力成本,58在2016年花了一年的时间将这块从无到有的建设起来,目前已经形成一站式大数据平台,并且非常完善和成熟,当前在58数据使用和分析的人员大都是非技术人员,比如分析师、产品、运营、市场人员,基本上可以说让人人都能成为数据分析师,这种改变让数据驱动业务渗透到公司的各个部门,甚至包括前端、安全、设计、运维团队。

下图是58的多层次完整的大数据应用平台运维架构图,其中建设集团统一的数据仓库平台是核心和基础,在此基础上建设了面向开发的58dp平台以及面向产品运营等非技术人员分析的云窗。


d.58大数据团队的岗位职责与核心技能

这是我在本次分享中特别想强调的,一般互联网公司大数据部门按照职责划分包括平台研发工程师(hadoop、Spark生态)、数据开发工程师、数据仓库工程师、数据分析师、算法工程师、java后台开发,58也是如此,根据我这几年的招聘经验,这里给大家具体介绍下这几类岗位的具体职责和核心技能要求,以便大家能结合自己的实际情况精准定位所属的角色,从而对自己进行靠谱的职业规划。

平台研发工程师(hadoop、Spark生态):包括hadoop生态圈的各种组件的预研、部署、优化升级等(有的公司把运维部署的智能放在运维部门或者在大数据部门增加大数据运维工程师,58就是后者),为业务部门提供稳定的基础服务保障,属于平台型开发范畴,需要精读各种开源框架的源码,并可以轻松修改升级,对于业务反馈的问题能够快速定位,这个岗位适合技术极客类的人,不太喜欢经常和业务打交道、不擅长理解多变的业务模式、沟通能力相对较差的人。技能要求:Java,Scala等。

数据开发工程师:灵活使用大数据相关的技术解决相关的业务问题,这类工程师需要精通大数据的多个组件原理,熟练运用其进行业务开发,在组件的理解上低于平台研发工程师,但需要经常和业务打交道,能快速理解业务需求,沟通能力较平台研发工程师强。技能要求:Java,Scala,Hive sql等。

数据仓库工程师:专注业务数据建模,对数据仓库相关知识要求较高,离线大数据技术灵活使用,对业务敏感,沟通能力强。技能要求:数据建模,Java,Hive sql,python。

数据分析师:基于数仓工程师开发好的数据进行贴近业务的有针对性的分析,为产品改进和业务决策提供支持,需要有一定的脚本语言基础,对数据仓库的使用比较熟悉,对业务理解透彻,对数据敏感,对常规维度指标的概念和计算逻辑非常熟悉,对日志系统和统计系统有一定了解更好。技能要求:统计学常识,Hive sql,python。

算法工程师:支持商业、推荐、搜索、用户画像等场景的算法开发,需要熟练掌握常用的机器学习算法,包括但不限于分类算法、聚类、回归算法、推荐算法等以及必备的大数据开发技术如hadoop和spark。技能要求:Java和python。

Java后台开发:主要支持各种系统的工程开发部分,比如推荐系统的工程开发,搜索系统的工程开发,数据产品的工程开发等,和传统Java后端开发差别不大,不过有些系统会接触到大数据技术的应用,最适合从传统Java方向转行的跳板。技能要求:Java

这其实也是大数据行业里主要的岗位介绍,其中包括一定的对比分析,希望大家务必重视,结合自己的特长、兴趣爱好、性格等选择适合自己岗位,不可盲目顺从别人的选择,很多人转行进入大数据行业,放弃了自己多年的职业经验,选择了一个完全陌生的岗位,这个是否能成功走下去我这里不好下结论,但若没有想清楚自己的角色定位,这条路绝对不会走的很顺,大概率会走很多弯路。


3. 大数据工程师在面试开始前,要做哪些准备?


a.个人角色定位

这个在上个章节介绍58大数据团队的岗位职责和核心技能时就详细分析了,并且重点强调它的重要性,希望大家务必重视。

b.个人职业规划

当我们深思熟虑确定自己目标岗位后,需要给自己制定一个2-3年的职业规划,包括自己业务和技术上的提升计划,综合能力提升的规划(比如沟通能力、协调能力、执行能力等)。这个规划不是制定好一成不变,而是在根据实际情况不断微调,以适应最新的情况,同时让自己的规划能够无缝衔接下去。

c.扎实的基本功

比如linux熟悉程度、mysql基本语法、数据结构、代码管理工具svn/git的使用、项目管理工具、开发流程等。

d.开发语言

要把最擅长或者平时使用最多的开发语言作为你的核心开发语言,一般不超过2个,真正做到精通,不能仅限于日常开发够用的层面,必须深入到原理。

e.公司及项目回顾与梳理

提前把之前所在的公司和核心项目梳理清楚,将与这次求职岗位相关的公司经历和项目重点回顾,业务的细节尤其要重视,一般梳理项目时可以参考如下步骤:项目背景,项目设计和架构,技术选型及对比,实现细节,项目效果。

f.简历准备

简历准备是个老生常谈的问题,就我面试的经验,有几点必须注意,简历内容最好不超过2页,掌握的技能不求全而求精,只写自己真正擅长的技能,否则不擅长的写上去如果让面试官问到只会减分,徒劳无功。业务与项目要能突出重点,把与这次求职岗位相关的项目重点描述,以便吸引面试官考核,这样提前准备的才能发挥作用。求职不同岗位应该有不同的简历,技能和项目侧重点灵活调整。


4. 说点干货: 我最喜欢考的面试题


就我了解,现在无论是校招还是社招在面试环节基本很少出趣味和行为题,笔试还是有的,但不是重点,我们需要关注的是面试中技术面、业务或项目面、综合能力面。

a.面试中需要注意的细节

一般公司第一面都是技术面,主要考察基本功和技术深度;第二面一般是业务或项目面,通过不同项目考核技术的广度以及实践能力;第三面一般是综合能力面,主要考核技术外的其他能力,比如执行能力、沟通能力、协调能力等,最后是hr面,主要考核求职意愿、稳定性、抗压能力等。

接下来就大数据团队核心的岗位介绍下面试的要点和常见考核点。

b.平台研发工程师(Hadoop、Spark生态)面试要点及常用考题

根据前面介绍,这个岗位核心考察对应组件的精通程度,一般要精读面试相关的组件的代码,并能针对各种应用中遇到的问题快速定位。Java是基础,linux基础知识也是需要的,然后就是精通某些组件。

因为涉及到组件比较多,这里就以Hadoop为例列举2个常见的考题:

1.集群规模变大,文件数增多,NameNode内存受限成为瓶颈,如何解决?(HDFS Federation)

2.在Hadoop生态中敏感数据的安全保护措施(服务器访问认证+权限管理)

推荐资料:

董西成的博客 http://dongxicheng.org/

Hadoop实战、Java核心技术

c.数据开发工程师面试要点及常用考题

熟练使用相关的组件,并能对各个组件在具体开发应用的不同环节进行调优,使得能充分发挥大数据技术带来的价值,不同组件语言要求有变化,但Java或Scala是常见的开发语言。

因为涉及到组件比较多,这里就以Hbase、MapReduce、Storm为例列举3个常见的考题:

1.Hbase使用时key如何设计,结合实际项目进行设计实战?

2.开发MapReduce和Storm程序时如何实现mapper和reducer,以及spout和bolt?

3.Storm集群的并发问题和容灾策略

d.数据仓库工程师面试要点及常用考题

除了相关大数据组件使用技能考核,还会重点考核数据建模及数据分层模型,etl流程,数据质量和数据安全等。因为大数据数仓一般都是基于Hive构建,所以大数据相关组件主要是MapReduce和Spark以及Hive sql。

列举3个常见考题:

1.Hive或者MR开发时数据倾斜怎么办?

2.数据建模的常用方法和模型?数仓建设的优点?解决哪些痛点?结合具体一个业务场景进行仓库规划和模型设计。

3.日志系统的etl环节具体每步都做了哪些事情?数据质量是如何保证的?

e.数据分析师面试要点及常用考题

主要考核SQL基础包括Hive sql,要求高点的可能会考核python脚本语言,同时会考察数据分析项目的流程(采集整理建模分析报告)、行业相关的常见指标定义和计算逻辑,以及对业务逻辑是否敏感。常见考题:

1.用户行为分析中常见的指标体系有哪些?分别是怎么定义的?

2.如何通过专项分析解决业务普遍遇到的分析问题?

f.算法工程师面试要点及常用考题

一般包括算法和理论基础,工程实现能力与编码水平,业务理解和思考深度。统计学、数学的基础知识(矩阵变换、特征值等),算法方面:各种常见机器学习算法的原理和区别,常用优化方法(梯度下降、牛顿法等),工程方面:各种算法中涉及到的数据结构和搜索方法。

1.naive bayes和logistic regression的区别

2.LDA的原理和推导

3.做广告点击率预测,用哪些数据什么算法


5. 大数据人的职业发展通道及进阶之路


a.我的个人发展经历

2012年4月毕业于华中科技大学,硕士从事计算机视觉和数据挖掘方向研究

2012年4月加入赶集数据组,2012年8月负责数据组统计方向,涉及日志系统和统计系统规划和建设

2013年9月组建赶集数据平台组,负责赶集网大数据平台开发及管理工作

2014年初推出大数据平台NightSight

2014年6月统一负责数据平台组和报表统计组

2015年10月58赶集合并,成立并管理数据产品研发部,负责集团统一数据仓库和一站式数据产品的规划与建设,兼顾赶集数据组的工作

2016年3月推动快速稳定完成58赶集在数据、job、hadoop集群、数据平台的融合

b.职业瓶颈

大数据行业涉及较多,分工也比较细,有很多因素可能成为我们职业发展中的瓶颈,比如公司集群的规模,公司的业务模式会直接影响在大数据上的投入程度以及侧重方向,以及职责划分过细约束后续发展的问题。

c.技术还是管理?

随着职业发展的渐入佳境,大家可能会遇到这样的烦恼,到底继续走技术路线还是转型做管理?这个问题我自己也遇到过。我目前在58已经从纯技术转型为技术型管理,这是我深思熟虑后的选择。

那么如何权衡呢?这和我们前面说到的岗位角色定位的思考是类似的,需要了解技术和管理角色的职责和区别,然后结合自己的特长、兴趣进行选择。如果你是个极客型工程师,狂热技术,建议你坚持技术路线,往架构师方向发展,如果你擅长团队方向和技术规划,擅长与人打交道,擅于发现业务问题,擅长协调推动业务落地和创新,愿意做工程师的幕后资源支撑,那么你可以选择转型技术管理岗。

d.30岁的职业规划

我今年30岁,毕业刚刚5年,相信今天有不少同龄的朋友,可能正处于迷茫期,站在这个十字路口,如何规划我们接下来的职业生涯?我其实面试中经常会遇到很多比我年龄大的朋友,很多朋友工作了七八年还在每天重复的给业务部门写hive sql,写差异不大的mr job等,问职业规划时没有太多的想法。坦白讲30岁到40岁是人生事业发展最黄金的阶段,我们需要确定自己在业务范围上的扩张计划,技术广度和深度上的提升计划,综合能力提升的规划(比如沟通能力、协调能力、执行能力等)。


以上整理自 100offer 在 7.26 日举办的知乎 Live「大数据工程师面试攻略」,分享嘉宾为 58 集团大数据团队技术经理 吴培培。


相关知乎 Live:

阿里大数据面试官和你聊聊「数据新能源」

大数据工程师技术面试攻略

大数据在金融领域有何应用?

大数据工程师如何实现技术成长?

更多 100offer 举办的知乎 Live,请访问 100offer 活动中心

0a361d86be5f45798efb31ca8b2624d41481706060 80x80
王川川
100offer 行业观察者。每天,我都会透过 100offer 上人才流动数据了解互联网人才趋势,通过研究最热门的领域、最优秀的人才,建立对行业的深度理解。
评论
0条评论