作者 | 梁唐

来源 | TechFlow(ID:techflow2019)

头图 |  CSDN 下载自东方IC

前两天的时候有一个同学在评论里问我,承志,如果你是面试官,你会问什么问题呢?

不得不说这是一个很好的问题,一千个人眼里有一千个哈姆雷特,同样,一千个面试官里面也有一千个面试标准和面试风格。首先说明,本文的内容只代表我个人的观点,大家辩证吸收。

无论是我之前作为面试官进行的面试,还是以后我将要进行的面试,我个人的面试流程主要分成三个部分。分别是算法题、机器学习基础以及理解题。实际上也不只是我,业内很多面试官基本上也都是这个流程。

算法题

算法题指的是算法数据结构这一块内容,这块能考察的东西非常多,即使排除掉竞赛当中的内容,也可以玩出花样来。业内的面试官在这个部分一般有两种风格,第一种是朴素风,也就是问的都是基础当中比较难的内容。比如让你手写归并排序、快速排序。

归并排序和快速排序虽然都是本科算法课当中有的东西,但难度还是比较大的,有能力在面试的时候用白板写出来并且基本上没有bug的都是牛人。如果此人还没有acm之类的算法竞赛的背景的话,那么可以肯定他的基础一定非常扎实,或者是进行了充分的面试准备。

第二种风格是思维题,比如选择一道LeetCode或者是codeforces当中的问题进行考察。一般面试官喜欢解法多样,既存在简单朴素方法,又存在需要缜密思考才能得到进阶解法的问题。候选人能答出什么样的解法,就说明了他处在什么样的档次。这种问题的解法一般也都是一些基础算法,比如two pointers或者是递归,你想不到一定不是因为你不知道这个算法,而是你理解不够深刻,或者是思维能力不够。

我个人在面试的时候一般会从易到难准备三道问题,根据最简单问题的回答情况来判断是否要给出最难的问题。比如一道裸题,一道基础题,和一道思维题。有时候为了防止候选人押题,我也会准备一道原创题。因为经常会遇到面试的时候候选人偷偷百度的情况。

机器学习基础

基础题主要指的是机器学习方面的基础,这一块问问题的风格也很多。有些人会喜欢由浅入深,你每回答出来一个问题,就继续追问你一个更深入的问题,直到你全部回答出来或者是回答不上来为止。还有些人会直接问你某一个领域的细节查看你的理解情况。

我个人喜欢两种方法联合起来使用,比如我可能会问你在机器学习领域你比较熟悉的模型有哪些。当候选人回答之后,我会让他自己选择一个他拿手的模型进行介绍。比如之前有一个哥们选了Kmeans,他把Kmeans说出来的时候就在我心里已经扣了点分了。说明他对于他当时提到的其他模型一定都不是非常自信,不然为啥选择最简单的Kmeans?

接着,他介绍Kmeans的原理倒是没有太多的问题,但是当我问他如何解决Kmeans效率较低的问题,有没有想法的时候,他直接告诉我没有想法。这说明了什么?说明他对于这些模型的原理只是浅尝辄止而已,并没有深入其中思考。就连最简单的Kmeans尚且如此,其他的模型更加就不用说了。

如果这一环节他答得不错的话,我可能会选择一些比较有挑战的问题追问一下。比如追问一下GBDT或者是XGboost模型的原理或者是一些细节。如果追问的内容也可以答出来,那么机器学习基础这一关就算是过了。

一般来说不会问太多深度学习相关的内容,可能会挑一些比较基础的问。比如解释一下神经网络梯度爆炸的原因以及解决的办法,以及候选人在这个领域做过的模型和事情等等。如果候选人之前没做过相关领域的话,问不出太多的东西来。比如如果他之前做的是NLP或者是CV,那么基本上没有相关性,可能只能挑一些有些感兴趣或者了解的问问了。

理解题

理解题问的理解是对行业或者是场景的理解,比如既然是推荐算法,那么肯定会问一问对方对推荐的理解。推荐算法究竟解决了什么问题,推荐算法的痛点是什么?我们怎么样来设计特征,在线学习怎么做?这一块内容更多地是交流而不是提问,听听对方的想法,看看他的理解有多深刻,有没有一些好的点子。

这一块属于开放性问题,相对比较机动,在面试当中的重要性占比也比较低,基本上可以理解成加分项。如果对方实在没什么想法或者是没什么经验的话,也可以不问,或者是问一些对方简历当中的内容来替代。

关于候选人简历当中的内容,如果比较相关的可能会多问一些,如果不怎么相关可能就大概了解一下,或者就不问了也可能。比如他之前有做过哪块内容比较让我感兴趣,或者是我们刚好做过或者即将要做,都会深入聊聊看。一方面了解一下对方的想法以及做法,一方面也可以从侧面看得出这个人的品质以及能力。

最后再聊下我的标准,算法题和机器学习这两块能够达到60分,没有其他扣分项的话,基本上我就会给过了。两项都能80分,我就会给A,如果其中还有一项能超过90分的话,我就会给A+。当然这个是校招以及社招普通工程师的标准,因为我实力有限,也只面过这个标准,对于更高level的面试会问什么,暂时了解还不多。如果有同学了解的话,欢迎在下方给我留言。

更多精彩推荐
☞1024程序员节重要议程曝光,开源技术英雄会聊开源“真心话”

☞“我们的目标是取代物联网中的安卓” | 人物志
☞对话阿里云:开源与自研如何共处?
☞服!AI 让兵马俑“活”起来,颜值惊艳!
☞AI 还原康乾盛世三代皇帝的样貌,简直太太太好玩了!

☞观点 | 回顾以太坊近期及中期扩容路线图,展望 rollup 作为中心的以太坊路线图

点分享点点赞点在看
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐