近日,Reddit 上一位网友 Mogady 分享了自己在一家公司的面试经历。这段经历让他感到沮丧,因为他觉得面试并不是在考察 ML 工作者的实际能力,这是不公平的。我们先来看看他讲述的面试过程。
我有 4 年的 NLP 经验,最近想找一份远程工作,于是我申请了一家公司,该公司声称他们只雇佣 top 3% 的人。当然,没有人知道这个数字是怎么来的。
我申请了两次,第一次通过了编码测试,但没有通过技术面试,因为我没能在 30 分钟内解决 2 个问题。
第一次面试失败之后我反思了自己的弱点,并意识到解题才是工作面试中的关键,于是我在 Leetcode 上刷了一些题,然后又申请面试同一家公司。这次我直接进入了技术面试阶段,他们给我一个数据集,要求我在 30 分钟内让一个 NLP 方法的准确率达到 96%,其间我只能浏览文档,不允许用 StackOverflow 或谷歌搜索。我想这应该是在考察我理解问题的能力——想让我又快又好地处理给定数据。经过几次迭代,准确率达到 90%,然后时间到了。但我告诉面试官如果我有更多时间,我会怎么做。
第二天面试官给我发了一封拒绝邮件,我要求他们给我一个理由,他们说:「面试成功的人可以在给定的时间内获得更好的性能,因为这些人知道 Pandas 库函数能帮他们快速完成编程。」
但是根据我几年的 NLP 实际工作经验,Pandas 和 Jupyter 通常只用来分析数据。如果你真的在构建一个项目,你可能就想尽可能摆脱 Pandas 库函数。因此,不只用一行代码完成操作并不意味着我的能力不是 top 3%。
如果该公司因此拒绝我,那么我是否可以认为 top 1% 的人甚至不需要编码?他们只需要对各种工具得心应手,问题就能靠工具自己解决了。
如果他们认为从头开始构建项目并不重要,那我注定不会面试成功。
显然,Mogady 对这段面试经历感到非常懊恼,他提出疑惑:「为什么现在所有问题都以解决速度为衡量标准?」
Mogady 的经历引发了网友的诸多讨论。有人表示这很现实:「面试确实会衡量应聘者对行业中常用工具的了解,并将重点放在最常用的工具上。一些公司通常还希望尽快为客户创造价值,而不考虑太多细节。这也会影响他们选择雇用谁。」
但也有人从构建项目的具体问题上分析,认为压缩源代码(例如用一行代码完成操作)不利于项目的长期运行。一行代码编译之后的机器码和几行代码没有差别,而几行有注释的好代码是更佳的选择。
有担任技术主管的数据科学家表示:「使用 Pandas 库函数编写一行代码不是什么重要的事情,更重要的是如何扩展和泛化算法。我会更看重这一点,而不是盲目选择只会加速训练的员工。」
还有人从公司层面看待这个问题:「如果一个公司只考虑 ML 方法的速度,那么他们可能也只是想尽快盈利,而没有长远发展的想法。好的公司在意的是员工分析和研究问题的能力。」所以这样的公司不去也罢,没什么前途。
无论是对公司还是对个人,Mogady 的面试经历都值得我们思考。面对一个实际问题,又快又好地解决问题不是易事。如果要在速度和实际效益上选择一个,你会怎么选?