高赞回答一
作者:wei chris
链接:https://www.zhihu.com/question/62482926/answer/210794177
问一些面试官和面试者都熟悉的问题,把握一下面试者的深度;
问一些面试官熟悉,而面试者不熟悉的问题,考察一下应变和理解力;
问一个面试官不熟悉,而面试者熟悉的问题,考查一下表达;
问个过往项目,有什么地方可以优化。考查一下迭代意识;
给一个公司现有项目问题,看看解决实际问题能力。
机器学习技术日新月异,面试者的技能储备和公司需要严丝合缝的匹配,其实很难。核心能力不错的话,其实已经可以了!高赞回答二
作者:王喆
链接:https://www.zhihu.com/question/62482926/answer/529823808
自己拿过Hulu,阿里,腾讯,美团的算法工程师offer,也作为面试官面试过100+候选人,简单谈一下机器学习工程师的面试,说白了就一句话:
把你做过的机器学习项目的细节讲清楚,有自己的理解,对经典的以及前沿的机器学习知识有所了解。
之前有的答主罗列了几乎所有知识点,面试者能够逐一准备当然是好的,但我不相信有任何人能够对所有问题有深入的理解。也正因为这一点,面试官一般不会大面积的深入考察所有知识点,面试时间也不允许,但资深一点的面试官只要从简历出发问你一个项目,这三方面的能力也就都考察到了。毕竟魔鬼躲在细节里嘛。我记得我的一位面试同学介绍自己实习时候用过XGBoost预测股票涨跌,那面试官会由浅入深依次考察:- 决策树节点分裂时如何选择特征,写出Gini index和Information Gain的公式并举例说明(理论基础)
- 与Random Forest作比较,并以此介绍什么是模型的Bias和Variance(理论基础)
- 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级以上)、实现并部署模型到生产环境。所以我下面描述的面试内容并不仅限于机器学习。- 问一道涉及机器学习简单数学推导的题,一般是概率或者优化之类,然后要求写代码实现。
- 给一个实际的应用场景,要求面试者设计基于机器学习解决方案:从用什么模型,用什么特征到怎么部署到生产环境,什么都可以问。一般题目都是简化自我们工作中实际遇到过的问题。
-
问一道一般的算法题,不至于太难,一般用来测试面试者对常用的数据结构是否熟悉,工程能力是否扎实,写代码时思维沟通是否清晰,还有代码风格之类。
- 问一道涉及MapReduce的题,当然不会是最简单的那种word count,一般也是需要一定思考的。
- 问一些关于机器学习系统的题,比如分布式算法,比如在线学习的系统如何设计等等。
总结
其实还有很多不错的回答,大体上与以上三个回答类似,我就不一一列举了。祝大家面试顺利!校对:林亦霖