面试官如何判断面试者的机器学习水平?
作者:wei chris
链接:https://www.zhihu.com/question/62482926/answer/210794177
几个必问的问题,
1问一些面试官和面试者都熟悉的问题,把握一下面试者的深度
2问一些面试官熟悉,而面试者不熟悉的问题,考察一下应变和理解力
3 问一个面试官不熟悉,而面试者熟悉的问题,考查一下表达
4 问个过往项目,有什么地方可以优化。考查一下迭代意识
5 给一个公司现有项目问题,看看解决实际问题能力
机器学习技术日新月异,面试者的技能储备和公司需要严丝合缝的匹配,其实很难。核心能力不错的话,其实已经可以了!
作者:王喆
链接:https://www.zhihu.com/question/62482926/answer/529823808
自己拿过Hulu,阿里,腾讯,美团的算法工程师offer,也作为面试官面试过100+候选人,简单谈一下机器学习工程师的面试,说白了就一句话,
机器学习面试要考察三方面的内容,1、理论基础,2、工程能力,3、业务理解。
之前有的答主罗列了几乎所有知识点,面试者能够逐一准备当然是好的,但我不相信有任何人能够对所有问题有深入的理解。也正因为这一点,面试官一般不会大面积的深入考察所有知识点,面试时间也不允许,但资深一点的面试官只要从简历出发问你一个项目,这三方面的能力也就都考察到了。毕竟魔鬼躲在细节里嘛。
我记得我的一位面试同学介绍自己实习时候用过XGBoost预测股票涨跌,那面试官会由浅入深依次考察:
GBDT的原理 (理论基础)
决策树节点分裂时如何选择特征,写出Gini index和Information Gain的公式并举例说明(理论基础)
分类树和回归树的区别是什么?(理论基础)
与Random Forest作比较,并以此介绍什么是模型的Bias和Variance(理论基础)
XGBoost的参数调优有哪些经验(工程能力)
XGBoost的正则化是如何实现的(工程能力)
XGBoost的并行化部分是如何实现的(工程能力)
为什么预测股票涨跌一般都会出现严重的过拟合现象(业务理解)
如果选用一种其他的模型替代XGBoost,你会选用什么?(业务理解和知识面)
除了上面的问题,我会再检查一下面试者对NN,RNN,个别聚类算法,模型评估等知识的理解程度以及对GAN,LSTM,online learning是否有基本理解,这是考察面试者对经典以及前沿的机器学习知识的了解程度。再稍微检查一下面试者对工具的了解程度,写一段简单的spark或者map reduce的程序,如果无误的话,那么可以说这位面试者的机器学习部分是完全合格的。
当然,如果你介绍的项目是用CNN实现的,这条考察线路当然是不一样的,大概会是
LR推导->梯度消失->激活函数->TensorFlow调参经验这条路,大家体会意思就好。除此之外,还有其他工程方向的面试官会着重考察coding和一些算法题目,那是另外一个话题了。
根据我去年的面试经验,即使清华北大的同学也往往无法回答完整这些提问。一项答不出来的话无伤大雅,但两项答不出来我基本会给fail或maybe。
所以真的希望大家严肃对待写在简历上的东西,面试官会刨根问题的问到骨子里。但就我个人而言我不会深究面试者简历之外的东西,比如故意问一问GAN的细节让你一定要答出来,我认为这样毫无意义,有故意刁难之嫌。
最后再谈一谈对算法工程师面试更深一点的理解,其实面试的根本目的是找一个你愿意在一起工作的靠谱的工程师。
那么对于公司来说,什么人靠谱呢?有不错的知识储备,有钻研问题的能力。所以面试官不仅会考察你知识的广度,还会考察你项目的深度。只有深度没有广度,你学习新问题花的时间可能会过长,这不符合公司的利益,只有广度没有深度,你可能不具备攻坚克难的素质和潜力,这也不是一个合格工程师的标准。另外我们招的是工程师,不是科学家,不要求你是理论全才,不用样样精通,但因为招的是工程师,你得懂得解决业务问题,你要熟练的使用工具。
那什么人你愿意一起工作呢?对于工程师来说,当然是能一起讨论问题,一起碰撞出新的idea的人,所以面试的时候很多面试官会问你一些开放的问题,就像上面说的“如果选用一种其他的模型替代XGBoost,你会选用什么?”。面试官其实不期待你给出什么高大上的答案,他们希望的是你去说出你的想法,你去跟面试官讨论迭代,一起解决这个问题。其实这一点是很多面试者缺少的。也许有的时候是由于紧张或者不自信,你不愿意说出自己初级的想法,这样的考虑是多余的,没有任何解决方案一开始是完美的,大胆说出你的想法,讲的条理清晰,也许面试官会帮你完善你的方案,这就是一个你愿意共事的人的标准。
作者:匿名用户
链接:https://www.zhihu.com/question/62482926/answer/221091254
湾区某司员工,我们组在招 ML Engineer/Data Scientist,所以近几周面了不少人,有电面有onsite,讲一下个人经验。
首先我很佩服高票回答能在面试中问那么细的,就我的经验而言,电面或onsite一场无非一个小时左右,对于单个面试官来说,能对面试者机器学习方面的基础知识和数理、编程基础有些了解就很不错了。由于面试流程所限,在我司根本不可能有让人花大半个小时闷头实现个神经网络。
因为我们组偏重应用,做机器学习的目的都是为了解决实际问题,所以招人时对机器学习知识和工程能力都有要求。基本上每个人都要有能力做到:建模、跑实验、作分析、清理大量数据(TB级以上)、实现并部署模型到生产环境。所以我下面描述的面试内容并不仅限于机器学习。
一般来说面试流程是这样的:
基本有两类面试情形:
情形A: 偏重机器学习基础、数理知识,及利用机器学习解决问题的能力
单场面试:
问一下做过的项目,挑一个最有意思的详细问
问一道涉及机器学习简单数学推导的题,一般是概率或者优化之类,然后要求写代码实现
给一个实际的应用场景,要求面试者设计基于机器学习解决方案:从用什么模型,用什么特征到怎么部署到生产环境,什么都可以问。一般题目都是简化自我们工作中实际遇到过的问题。
情形B: 偏重算法数据结构、大数据处理、机器学习系统实现等
单场面试:
问一道一般的算法题,不至于太难,一般用来测试面试者对常用的数据结构是否熟悉,工程能力是否扎实,写代码时思维沟通是否清晰,还有代码风格之类
问一道涉及MapReduce的题,当然不会是最简单的那种word count,一般也是需要一定思考的。
问一些关于机器学习系统的题,比如分布式算法,比如在线学习的系统如何设计等等。
其实还有很多不错的回答,大体上与以上三个回答类似,我就不一一列举了。祝大家面试顺利!