算法工程师面试时一般问什么

描述

1.可以简单介绍一下你简历上有几个项目,以及项目的大致工作吗?

我自己写简历的时候也是蛮尴尬的,项目的确非常少。我自己只有一段小公司的实习经历,而且跟算法关系不大。除此之外,因为导师严格不让实习,就没有实习经历了。相对比较好的是,我们实验室都是做算法相关的,所以我把本科毕设写了进去。研究生期间导师也没有项目,所以我把我的研究方向(就是我自己研究方向做的实验,也是研究生毕设)写了进去。之前还有参加了一个小型的竞赛,所以这样子就凑够了四个项目。一般简历上大家写3-4个就够了,写太多也没太多意义。其中我的那个小公司实习面试的时候几乎没人问,所以在面实习的时候主要是问研究生相关的那个项目,那个小竞赛,还有本科毕设。后来校招的时候就把那个小公司实习给换成了滴滴的实习,把小公司实习给删了。找工作的时候大家都会问你的实习经历。

当时的本科毕设做的的确比较水,又加上本科时水平菜,做的的确就那样。研究生的毕设做的还是挺认真的,还是有进步的空间。如果重新走的话,我这些都会更认真的做,找实习找工作还是非常有有用的。研一暑假是去实习的好机会,那时我们是按校历放假的,又有时间,我没有抓住。

2.项目在面试过程中的重要性是1/3左右吗?如果给项目、机器学习知识以及编程排序,应该是怎么样的?有没有项目经历不足,但用基础知识去平衡的情况?

很多同学都会问项目相关问题。面试中的确会问项目,一般一个小时一场面试,常规的是20分钟聊项目,20分钟聊机器学习相关知识,最后20分钟编程并白纸算法。时间20分钟只是估计,只能说是大概。一般一面都是技术,二面可能技术也可能会随便聊。

如上文所述,我也没有特别好看的项目。都是本科毕设,研究生毕设,小竞赛这样子的。大家也可以发挥聪明的脑子想想怎么写简历。至于重要性,都是非常重要的。有的面试官喜欢全程聊项目,聊着项目穿插着机器学习相关知识的提问。之前找实习的时候,很多人阿里的一面就是拿着简历聊项目及相关知识。

这也涉及一个很大的问题,就是面试到底要面什么?分解起来就是要面什么内容,想考察什么能力呢?或者说一个算法工程师对这些的要求是什么呢?

很直白的,很基本的就是编程,算法的理解,工程实践能力,还会考察数学知识,脑筋急转弯等,甚至更加深入的会考察你的知识的广度,深度,还有随机应变的能力。

对于编程,我认为最低要求是别让编程拖你的后腿,一般来说,每场面试都会有一个编程题,一般套路是先讲思路,再写代码。代码最好bug-free。即使没有bug-free,经过提醒想明白也是可以的。大部分都会让分析下你的算法时间复杂度,空间复杂度,并能说明为什么是这个时间复杂度。很多都会追求最优解,所以这也给刷题一个提示,刷题不是ac就可以了,而是要追求最优解。编程这块可以自己把握,千万不要只追求编程,不管其他的。这多个方面要平衡下时间和精力。我之前有一段时间整天刷题,有段时间整天看算法,感觉都不是很好。最好能平衡下来,不让任何一方面去拉后腿。很多公司来说,编程会考察,但是通过的大家都给出最优解,差别也没那么大,所以多多掌握机器学习相关的算法吧,目前我是这么看的。

关于工程实践,也就项目。做的项目,都是工程实现的一部分,如果什么项目都没做过,我们是面试官,我们也会对这样的面试者不放心的。像很好的实习经历,很多实验室或导师不放实习的情况下,实习经历很多同学都没有。如果有实习机会,一定要把握住。比如研一下的暑假,那个假期如果放假时间比较长的话,可以找个短期的实习,体验一下。有些如ACM大神,可能很多人是到不了这个层次的。对于多数同学来说,的确没有太好的实习经历。解决办法是如果条件允许,就去找一段实习。如果条件不允许,可以在学校好好的学好相关的机器学习理论,做好自己的课题。有些同学参加一些竞赛,也是可以的。至于排名,肯定是越靠前越好。我自己做的那个小竞赛也没拿到太好的名次。根据我的面试来看,面试官或者hr可能会问面试排名,也可能不问。但是排名并不是重点,重点是你能讲清楚你的项目中,你做了什么工作,思考出了哪些思路,都用了哪些方法,具体的工作及收获是什么。他们看到你的项目,重点还是想通过你的项目,看清楚你的能力和实力。至于这些竞赛能不能写到简历上,当然完全是可以的。

机器学习算法相关的理解。很多人说,算法工程师日常工作是调参,调模型。调参和调用模型还是要理解其中的原理,才能向正确的方向走。对算法的考察,重点会考察你基本功的理解,比如svm lr的基本原理,各种分类的评价准则,l1 l2的区别等。再拓展的就是对算法广度的理解,最基本的就是对常用的一些算法有深入的理解就够了。

其他相关的,算法工程师要掌握的很多,数学相关的知识用到的很多,比如矩阵,概率论相关的。比如滴滴之前问的求A和B的乘得到的矩阵C的秩,面试官聊完告诉我,这道题的重点就是考察一下数学相关的知识,因为算法工程师日常会用到很多数学知识。再比如,美团内推面试一面的时候,还问了一个概率题,我忘了写了,是这样的。一个村子特别热爱男孩,最初村子里男女平衡,但是夫妻生孩子时,如果生到女儿就会一直生,直到生到男孩为止,问,多年后,男女比例是多少?还问了两个人轮流投硬币,直到有人投到正面为赢。问先手和后手赢的概率多少。两个题很类似。

到最后,无论是聊项目,还是机器学习相关算法,都是要考察你的整个的思维能力,基本功的能力。如果没有很好的项目,就从实习、竞赛、自己的实验室项目、自己的研究课题等方面找找灵感。重点还是自己对这些知识的掌握程度还有编程的能力。

3.如果没有好看的项目,简历上如何形成项目呢?或者是在目前这个紧急的阶段,可以临时做一些什么事情补救?

类似问题:你做的项目是实验室的项目吗?实验室本身不是研究机器学习方向的,没有项目怎么办呢?

这个问题,跟前面的有些类似。就从实习、竞赛、自己的实验室项目、研究课题等方面找灵感。我一同学,他也是通信相关方向,转nlp。就先找了一个小一点的公司实习,然后校招去了tmd中的一家。

项目不是越多越好,我之前见有人简历上写了7个项目,写满了。然而这也没太多意义。简历上除了项目,可以写一下个人技能之类的,突出下自己的优点。我自己也是项目不够多,凑的。

或许其他学长学姐有独特的项目技巧,我不太知道。

4.我最近参加了一个XX的比赛,但最后的名次可能不太好(猜测前10%吧,比赛没结束,最近疯狂被超,但感觉自己已经没有思路了),这种经历可以往简历上写吗?

当然可以了。

如前文所述,项目竞赛之类的写上简历,如果有好看的名次,肯定是好的,没有也没关系。前10%已经很不错了。我以为,面试官更看重的还是通过这个竞赛,体现了你对哪些知识的运用,自己提供这个竞赛的解决方案和思路是什么。重点还是考察你的能力和水准在哪里。如果一个竞赛,你拿到了特别靠前的名次,但面试的时候,什么也讲不出来,都是靠随便调参得来的,没有东西可以讲,还是非常尴尬的。

5. 刷题上,笔记也做了分析也做了,但没几天前面的就感觉一点儿也想不起来了

类似:很担心编程题啊。虽然在刷题,但是感觉现场还是不一定能bug-free啊,刷题好难啊

编程很多考察的还在easy,偏medium的水准。当然也看公司看部门,有些公司就是看中编程,比如微软,那你想去就好好搞好编程就好了。对于很多公司来说,编程知识考察的一部分,一般都是medium水准。也有部分公司或部门考察hard的。

刷题的时候,多做笔记,经常回顾,多找同学讨论。一道题,多多的思考,多多的去讨论。思路这个东西,有时候同学的理解和见识能很大的帮助你的成长。的确会忘记,但是你可以把一类题目总结下方法,或者看别人总结的方法。这个要多练习,多总结,多交流。我也确实没特别好的方法。但是我觉得经常回顾与思考,经常练习,肯定会对编程有所提升的。

我自己看了cpp primer的一半和算法导论的一半左右,基本都看了算是两边多一点吧。剑指offer倒是看了四五遍。leetcode我做的题也基本在两遍以上吧。

面试的时候,除了编程,有时候也会考察cpp的基本知识(如果你用cpp的话),比如虚函数的概念,struct与class的区别,指针,static等。

6. 从你的经历来看,无论是基础的机器学习知识还是编程题(从我刷leetcode和剑指offer来看,感觉都是medium和hard的题目)的掌握来看,感觉师兄很历害,也拿到了很多sp的offer。但是在阿里的面试仅仅是因为投的较晚的原因导致的吗?是否还有其他的因素和注意的点。因为想去杭州,所以对阿里格外的关注。

不仅仅是因为投的晚。我想说的是投的晚是非常重要的一个影响因素。我投的时候,我周围的同学都已经面过二面或者三面了,也就是说基本都已经结束了。所以错过内推阶段,加上内推消耗很多名额,转正也消耗了很多名额,最后留给激烈的校招的名额不多。最根本的还是自己的简历和自己的能力不够优秀或者说不足。如果能力非常强,什么时候都有机会嘛。但是对于很多人,包括我认识一些非常牛的的大神来说,还是要把握好机会,能事半功倍。我这里的建议是把握时间和机会,提前好好准备,不要犹豫。我校招投的蚂蚁金服,蚂蚁金服相对阿里其他部门来说是非常难进的部门,今年蚂蚁金服的实习貌似容易一些,我没投蚂蚁实习,校招也不容易吧。

想去杭州的话,将来实习可以直接申请阿里杭州的实习,转正直接转本部门就好了。这样的一个坏处就是将来校招的时候,你可能在杭州实习,如果来北京面试其他公司,可能会不会太方便。但是你有了那边的offer,麻烦点也就那么回事。虽然有的公司内部也可以转到杭州,我觉得还是直接转会好一点。

阿里的面试,根据其他同学的反馈,除了简历、项目、编程外,也会问一些数学或脑筋急转弯的问题。关于数学概率论的简单的一道题,两个随机变量X Y都符合均匀分布,那X+Y符合什么分布呢?看你想去哪个部门,多跟那里的学长学姐交流,可以针对性的准备下。

7. 关于项目的问题。从你分享的内容来看,感觉项目占的不是很多,这一块是否占的比例比较小。因为我在实验室没做什么项目,只是学了一些相关的大数据处理工具,所以项目这一块很缺,最近打了一些比赛,这个用来充实项目是否够。

关于项目,基本每场面试都会问吧。有的我可能没写要问项目。70%的面试都会先问问项目,很多都会一个或者两个。也有的会简单的问,有的深入的问。看面试官的风格。

竞赛可以充实项目。只要你的竞赛跟你要找的岗位匹配的上。

8. 你觉得公司对 数据挖掘比赛 看重的程度怎样?

除非很好很知名的比赛你拿到特别好的名词,一般来说,更注重要考察的是你的知识的理解,全局把控,提出的解决方案等相关的能力。

因为我自己的竞赛比较小,所以都是谈论技术相关的。其他大神的nb竞赛我也不知道怎么样的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分