您的位置:首页 > 职场人生

如何准备机器学习工程师的面试 ?

2015-07-27 21:14 651 查看


如何准备机器学习工程师的面试 ?

我之前面试一些公司的机器学习或者数据挖掘工程师的职位。感觉自己准备的不够充分。想了解下一般会问哪些问题,考察哪些方面的东西。

4
条评论 分享

按投票排序按时间排序


18 个回答

赞同355
反对,不会显示你的姓名




周开拓,推荐系统PM@淘宝

jiang wilbur、知乎用户、章琦 等人赞同

机器学习方面的面试主要分成三个部分: 1. 算法和理论基础 2. 工程实现能力与编码水平 3. 业务理解和思考深度

1. 理论方面,我推荐最经典的一本书《统计学习方法》,这书可能不是最全的,但是讲得最精髓,薄薄一本,适合面试前突击准备。 我认为一些要点是: 统计学习的核心步骤:模型、策略、算法,你应当对logistic、SVM、决策树、KNN及各种聚类方法有深刻的理解。能够随手写出这些算法的核心递归步的伪代码以及他们优化的函数表达式和对偶问题形式。 非统计学习我不太懂,做过复杂网络,但是这个比较深,面试可能很难考到。 数学知识方面,你应当深刻理解矩阵的各种变换,尤其是特征值相关的知识。 算法方面:你应当深刻理解常用的优化方法:梯度下降、牛顿法、各种随机搜索算法(基因、蚁群等等),深刻理解的意思是你要知道梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部等等。

2. 工程实现能力与编码水平 机器学习从工程实现一般来讲都是某种数据结构上的搜索问题。 你应当深刻理解在1中列出的各种算法对应应该采用的数据结构和对应的搜索方法。比如KNN对应的KD树、如何给图结构设计数据结构?如何将算法map-red化等等。 一般来说要么你会写C,而且会用MPI,要么你懂Hadoop,工程上基本都是在这两个平台实现。实在不济你也学个python吧。

3. 非常令人失望地告诉你尽管机器学习主要会考察1和2 但是实际工作中,算法的先进性对真正业务结果的影响,大概不到30%。当然算法必须要足够快,离线算法最好能在4小时内完成,实时算法我没搞过,要求大概更高。 机器学习大多数场景是搜索、广告、垃圾过滤、安全、推荐系统等等。对业务有深刻的理解对你做出来的系统的结果影响超过70%。这里你没做过实际的项目,是完全不可能有任何体会的,我做过一个推荐系统,没有什么算法上的高大上的改进,主要是业务逻辑的创新,直接就提高了很明显的一个CTR(具体数目不太方便透露,总之很明显就是了)。如果你做过实际的项目,一定要主动说出来,主动让面试官知道,这才是最大最大的加分项目。
最后举个例子,阿里内部机器学习挑战赛,无数碾压答主10000倍的大神参赛。最后冠军没有用任何高大上的算法而是基于对数据和业务的深刻理解和极其细致的特征调优利用非常基本的一个算法夺冠。所以啥都不如真正的实操撸几个生产项目啊。

编辑于 2014-07-25 36
条评论



赞同145
反对,不会显示你的姓名




刘志权,程序员

徐洋、知乎用户、知乎用户 等人赞同

我面试过5-6家互联网公司的数据挖掘和分析、机器学习相关职位的工程师。被问到下面一些问题。

SVM的原理,SVM里面的核

K-means,如何用hadoop实现k-means

naive bayes和logistic regression的区别

LDA的原理和推导

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

推荐系统的算法中最近邻和矩阵分解各自适用场景

用户流失率预测怎么做(游戏公司的数据挖掘都喜欢问这个)

一个游戏的设计过程中该收集什么数据

如何从登陆日志中挖掘尽可能多的信息

这些问题我回答的情况,分几种。一种是在面试官的提示下,算是勉强完成了答案。一种是在面试官的提示下,答了一点但是答得不够好。一种是面试官不提示也没有反馈,我回答了但是我不知道回答得怎样。

我非常后悔的一点是我现在才想起来总结。有一个题是游戏玩家流失率预测,我被问过两次。但是每次我都说是个分类问题。最近我突然想起来去网上查了下,有两个点,数据不平衡问题和时间序列分析。我网上查到是一个大学教授和人人游戏合作的课题。我然后查了下这个老师的publication。没发现相关的论文。可能公司不让发表吧。

这些问题的特点是很基础很简单,因为实际中很少用复杂的算法,复杂的算法不好控制,而且理论要求高。另一个特点是注重考查实际工程能力,我经常被问到自己实现了哪些算法。还有的问题很契合实际。

我觉得如果现在再给我准备的机会。我会准备下面几点。

首先是计算机基础知识和算法,这些都是会正常考察的。有些公司考的少,有些公司正常考察。

针对机器学习这部分,需要理论扎实,还需要自己动手实现代码。另外hadoop,mpi,最近比较火的spark,应该都是加分项。另一个是接触下实际的数据分析系统。我在学校里面看的论文,都是讲算法的多,讲应用系统的少。这个可以靠之前的实习,也可以看些比较实用的论文。

PS 我是题主,自问自答下。

PS2 我面试的都是国内互联网公司和游戏公司。

编辑于 2014-07-26 33
条评论



赞同38
反对,不会显示你的姓名




王养浩,我不懂数据挖掘

jiang wilbur王齐轩、chunhui
jia 等人赞同

抛砖引玉,在读硕士,半个月前去面了某公司机器学习intern铩羽而归了。机器学习部分一个面试官问了我一个小时,我估计如果真正能上的人光机器学习部分应该还会多来几轮。

首先介绍自己的研究经历。会随机问一些细节。

我面的推荐,问了各类协同过滤的好与坏。

然后我说我做过LDA,问我,Dirichlet Distribution的定义和性质,并问我,为什么它和multinomial distribution是共轭的,顺便问了我啥叫共轭分布。

问了一个很有意思的问题,现实应用中的Top-N推荐问题和学术研究中的评分预测问题之间有什么不同。

问我ItemCF的工程实现,面对大数据如何实现,又追问了有没有什么工程优化算法。这个问题我没答好,一开始我说了一个MapReduce模型,他问能不能更快一点,我就卡那了。。。最后面试官告诉我,不能只从算法角度分析,要从系统设计分析,利用内存来减小MapReduce的吞吐量。(当然也许从MapReduce那一刻开始我就输了也不一定)

最后考了我一个基本概念,什么叫判别模型什么叫生成模型。

回忆以前有一个去百度做广告业务的师兄分享的面试经历,记得没问什么高深算法,马尔科夫系列?

现在工业界的机器学习业务也不会太多,公司不是学术界在学术研究灌水上有多少追求,算法可实现,能可扩展高效分布式运行才是重点。

所以个人认为,机器学习工程师的核心还是在于工程师的能力,实际应用的问题分析能力和算法的实现能力很重要。机器学习的算法并不是重点。

PS1,各种研究院(微软雅虎IBM之类)的正式员工另当别论。

PS2,我只面过一个公司,和打听过一些情况,和听过一些算法工程师的技术分享去推断它们的工作状态和需求,一面之词,抛砖引玉。

PS3,国内

PS4,题主也请分享面试经历。

编辑于 2014-04-09 12
条评论



赞同52
反对,不会显示你的姓名




ff
Ale,gl & hf. :D

知乎用户、王齐轩、知乎用户 等人赞同

关于考察方面,上面已经讲得很详细了,直接给你贴几个面试数据挖掘实习生经验贴,都是15年崭新的血与泪啊。(网站是100块钱的国外虚拟空间,没有进行什么优化处理,所以网页打开会非常慢,请见谅。)

百度数据挖掘实习工程师一、二现场面试(深圳)

阿里巴巴电话面试2面总结(数据挖掘,天猫事业部)

百度NLP电话面试总结

如何准备面试呢?个人经验:

1. 代码算法:基本算法(如快排等,需要熟练掌握) + 剑指Offer(面试经常出相似的题) + LeetCode(剑指Offer的补充,增强动手能力)

2. 机器学习:李航《统计学习方法》(读3遍都不为过啊!) + Coursera Stanford《Machine Learning》(讲得很基础,但是没有告诉你所以然) + Coursera 台湾大学《机器学习高级技法》(里面详解了SVM,Ensemble等模型的推导,优劣)

3. 请详细地回忆自己做过的项目,项目用了什么算法,为什么用它,有什么优缺点等。如果没项目经验可以参加天猫大数据比赛和Kaggle比赛。

4. 教你如何迅速秒杀掉:99%的海量数据处理面试题。(基本每次都有一道海量数据处理的面试题)

PS:终于拿到某互联网公司的数据挖掘实习工程师的Offer啦,好开心啊~~~

编辑于 2015-05-22 14
条评论



赞同15
反对,不会显示你的姓名




xiao
ma,机器学习、推荐算法@淘宝

罗辉张琦秦庚 等人赞同

数据结构算法水题+常用机器学习算法推导+模型调优细节+业务认识

发布于 2014-08-05 添加评论



赞同58
反对,不会显示你的姓名




Naiyan
Wang,CS PhD, 机器学习与计算机视觉

浩宇啸天、Zhang
Wang、apple love 等人赞同

看了一下各位回答,我要去面试妥妥跪了。。。借用一下@Filestorm当年的一句话,原话记不得,大概意思是熟练工一天做完的,我们可能需要三天。但是我们一年做完的,熟练工永远做不完。以上各位答主都是在招熟练工吧。。。

发布于 2015-05-18 53
条评论



赞同12
反对,不会显示你的姓名




清风,Roboconer/多看paper多写代码

李邈卞紫阳周颖 等人赞同

你是应聘的吧 ?来来来,先给推导一遍 logistic regression, SVM, neural network, naive bayes ,adaboost, pca, k-means, mean shift, EM, HMM

还有时间,那就用你喜欢的语言挨个实现一遍,不过只允许用basic function

================================

好多大牛都觉得太简单了,都是Richard 跟 Bishop书上的基本内容。我觉得面试还是看基础吧,有时候写了很多代码,如果都是调用别人的库,调调参数,也没多大意思。

编辑于 2015-05-19 18
条评论



赞同9
反对,不会显示你的姓名




知乎用户,机器学习爱好者,《机器学习:实用案例解…

知乎用户、纪千代、Jesse
Wang 等人赞同

常用模型和算法,至少有那么一两个能推导,能说出适用范围,能自己实现,有过应用。

另外,要有算法工程师的气质,那种对任何事物都愿意且能够深入思考的倾向。

据说,如果是应聘大公司初级工程师的话,刷题貌似有那么一丢丢用处,仅仅是一丢丢。

发布于 2014-04-06 添加评论



赞同44
反对,不会显示你的姓名




Oyster
Kwok,逻辑地说,这句话没逻辑。

丁维悦、知乎用户、庄学坤 等人赞同

多扶老奶奶过马路多攒人品。

先总结几点,再谈个人经历。

1. 基本的Model要懂

Kmeans必须懂 KNN懂原理不用写 SVM、MR和Pagerank多看看,遇到问题多用这些方法讨论(不关乎信仰,面试官都懂)

2. 高层次的Model是关乎信仰的,不需要浪费时间在上面

比如LDA。以前信贝爷,觉得高大上。做过才知道坑有多深,出paper搞点黑数据可以,真正业界要用效果甚不稳定。HMM可以做语句分析优化,别的地方用也不显著。绝大多数时候搞个word net,做个tf idf就足够了,不行自己再加些hardcode,效果也比所谓的model好,性能也高。

另一说就是面试官不期望你懂这么高级的模型,就跟他们不能因为你不会拉小提琴而觉得你智商不够把你拒掉一样。

3. 人品、自信、反客为主的面试思路

以我的个人经历(Observation)(详见文末),不懂但人品好就拿到了Offer,懂但人品不好就拿不到Offer。(请随意Predict)

个人比较成功的面筋是看好面试官的cd间隔放大招:比如看简历沉没的时候主动说high light一下,有条件就把线上的project拿出来秀;代码写完主动说说能有什么改进思路,把面试官拐跑,就不会被他带到挖好的坑上来了。

4. 数据敏感性

比如预估数据规模和运行时间。

经历过以下几种case,不知是否match。

1. 10年,北京,刚毕业。申请国外phd跪了。魂友指明路去T大某ML实验室历练。提前两周看了下,感觉最懂的也只有贝叶斯公式了(其余只知道个缩写看着眼熟)约了时间也只能硬着头皮去了。

结果老板就看了看简历,只问我啥时候可以过去。=_=

2. 一年半后,在美读硕。经济压力山大,暑假前就开始找实习(真心困难,因为当时招ML或者Data Scientist的都只招Fulltime或者经老板介绍的PhD)简历投了也没人鸟,感觉还是懂iOS Android的吃香。好不容易遇到个start-up,面试时候我主动展示之前做的项目,挺满意,让我写个Page Rank,30分钟拍好Over。(允许看wiki看公式)老板不懂/不信LDA,反正SVM各种搞。

3. 有同学拿到EBay电面,抓我去帮忙递纸条,问的概率论基础,线性回归,码字符串处理,都是基本功。

4. 后来面了次Yelp,电面第二轮,代码拍太快了,导致他有时间问了第二个Follow up question,投票统计相关,我提了两种normalize方案,都不太完善,后来就不要我了。

5. FB一直没理我,估计是之前在Graph上面抓数据超了两次limit被封过ID(他们自己文档不写清楚)Google问的都是基本码农问题,跟ML关系不大。因为面的Test,码完让我自己出数据,我出多了,被鄙视,锯。

6. 去面Bing。Super Day面了6个人,前面问算法,后面吃着混沌面问的Query分析。最后没给Offer,因为收了N记2万5员工用完招人名额。(据说还给EVP打了报告,没批。算了)

最后忠告:

攒人品。

信自己的数学和逻辑直觉,不要信Model。

信不信贝爷和得不得永生是相对独立事件。

所以“信贝爷得永生”在贝爷的公理范围内至少是悖论。显示全部

发布于 2014-07-25 13
条评论



赞同5
反对,不会显示你的姓名




haidao,coder/机器学习

知乎用户、Zhu
Harry、刘叶 等人赞同

面试过百度和阿里数据挖掘

算法有svm em算法 都要推导证明

因为我做过文本主题 所以问了很多lda的知识

其它的就比较扯了

发布于 2014-04-27 7
条评论



赞同0
反对,不会显示你的姓名




JueFan,大数据;数据挖掘;推荐系统;精准广告推…

看完这么多回答,我还是乖乖的做业务得了,理论基础不硬朗,什么推导公式之类的我肯定挂了,代码能力又不行,只能写写简单的knn之类的,而且没有任何速度上的优化的,哎,要跪了……

发布于 2014-12-07 2
条评论



赞同8
反对,不会显示你的姓名




Nemo,一流围观,二流数据分析师,三流程序员

王买买提赵云、知乎用户 等人赞同

面试机器学习相关岗位的工程师的一个好处是“不需要写代码,貌似大家都是用现成的包,谁也没写过……

发布于 2014-07-25 3
条评论



赞同4
反对,不会显示你的姓名




王建周,码农/摄影

知乎用户、知乎用户、宋洋 等人赞同

一、一些常见的机器学习算法

1. 如果有背景,item和cf协同过滤的优缺点,如何从计算公式证明,各种情况的惩罚,hadoop上mr的实现,包括各种情况的惩罚。

2. 线性回归的梯度下降和牛顿法求解公式的推导

3. 贝叶斯分类器的优化和特殊情况的处理

决策树的的训练……

二、单机的算法如数据结构

1.最简单的top n

2 偶尔会有一些简单的poj

3.数据结构

三、系统设计,包括算法和工程系统

1. 如一个热门微博排行榜等

.

发布于 2014-05-26 1
条评论



赞同5
反对,不会显示你的姓名




知乎用户,上个网卡成狗就算了,还被墙!

July、Zhu
Harry、杨楷 等人赞同

http://www.julyedu.com/

推荐一下July大神~

编辑于 2015-01-30 添加评论



赞同1
反对,不会显示你的姓名


匿名用户

丁维悦 赞同

1. 实现一个分布式的矩阵向量乘的算法。。。

好吧 这个我学过 blabla讲了一堆 也不知道对不对

2. 最速下降法和共轭梯度法 wolfe条件 最速下降法和共轭梯度法的收敛速度如何判断。。。

两种方法的概念答上来了 wolfe条件没准备到 收敛速度大概回答了一下 我印象中只记得共轭梯度的误差估计了

3. 约束优化的KKT条件 KKT条件在边界区域的搜索行为的物理意义是什么。。。

KKT条件ok 物理意义没答上来

4. 实现一个分布式的topN算法。。。

topN看过 不过分布式嘛。。。 就是追着你问 问到你不会为止

5. 为什么可以使用logistic回归。。。

这个我不懂。。。 好吧 hr让我去看看《离散选择方法》这本书。。。 算是学到了

6. 你了解的机器学习算法有哪些。。。

这个简单。。。

7 选一个你熟悉的算法 详细推导公式过程。。。

推公式我在行 不过hr貌似不感冒

8 一个实际应用的问题 因为没有背景 所以只好放弃

然后就没有然后了

还是好好看书吧

发布于 2014-09-12 5
条评论



赞同1
反对,不会显示你的姓名




盐一层,计算广告与数据挖掘方向

周标 赞同

看了这里的回答,我很想哭

发布于 2015-05-17 2
条评论



赞同0
反对,不会显示你的姓名


匿名用户

去面了下深圳的大公司,连续两个面试官问我朴素贝叶斯的推倒,忘记了,还有kmeans的,还有一些基本代码,没有一个写的自己满意的,估计给挂了

发布于 2015-04-03 1
条评论



赞同0
反对,不会显示你的姓名




曹荣禹,persist......forever

1 决策树的模型很重要,不会问你ID3这些简单的,甚至CART都不会,不过会问GBDT,随机森林。

2 SVM不可能不问。

3 理解得很深才能给面试官讲明白。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: