跳转至

实习面试总结

​十一月的午后,兴许是前夜打游戏打得太晚,我五点多才睁开眼睛。这天,天空比往常暗了许多。看向窗外,引入眼帘的不是熟悉的堪培拉的蓝天,远端是一片深红,仿佛兰州的沙尘暴一般。刷了两集美剧后下楼吃饭,空气也不再“清新甜美”,而有种柴火燃烧与松木混合的味道,刺鼻中竟带着些许清新。我不禁拿出手机查了一下校规,再次确认了一下没有学校被烧毁后所有人立即毕业(pass by catastrophe)的规定,不由得叹了口气。 啊等下,表砸砖头嘛……我错鸟……一年之前在飞机上俯视山火肆虐仿佛还是昨天的事情,当时怕是谁都没能想到我这一躲就是一年。这一年大概是我迄今为止成长最快的一年。面了很多次,被挂过很多也挂过很多,被鸽过也鸽过。所以,在这里写点儿东西,希望能有些帮助。

按照国际惯例,先列一下这一年中的面试情况(可能不完整)。其中灰色表示发生了奇怪的事情,黄色表示我挂了它,橙色表示它挂了我,蓝色表示给了我offer没去,绿色表示最终去向。

时间 类型 职位 公司 方向 结果
1910 秋招 国际商业机器 一面挂
1910 实习 产品经理实习生 滴滴出行 产品 一面挂
1911 实习 2019年实习生 旷视 研究 一面挂
1911 实习 见习研究员 商汤 工程 去向
1911 实习 实习生 清华猛狮 研究/工程 意向
2003 实习 计算机视觉实习生 字节跳动 一面挂
2003 春招 研发工程师 小马智行 工程/算法 一面挂
2004 实习 实习生 微软亚洲研究院 研究 意向
2004 实习 暑期实习生 腾讯 工程 一面挂
2004 实习 暑期实习生 腾讯 预研 二面未参加
2004 Residency Resident 图森 工程 一面挂
2004 社招 优图计算机视觉研究员 腾讯 工程 一面挂
2005 实习 见习研究员 商汤 工程 三面未发起
2005 实习 计算机视觉核心算法实习生 依图 研究 一面挂
2005 实习 实习生 微软亚洲研究院 研究 意向
2005 实习 实习生 北京大学 研究 意向
2006 实习 访问学生 西湖大学 研究 去向
2006 实习 2020年实习生 旷视 研究/工程 意向
2006 秋招 计算机视觉工程师 阿里巴巴 工程 一面挂
2007 社招 计算机视觉算法高级研究员 腾讯 二面挂
2009 实习 实习生 Momenta 工程 意向
2009 实习 2020年实习生 旷视 研究/工程 意向
2009 实习 见习研究员 商汤 研究 二面挂
2009 实习 实习生 微软亚洲研究院 研究 意向
2009 实习 见习研究员 商汤 工程 二面未发起
2009 实习 见习研究员 商汤 研究 去向
2009 实习 Project Intern -量化投资-策略开发实习生 中金 一面挂

首先说一下简历和自我介绍。这两个部分对面试来说非常重要。面试官对你的初步映像通常是建立在这两者之上的,他会问你的问题也和这两者高度相关。因此,在简历上写期望对方会问的东西,而不是一知半解的内容。比如有的同学写精通PyTorch却连张量的stride都不了解,这会给人很差的映像。简历切忌切忌写过大过空的内容。此外,自己得意的经历一定要写上去,如果特别得意,可以多写两段,把不重要的经历压缩。切记要给面试官提供足够的切入点。

准备好了简历,接下来就是选组。有一个五年计划,然后根据这个计划去一步步落实,我觉得是非常重要的。通过观察上图,易证互联网企业我只面了传统意义上的大厂,也即BAT三家。这是因为绝大多数公司招你是希望你做工程的,而这和我的五年计划并不相符。这里有一个容易被忽视的重点是组的选择。同一个公司的不同组的差异比不同公司的差距还要大。因此,在面试的过程当中问清楚自己面试的组以及计划的未来工作内容非常重要。选择一个好的工作内容,而不是一个好的公司。此外,如果可能的话,尽量先知道面试官的姓名,查一下对方的职务和已发表工作。如果说有什么能帮你判断面试中可能遇到的问题的话,这就是最重要的一个。知己知彼方能百战不殆。

算法岗一般对算法题没有什么要求(MSRA除外,一定会问你算法题)。一般会写代码即可。常见的问题包括青蛙跳台阶(优图)、直方图最大矩形面积(商汤)、链表的O(1)删除(商汤)、H-index(MSRA)等等。对于绝大多数题目来说,你都不需要刷任何题也能想出解法。这也给我惯出了一个毛病就是从不刷题,笔试一律白卷,由此还浪费了达摩院秋招的内推(笑。不过近来越来越多面试官喜欢问CV中应用到的算法,比如NMS的实现(商汤、旷视)。我还是很喜欢回答这样的问题的(毕竟谁会自己去实现一个排序?)。对于算法很强的同学我有时候会加问一道卷积的运算,但是能答出GEMM和im2col的还没有一个。哦对了,自动驾驶公司似乎都很爱考算法题,所以如果你想去图森或者小马的话或许应该刷几道。

和开发的你能讲一下握手和挥手有几次分别是什么么(腾讯)一样,算法岗也有很多基础题目十分重要。机器学习你们学过哪些呀?讲一下KMeans和KNN的区别。KMeans的优化你有了解过么?嗯,HMM两个假设三个问题五个元素是什么?PCA的原理是什么?特征值和特征向量有什么几何意义?L1和L2有啥区别?你看过ResNet么?ResNet有哪些优点?ResNet为什么能缓解梯度消失?如果用ReLU的话,那当输出为正的时候导数恒为1,为什么还会有梯度消失?ResNet最开始的会议版和期刊版有哪些不同?为什么后来做了这些改进?BN、ReLU和卷积的顺序不同会有哪些区别?说到BN,BN有哪些好处?他的可学习参数有哪些?

对于算法岗位来说,面试的重中之重是论文和项目(最终还是要归到论文上来)。你做了哪些项目,用了哪些算法?哦好的,用了Faster-RCNN呀。你能简要介绍一下RCNN几个算法么?嗯不错,你对一阶网络有哪些了解?Anchor free呢?AutoAssign看过么,说说?最近的MoCo看了么,他的核心贡献有哪些呢?嗯,MoCo和SimCLR的loss有一个小区别,是什么呢?这个你觉得会带来哪些影响?BYOL的loss和InfoNCE有哪些区别?那你觉得为什么这样还能work呢?你对SwAV怎么看?之前的自监督方法有了解么?哪年哪篇提出了什么方法达到了多少个点?为什么他们work/不work?讲一下你这个工作吧。这个工作和xxx有什么区别么?你这样逻辑上有些不对呀,blah blah?为什么不尝试这么做呢?你复现那篇文章的时候有遇到哪些问题呢?为什么Sync BN那么work?

扯了这么多,其实也没必要去准备所有的问题(你也准备不完。面试过程中最重要的是引导。当面试官问你一个问题的时候,作出回答,并且将话题引导到你所希望对方问的方向去。面试的时间很多时候是有限的,如果在一个地方把自己给绕进去了,考虑终止当前的话题然后换一个。不然你可能花半个小时说一堆错的,那剩下的面试时间怕是只能跟面试官吹吹水然后等拒信了。但如果还没有把自己给绕进去,那也别放弃得太早。告诉面试官对这个方向不是很熟悉然后说出你的答案。没有人能回答出所有问题,很多面试官都会顺着你的话题一直提问直到你不懂为止来判断你知识的深度。

作为压轴,我还想强调一点就是面试一定要有收获。比如我有次ResNet把自己给绕进去然后挂了,后面就仔细看了一下两篇文章,现在盲写一个ResNet都可以。还有一次被问到PyTorch的分布式,这个后来也恶补了一下。没有给你带来提升的面试是很失败的。所以我在最后问面试官问题的时候通常对会问你觉得我在什么地方可以做得更好?哦对了,另外一个常问的问题是你觉得在贵司工作是否快乐?有一个面试官花了很长时间去说服我这是一个非常主观的东西,每个人感受都不一样……我充分理解这一点。但我想了解的是这个公司让你感受最深的是什么?面试毕竟是一个双向选择的过程。

最后我想说一下我最后一家面试的公司,中金。东城区鳞次栉比的高楼给我留下的映像之深让我至今不能忘怀(这才是北京啊!,国贸的环境也360°全方位无死角吊打理想国际。金融行业与AI还是有着蛮大差异的,我们通常习惯每面一个面试官,总共两到三面。他们则是三个面试官面一面。可能由于方向差异太大,面试官也没提什么问题(当然也是我金融知识太差)。最令我印象深刻的是中金的面试官,他们人都非常好,会为你提供一些建议。此外也还挺可爱的,相比之下某些公司的盛气凌人……嗯,CV目前这么内卷的情况下找一些应用AI的其他公司我觉得也是一条不错的选择。


庚子年暮秋

于泰鹏