2020年的下半年开始了,很多大学都已经放了暑假,开始准备去找实习工作了,很多2021年毕业的同学也开始了秋招的进程,而对于一些社招人员,疫情结束,年终奖拿完,也开始准备跳槽。最近一段时间,无论是实习生还是正式员工,我也面试了很多同学,今天想跟大家聊聊求职过程中技术面试大家所存在的问题。
在我的面试经历看来,对于技术面试,一般存在的问题主要有这么几个。
想让面试官认为自己懂的很多
很多人在面试的时候,总是希望让面试官尽可能多的认识自己,因此,大家习惯性的喜欢在自己的简历里写上各种类型的项目,可能这里有推荐系统的,有NLP的还有CV的。
首先我认为,会的东西肯定是越多越好,就像之前我在其他的文章中所说的那样,只有学的东西多了,掌握的多了,才能够融会贯通,从而使自己能够去承担更多的事情。但是这里值得注意的是,我们所说的多,并不是杂,而是在一个主线上,把相关的周边内容都学会,但是如果在自己的简历里写了很多个主线的话,那么这就是杂,而不是多了。
其实关于想尽量让面试官认为自己懂的很多,在这里可以分成2种情况来看待,我们可以从应届生和社招这两个角度来分析。
对于应届生的招聘来讲,更注重的是一个人在一个领域中所研究的深入的程度。因为校招和社招不同的是,校招的同学相对而言并没有很多大型项目或完整项目的开发经验,在实习期间所做的事情更多的是比较零散的事情,因此,对于校招或者实习生招聘来讲,我们更加注重的是在一个领域中的深入程度。目前各个企业把AI领域的校招和实习生招聘的定位都定位在研究生这个水平,而在研究生阶段中,更加注重的就是研究成果,以及研究的能力。因此,对于校招和实习的同学来讲,我建议在简历里尽量先以自己所研究的内容为主,尽可能把自己的研究内容所涉及的相关项目写的完整和深入,而不是一个过于简单的简历,针对于简历这一块,我等下会详细的说。
如果你已经能够使自己的简历看起来完整,丰富,那么这已经达到了一个简历的基本要求。在这个基础上,可以适当的去补充一些其他的相关知识,例如模型工程化、模型部署、多进程甚至比赛等相关知识,这个时候实际上是对简历起到锦上添花的作用。而简历本身看起来就很单薄,又增加了这么多其他内容,就会给人一种没有重点的感觉。
而在面试过程中,应届生应该尽量去讲自己的主线,当把自己的主线内容都讲完之后,看下面试官的反应,然后再根据面试官的反应,有选择性的说一下自己在其他方面的研究成果,但是这里不要NLP、CV放在一起说,否则会给人感觉什么都会,什么也都不精。
说完应届生之后,接下来我们再来聊聊社招。实际上社招和应届生最大的不同在于社招一般都是有几年的工作经验的同学,而对于有着一定工作经验的同学来说,最重要的就是项目经历。对于面试官而言,简历是决定是否能够参加面试的最重要的因素。很多人简历能够写很多,但是却没有重点,看起来像是一篇记叙文一样,而在面试官的角度来讲,社招需要了解的就是你曾经做过什么项目,这个项目取得了什么样的进展,指标是怎么样的。
说到指标,这里就要仔细地说一下。很多同学经历确实非常丰富,但是却不知道如何写项目经历,尤其是项目经历中的指标。对于机器学习和深度学习来讲,最能够体现成果的指标就是准确率、召回率、F1值这些指标,而在推荐系统中,还要有点击率,在CV领域中根据不同的业务可能还需要PSNR值等。很多人可能会想,我是不是把这个指标写进去就可以了,比如说“文本分类采用textcnn模型,准确率达到了98%”,这样写看起来是没有问题,但是实际上这里面有很大的问题。比如说,这个98%的值是怎么得来的,准确率是怎么算的,baseline的准确率是多少,你是从多少提升到98%等等一系列问题,因此,我们可以把这一条改成“文本分类采用textcnn模型,准确率从之前的95%提升至98%,单条预测时间从80ms降低到50ms”。这一点是非常重要的,因为我们的简历给到面试官,我们要让面试官清楚的知道,你的工作对整体带来怎么样的影响,这个也是考察的一个很重要的指标。
说完了简历,接下来就是面试。由于社招的同学有一些是从其他行业转行到算法,所以就想在简历里尽量把在其他行业中的项目经历写进去,在面试的过程中也会特意告诉面试官,自己会很多很多的内容。这些对于面试官的初步印象一般来讲是相对比较好的,但是,正是由于你说了这些,并且你是一个社招的同学,那么在面试的过程中面试官就会根据你所掌握的内容,着重去考察你相应的知识点,而当面试官发现你有些在简历里写的东西都只是会一点点皮毛而已,那么这就会给面试官带来失望的感觉,从而导致面试的失败。
因此,对于社招的同学来讲,会的多不是坏事,但是并不是需要什么都写到简历里,简历一定要突出重点,也不要特意的去跟面试官展示你过多的技能,只有这样才能赢得面试官的青睐。
沉醉在自己的世界里无法自拔
很多同学在面试的过程中都会沉醉在自己的世界里无法自拔,这一点无论是社招还是应届生来讲都存在。什么叫沉醉在自己的世界里无法自拔呢?
我上周面试了一个同学,按照常规,我会先让他做一个简单的自我介绍。结果这位同学的自我介绍用了差不多10分钟,从自己的经历,到自己做的项目的经历,以及项目里面所涉及到的技术的发展历程统统的说了个遍,比如:“我这里用到了textcnn模型,textcnn模型是XX年被XX提出的,主要用来解决XX问题,它最初起源于YY模型,而YY模型又是怎么样的……”基本上把人工智能的前世今生说了一遍,然后我又问他:“那你跟我说一下textcnn模型的卷积核是怎么设置的,用了多少个卷积核”,他回答到:“卷积核这个概念起源于XX年,是由XXX提出来的,然后用到了CNN模型中,CNN模型是一个XX模型,主要用来解决XXXX问题……”,又啰啰嗦嗦了5分钟,然后我实在忍不住打断了一下:“你就跟我说一下textcnn的卷积核是怎么设置的,用了多少个卷积核,为什么这么用”,于是他回答:“我只是调用接口,这个我没有关注过”。
上面这个例子是上周我面试的一个真实的案例,其实这样的同学大有人在。很多人就仿佛自己给自己准备好了一篇演讲稿,无论面试官问什么问题,他都要去照着这个演讲稿去读,甚至根本不理会面试官的问题,沉醉在自己的世界里无法自拔。
实际上,这是面试中的大忌,即使你的即使再牛,面试官也不会要你,原因很简单,因为作为面试官来讲,要考虑到你来到公司之后是否能够正常的和组内同学进行沟通和交流,如果连最基本的沟通和交流都做不好,那么将来团队的配合将会特别艰难。
从另外一个方面来讲,沉醉在自己的世界无法自拔其实也是一种不自信的表现,很多时候是因为对这块不熟悉才有这样的表现,总认为这样可以遮人耳目,实际上,却不知道机智的面试官早已看透一切。所以,遇到不会的,就直接说我不会,我这块了解的不多,面试官也不会为难你。
基础知识不牢固
基础知识不牢固也是面试中常常出现的问题。对于算法的同学来讲,基础一定是最重要的,无论是对于应届生还是社招同学,这一点都适用。
对于算法的同学来讲,基础一般可以归结为2大类,一类就是数据结构,另一类就是深度学习和机器学习基础。
对于数据结构与算法来讲,我在上一篇文章有着重提到过这件事,就是如何去刷LeetCode题,关于这一点,大家可以去参考上一篇文章。
对于深度学习和机器学习的基础,我们也非常需要。所谓的深度学习和机器学习的基础我们可以概括为:模型基础、调参基础这两大块。模型基础就是对于一些基本模型和深度学习知识的理解,例如RNN和LSTM的区别是什么?在卷积神经网络中1×1的卷积核有什么作用?梯度消失和梯度爆炸应该怎么解决……等等这些常见的深度学习问题,这一点是一定要掌握的。
另外一方面就是调参的基础,调参的基础可以反映出你有没有真正的做过项目,以及做的项目的多少。常见的调参问题包括:在训练pytorch模型的时候,内存经常会爆掉,这个要怎么解决?GPU使用率在50%以下,显存也没有吃满,训练的很满,应该怎么办?模型不收敛应该怎么办……等等这些问题实际上就是属于模型调参方面的问题,如果真的做过相关的项目,肯定会遇到的,所以大家在做项目的时候一定要在这个方面多多积累。
综上所述,很多时候,基础对于一个同学来讲是非常重要的,面试官一般也会着重的考察一个同学的基础能力,可以这么说,无论是社招还是校招,如果能在面试中cover住大部分的基础问题,就成功了80%。