伯乐是怎样炼成的,BAT算法面试官心得体会

自古美人都是妖i 提交于 2021-01-04 14:46:44

【面试相关原创文章合集】

  1. Luke:【纯干货】程序员(算法&开发&测试)大厂(BAT)社招/校招面试准备(简历+刷题+话术)指南
  2. Luke:伯乐是怎样炼成的,BAT算法面试官心得体会

前言

最近帮leader面试了不少应届生,也有了一些自己做面试官的心得。博主之前跳槽的时候写过一篇从候选人的角度如何准备面试的文章,刚好这次可以转换一下位置,从面试官的角度出发聊聊如何高效地从海量的简历中快速相中心怡的候选人,也希望能够帮助还在找工作的朋友更好的了解面试官的心路历程,知己知彼,百战不殆

目录

  1. 基本原则
  2. 候选者自我介绍
  3. 工作(实习)经历/论文/竞赛/项目考察
  4. 基础知识考察
  5. 方案设计
  6. Coding测试
  7. 候选者提问
  8. 时间分配

1. 基本原则[1]

想做一个好面试官,遵守以下几点原则是基本:

  1. 尊重。简历不匹配的候选人就不必邀请了,节省双方的时间。
  2. 不要好奇应试者的私人生活。种族背景、家庭背景、是否单身、生育计划等都不是面试官应该了解的事情。
  3. 做好准备。互联网时代,千里马不常有而伯乐常有。自己中意的候选人往往手里有多个offer,如何从所有友商中脱颖而出,打动候选人,需要每个面试官仔细思考。

2. 候选者自我介绍

所有面试正式开始的第一步都是让候选者做自我介绍,这个环节必不可少。原因不外乎3个[2]

  1. 让候选人有个缓冲时间,避免过度紧张
  2. 面试官可能还没仔细看过候选人的简历,我们也需要一个缓冲时间;
  3. 我们希望听到一些能抓住要点、引起我们兴趣的字眼,比如候选人最强的技能、最专业的领域、做的最成功的事等等。

这个阶段我会主要关注候选人的表达能力、总结概括能力、是否提前做过准备等。

自我介绍是面试者留给面试官的第一印象,而《亲密关系》一书告诉我们,第一印象很重要。只要和陌生人交谈5秒钟,人们就能确定ta的外向程度、认知水平和智力高低[3]。我自己的经验是,一分钟的自我介绍后,我心中就会形成大致的倾向。

3. 工作(实习)经历/论文/竞赛/项目考察

在对候选人的大致情况有所了解后,我会选择其简历上和岗位要求最匹配的1~2段经历深入考察。因为自己是做算法工作,所以我的侧重点是:工作(实习)经历 > 论文 > 竞赛 > 项目。

一般来说,工作(实习)经历是简历上我们最关注的部分,如果面试者之前已经有过行业知名企业的工作经历,会大大增加我们的兴趣。高引用文章其次,好的竞赛名次随后,优秀项目兜底。

我自己一般会根据STAR法则[4]从四个维度来考察候选人对自己项目的掌握程度和含金量。

首先是情境(situation),即项目的背景是什么?实际面试中,存在一些候选人无法准确的回答这个问题,说明ta们并不了解为什么要启动这个项目,可能只是简单的执行者,对业务的理解存在不足,扣分。

其次是任务(task),即你是如何拆解目标的。将项目的顶层目标化整为零是实际工作中重要技能,如果面试者没有掌握此项技能,那ta的工作效率是要打个问号的。

然后是行动(action),即针对这样的任务,你采用了什么行动方式。这个阶段会深入考察面试者的具体实现能力。一般来说,我会根据简历上提到的关键技术,不断进行追问,直到候选人无法回答为止。比如说,这个问题你为什么要建模成MRC而不是序列标注?你的MRC模型的亮点是什么?如何解决数据不平衡问题?等等。如果面试者能做到兵来将挡水来土掩,将会是极大的加分。

最后是结果(result),即项目最终的收益是什么?而你有从中学习到了什么?如果面试者能给出经得起推敲的具体数字,特别是真正业务上的收益,恭喜你,你就是我们想要的人。另一方面,如果候选者善于总结,这也是我们喜欢的人。

4. 基础知识考察

这个部分和上一个阶段相辅相成,如果候选人的项目已经聊的足够深入且其本人回答的足够出彩,会酌情减少这部分的时间。反之,如果面试者的项目不能打动我,我会通过出更多问题的方式考察其基础知识是否足够扎实。

以算法岗为例,我会主要考察数学/传统机器学习/深度学习/最优化/自然语言处理等相关算法基础知识[5]

老实讲,其实有不少知识我们面试官也记不大清,所以我一般会在面试前复习一下西瓜书[6]和花书[7],有时候时间排不过来,也会直接挑百面机器学习[8]上的问题去问。

在这里要特别说明的,我们不指望面试者能够完美的回答出所有的问题,我们的真实目的是了解候选人的实际水平。我遇到过一些面试者到了这个环节因为紧张导致逻辑混乱,强行作答而发挥失常,其实完全没有必要,心态放平,正常作答即可。

5. 方案设计

方案设计是我个人最喜欢的部分,是整个面试中最开放的环节。

一般来讲,我会根据面试者的技能点,选一个相近真实工作场景,让面试者设计一个方案,并现场讲述出来。比如说,面做信息抽取和MRC的人我会问“设计一个开放信息抽取系统”,面做分类的人我会问“设计一个层级化细粒度分类系统”,等等。这个环节能够很好的考察面试者的实际工作能力,很多人都能侃侃而谈自己的项目,但在这里却马失前蹄,连完整的一段话都组织不起来。与之相反,真正的强者往往能够脱颖而出,给出超出我们的认知范围,但又不失科学的方案,让我们真正的眼前一亮。

5. Coding测试

这个环节是很多候选人最恐惧的环节,其实我们面试官也是从面试者一步步走过来的,所以非常能理解你们的心情。但不得不说的是,算法岗位,不管你是统计出身还是计算机出身,都避不开编码,因此基本的coding能力是必须的。

我一般会选1~2道算法题,范围涵盖排序、双指针、dp、贪心、分治、递归、回溯、字符串、树、链表、trie、bfs、dfs等知识点。

面试者答题完成后,我会观察其代码风格,包括但不限于函数变量命名等等,同时让候选人大致解释自己的思路,目的是考察其逻辑表达能力。最后,我还会让候选人计算程序的时间复杂度,如果复杂度较高,还会追问有没有改进的思路[9]

6. 候选者提问

在面试临近结束时,我们会自动让面试者对我们提问。我们可以通过这些问题,推断出候选人关注点,比如说工作地点?待遇?团队工作内容?等等。这些点不仅可以了解候选人是否认同公司的价值观,符合团队的梯队定位和岗位需求,也可以帮助我们在后面的流程里更好的招揽优秀的候选人。

7. 时间分配

文章的最后,附上一张时间表:

阶段 时长
候选者自我介绍 ~1分钟
工作(实习)经历/论文/竞赛/项目考察 ~20分钟
基础知识考察 ~5分钟
方案设计 ~10分钟
Coding测试 ~20分钟
候选者提问 ~5分钟
总计 ~1小时

博主写文不易,感谢各位的点赞、收藏和分享^_^,更多精彩内容欢迎关注公众号【AI充电站】。

参考

  1. ^如何当一个好的面试官? - 腾天的回答 - 知乎 https://www.zhihu.com/question/26240321/answer/32495807
  2. ^面试官常问的几个有意思的问题 - 我是心心的文章 - 知乎 https://zhuanlan.zhihu.com/p/46981661
  3. ^亲密关系 - 罗兰·米勒 (Rowland S. Miller) https://book.douban.com/subject/26585065/
  4. ^STAR法则 https://www.zhihu.com/question/270327306/answer/690014655
  5. ^如果你是面试官,你怎么去判断一个面试者的深度学习水平? - mileistone的回答 - 知乎  https://www.zhihu.com/question/41233373/answer/255954147
  6. ^机器学习 - 周志华 https://book.douban.com/subject/26708119/
  7. ^Deep Learning - Ian Goodfellow / Yoshua Bengio / Aaron Courville https://book.douban.com/subject/26883982/
  8. ^百面机器学习 - 诸葛越 / 葫芦娃 https://book.douban.com/subject/30285146/
  9. ^剑指Offer:名企面试官精讲典型编程题(第2版) - 何海涛 https://book.douban.com/subject/27008702/
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!