Py学习  »  机器学习算法

面试官如何判断面试者的机器学习水平?

夕小瑶的卖萌屋 • 3 年前 • 401 次点击  

文 | 陈然@知乎
本文已获作者授权,禁止二次转载

记得这大概是个三年前的问题,每年都会有新的答案让我持续学习。三年多前我作为最早的机器学习工程师之一加入 Tubi,从零开始设计招聘题目和流程,搭建团队,陆陆续续也面试了大好几百次了。这里的答案大多聊的是常见的机器学习面试题目,我提供一个不一样的角度,从业务负责人的角度聊聊如何根据业务需要设计题目,大家也可以反向思考,查缺补漏。

招1个人 != 招10个人

很多同学的角度都是从面试官的角度来出发的,想着就是招一个人,面几场试。但当你从团队负责人的角度出发,要填满大量的业务需求,来设计面试流程和题目的时候,思考角度就会完全不同。这中间有大量的取舍,甚至一些决策很不优雅,但这都是为了规模化和自动化不得不做的放弃。

面试题目需要淘汰人,越早越好

招聘是个非常贵的流程,我们举一个湾区常见两轮技术面+现场面试的转化率简单计算,录取一个人要让接近20个人进入面试流程。

stepsconversion rate
hiring manager call80%
tech screen 160%
tech screen 260%
onsite40%
offer40%


conversion4.6%

面试官的时间是很贵的,我们更愿意保护面试官的时间,减少面试,也不愿意让更多可能不合适的人进入现场面试的阶段,浪费大家的时间。这里有个 precision 和 recall 的平衡,precision 的重要性远大于 recall。

所以面试题目的设计,特别是技术面的题目,与其说是招到合适的人,不如更精确的说是剔除可能不合适的人,越早越好。什么样的题目适合剔除人呢?一定是有明确答案的题目,这样的题目可以是理论题,可以是数学题,可以是代码题,可以是系统设计题,但一定不能是开放讨论式题目。一定要是如果答案是A就过,如果不是A就淘汰,或者设计成类似分数的系统。

precision 和 recall 是不可能兼得的,很多时候筛去了一些可能合适的候选人我们也很惋惜,但更多的时候犹豫一下让候选人进入现场面试表现不好,反而耽误大家更多的时间。

团队需要 != 最像我

面试官往往都有些幸存者偏差:我都是面试官了,像我这样的是最优秀的,我会的候选人就应该会,我要以我为模版招人。

从团队的角度来看,这其实是非常糟糕的思路。每一个团队业务非常广阔,每一个人的专精方向也不一样,多面互补对于一个团队来说是一个更好的状态。

从面试题目的设计上,要分清楚什么是基本要求,什么是加分项。

基本的要求要抽象出是能完成在团队中做机器学习最基础的技能,比如代码、调参、常见优化的方向等等,不需要很深入。更重要是要抛弃“我认为什么是重要的”,而去思考“团队工作日常需要什么技能”。从这个角度来看可能日常需要的技能比你想象的要简单基础的多,那面试就应该更关注这些技能。

在加分的问题中除了深挖,更可以抛出一些自己在实践中难以解决的问题,看看有没有什么妙招,有时候有额外的惊喜。

最大的难点是面试官

面试官其实是整个面试流程中最稀缺的资源。一是面试官的时间很宝贵,面试会占用大量工作的时间。二是每个面试官的工作背景、喜好、评价标准都可能不一样,这个必须靠制度和流程的设计来保障相同。

实践中我们会经常与各个面试官沟通,讨论题目的评价标准,定期回顾最近的招聘反馈,研究转化率,看一看哪一位同学做的好与不好,确保每一位面试官表现都类似。

题目的设计上也会确保题目不能太偏,每一位面试官都能完成基础知识和深入理解的衡量,同时题目必须有明确的回答标准,什么的答案可以过,什么样的答案是红标,都需要明确的写下来。

Tubi 的面试实践

根据这样的理解,Tubi 的机器学习 面试流程设计大概如下(可能会变更):

技术面一:简单的 Python 代码实现,大概不超过10分钟。一些概率统计,机器学习理论。总体上非常基础,目的是淘汰掉完全不会写代码,或者只懂 Buzzword 的人。

技术面二:给出一个真实的数据集,需要使用常见的机器学习包,比如 sk-learn, pandas, numpy等等,抽取特征,训练模型,衡量模型。现场一个小时,过程中允许 Google API。

现场面试:还有一轮代码,与技术面二类似。剩下的大概两三轮基本上都是机器学习的实际应用,比如让你设计一个推荐系统,设计一个视频广告去重系统,怎么做,比较关注的方向是比如指标的设计、关键系统部件的设计(提出可以用 end-to-end deep learning system solve everything 的都直接淘汰)、迭代的思路等等。这几轮主要是非常资深的工程师/经理/总监/CTO来面试,更多的是考察人的资深程度。

因为全程没有 Leetcode style coding,而是非常关注作为机器学习工程师的日常,绝大多数面试者的反馈都是非常正向的。

面试因需求而变

总结一下,面试的题目和流程设计其实跟业务的需求是紧密相连的,要疯狂招人的时候是一种设计,如果没有业务压力又是另一种设计。我也想跟每一位候选人谈心谈简历,但一看到密密麻麻的面试安排,就感觉

所以从面试者的角度出发,理解公司所处的状态也有助于准备面试题目哟!

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/110131
 
401 次点击