机器学习工程师是现在的热门职位,因为其极高的薪资成为很多技术人的晋升目标。本文总结了部分一线互联网公司机器学习工程师的面试题及面试指南,希望对各位技术人员的进阶之路有所帮助。
阿里巴巴
根据参加过阿里巴巴机器学习算法工程师面试的技术人员反馈,总共需要经过四轮面试,前两轮为技术考察,第三轮是交叉面试,最后一轮是人力面试。每轮面试大概持续时间为40到50分钟,面试内容由项目经验询问和基础机器学习算法询问两部分组成。
基础机器学习算法主要包括LR和SVM有什么区别,libsvm和liblinear有什么区别,常用的统计量的含义,稀疏特征如独热编码,维度很大,输入神经网络怎么降维,FFM算法的原理,谈谈你对特征工程的认识,LR优化方法之间的区别,逻辑回归的概念,EM,K-means等问题。面试官会给出一些场景,询问求职者如何处理数据,如何建模。
可能会碰到算法题和智力题,但数量不会很多。根据反馈,算法题可能会与数组相关,比如存在一个数组,大小为98,里面的元素均为[1,100]区间内,且无重复, 不申请额外空间的情况下,在时间复杂度为O(N)情况下,找出确定的两个元素值。
华为
基础知识部分可能会让技术人员介绍几个简单的机器学习模型的主要思想,比如贝叶斯、SVM等。除此之外,都是一些概念问题:决策树和adaboost的区别;介绍你曾经做过的项目(CNN),各层次的作用;卷积层为什么能抽取特征;Pooling层的作用;激活函数的作用、种类和特点。
接下来根据求职者的项目经验询问,比如如果求职者曾经的某个项目中用到了A框架,面试官可能就会询问你为什么选择A框架,与B框架、C框架有什么区别?华为内部的机器学习使用到了caffe框架,求职者在面试之前可以适当了解一些caffe框架方面的知识。
百度
百度对技术的要求比较高,因此百度的面试轮次和面试时间都比较长,技术不过硬的可能得做好被虐的心理准备了,各种基础概念问到你怀疑人生。百度对数据挖掘的使用程度更深,所以深度学习方面的问题可能不多。
基础问题涉及网络基础和数据挖掘两部分。网络基础部分各种概念都可能被问到,比如网络TCP三次握手,Linux进程、线程、线程间通信、数据库transaction等等,数据挖掘部分各种算法和各种场景下的解决办法。这仅仅是第一面可能会被问到的问题,每一面的面试时间大概在1个半小时到2个小时左右,其中三分之一的时间可能会被留给手写代码,几乎每一轮都会有手写代码的考题。
第二、三面涉及的基础概念更为详细,但跟贴近你的项目经验,面试官留给你的思考时间不是太久,所以一定要事先梳理整个项目用到的技术和知识点。对于K-means、二叉树插入方法等算法都可能需要现场写代码,有可能手写,也可能给你一个无法切出去的共享编辑器页面。此外,百度会根据现有的业务优化和处理中的问题进行询问,比如垃圾邮件过滤问题。最后,百度还会给出若干智力题,人力最终考察求职者的综合素质以及未来的职业规划等。准备百度面试的考试难度基本相当于渣本升985硕的难度。
腾讯
经历过百度的捶打,再看腾讯的面试过程就会感觉轻松很多。如果是校招,更多的问题会根据发表过的论文以及参加过的竞赛获奖情况为基础考察,如果论文层次水平较高,并且可以清楚表达出论文的整体结构、简要内容和创新点,整个面试过程中基础概念的考察会被缩减。
如果你的项目经验非常丰富,那么完整的面试过程会涉及基础概念的考察,项目经验的询问,基本算法的考察。基础概念都是机器学习常见的概念对比,名词解释,整个过程相对来说比较轻松。
京东
京东的面试基本分为两轮技术面试和一轮人力面试。搞机器学习有几点需要主要,比如如何处理过拟合的现象(项目中使用到的会被问到,一般不会超纲),如何判别哪些特征比较重要,不要纠结自己编程语言的掌握情况,可以阅读一下《统计学习方法》。
面试官首先会要求求职者自我介绍并讲解相关项目经验,面试官会根据求职者的介绍询问一些细节,会被要求手写一些简单的公式或算法,比如有技术人被要求写决策树中信息增益的公式,顺便解释信息增益代表什么意思,包括在哪些情况下信息增益中的H最大等问题。如果你参加过一些机器学习方面的竞赛并取得过不错的成绩也要提一下,会增加面试官的好感。(如果是在校期间参加的小型比赛就没必要说了,自己判断比赛的含金量)
第二轮会围绕几个大问题展开,比如一个推荐算法的设计、调优过程涵盖的协同过滤、喜好权重、LR、特征提取等概念;随机森林整个相关的基础内容,比如决策树,随机森林是过拟合还是欠拟合等。最后,如果面试官的感觉不错,会和你聊一下京东的机器学习业务,比如用户行为分析、推荐算法、仓储预测等等。
最后是人力面试,也就是聊聊基本待遇。京东最人性化的地方在于,如果面试官认为你的能力过关,求职者可以根据自己的兴趣选择想去的业务部门。面试部门如果不合适,人力也会协调调整到其他部门,这一点特别人性化,可以内部调剂。
美团
如果水平一般,美团的面试会把你虐的很惨。美团的面试官一看就是擅长实战,自我介绍之后直接进入编程算法阶段。
接下来询问求职者最熟悉的机器学习算法,如果你回答了SVM,面试官会让你推公式、回答如何分类非线性问题、知道XX核函数吗.....总之就是根据求职者的回答层层追问,步步紧逼。其他面试题如下:
其他被提到的概念还包括协同过滤、KNN模型、负载均衡算法.....每一个都不是简单的说说自我理解和概念就可以过的,面试官每一次发问都会往下深挖一层。即便你的基础过硬,状态不行估计也会招架不住。
滴滴
首先,滴滴有自己的算法大赛,条件允许,不妨参加一下,如果成绩不错很可能直接被滴滴看重。(滴滴算法大赛解决方案,来源网络,侵权可删:https://www.cnblogs.com/TextEditor/p/5546397.html)面试过程中切记自己说得明白的,理解的概念可以适当展开说明,自己不是很明白的就不要提了,以免被追问。
其他面试题如下,感谢作者“一棵赛艇”的分享:
今日头条
今日头条的面试过程时间上不会占用太久,面试官主要考察求职者的实战经验。不要在面试前临时刷面试题,等到面试的时候,你就会发现没啥用。今日头条的面试官会问关于开源框架或工具的很多细节问题,同时求职者还要理解这些框架所涉及的具体算法和代码实现。最好的回答是理论知识加上个人实践体会。
结语
其他互联网公司,比如58同城、知乎、网易、小米等基本流程差不多。总体来看,这些面试中被考察的基础概念相差无几,面试官通常都很喜欢步步追问,你说出答案的时候就应该有心理准备。相比之下,百度、美团和滴滴的面试过程会比较烧脑,其他几家的难度基本差不多,京东的面试最人性化,会根据求职者的兴趣内部微调岗位。