社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

夕小瑶的卖萌屋 • 5 年前 • 607 次点击  

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

记得这大概是个三年前的问题,每年都会有新的答案让我持续学习。三年多前我作为最早的机器学习工程师之一加入 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