在BIGO工作期间,面试了不少求职者,有应届毕业生,也有工作了好几年的,当然,有时候 也有像我一样,从其他领域转来做深度学习的同学。面试完后,对于一些同学,面试官之前 常常有争议,有的觉得挺不错的,其他面试官觉得一定不能要。所以,在面试了很多次后, 我自己也常常想,什么样的同学是企业所需要的,如何识别其中优秀的同学,又如何识别那 些夸夸其谈之辈呢?
个人觉得,一个优秀的算法工程师,有以下气味:
代码能力很强
这个是我觉得最为重要的能力。常常遇到一些对各种模型paper了如指掌,从faster rcnn系列 到ssd, yolo,无所不知,然而让他写一个计算iou的代码就傻眼的同学。在我看来,这些同学 只是调包侠而以,在求职市场上是最低级的存在。有些同学也许会反驳我,一些博士代码能力 也一般,可是数学好,做模型强啊。恰恰相反,我认识的一些真正的牛博中,没有一个不是代码 能力强悍的,可以想象,他们那些精巧的模型,没有强悍的代码能力做支持,是如何开创性的 实现出来并发paper的?所以,纸上谈兵谁都会,show me the code。
真正理解算法,而不是只会推导公式
我面试时,很少让人直接去推导个什么公式(当然 大专栏 如何识别一个优秀的算法工程师,各种线性模型我还是会考察的,这是基本 的线性代数能力),但是我会去考察其形象理解能力。譬如,我常常看到有同学简历里写到 会svm,于是我会问他们,svm和逻辑斯特回归,当数据类别严重不均衡时,应该选择哪个更 好呢?这个问题不需要会推导求解公式,然而却能真正考察面试者是否真正理解svm的出发点, 如果这个问题回答不出来,我认为,即使是会推导svm的求解公式,也是比较差的候选人。
学习意愿强,不挑活
算法工程师之所以叫算法工程师,是因为他们常常会遇到未知的问题,学习并尝试解决它, 所以,学习意愿不够强的人,不能要,知识储备再高,也会遇到未知难题。挑活的,也不能 要,实际工作中,从找数据到清洗数据,这都是落地算法的必经之路,没有人能有特权只选择 自己想干的,把脏活累活丢给别人。
实际面试中,面试10个人,能有2个人能达到上述要求就不错了。所以,之前在知乎看到一个 讨论,说2019的校招深度学习岗位竞争是否很激烈,我想说,其实觉得激烈的,大多是那些 看着这行有热钱,网上随便看了看视频就来面试的,对于真正在这行有能力的同学,一点都 不激烈,是被各个公司抢着要的。而且,经过这么久,团队从无建立,各个公司也明白了, 其实算法团队招人重在质量,而非数量,招10个混混,不如一个大神,算法领域确实如此。