MSRA实习面经

Intro

当初找实习几经波折,被虐到怀疑人生,曾给自己定了个小目标:如果找到实习,就写一篇文字记录这个过程吧.
如今入职MSRA整整一个月,一直忙于上手新的内容,要肝的数据集给的资料挺不全的,理解所给数据基本靠猜.在一个月的节点,终于从零基础初步入门,后续可以开始炼丹,而不是每天拿着工资看论文看教程了.

历程

我应该是今年九月初的时候决定开始找实习,(其实六月左右也投了一个Momenta的实习,但是当时没有当真,只是试试),一直到11月才终于找到实习,并且是我认为我投递的所有公司中最好的--MSRA,Mentor方向和研究内容也是最合适的.感谢之前所有简历挂,或者面试挂了我的公司...如果不是你们的拒绝,我一定会错失MSRA...
总结一下,投了大概有10家左右(Momenta,商汤,旷视,Intel研究院,海康研究院,NVIDIA,中智行,径卫视觉,地平线南京研究院和MSRA),面试了4家(Momenta,径卫视觉,商汤和MSRA),拿了两个Offer,接受了1个.
我想,直接把面试的题目公示出来并不太合适,我会描述一下面试内容的大方向.以供小伙伴们参考.

Momenta

Momenta其实是有很强MSRA背景关联的,几个创始人是亚研院的联培博士,之前和商汤科技也有千丝万缕联系.
面试具体内容记不清了.只记得给我安排了四轮面试,应该是四个不同组.然而最终只面试了两个组..一二轮面试是上午, 三四轮面试是晚上.第一个面试电话如约打来,然后第二个面试电话一直没有接到,我等了约20分钟,联系了HR,HR表示帮我看一下,然后依然没有电话,第二轮面试过...第三轮有了第二轮面试被鸽的经历,淡定地等了十分钟,然后干自己的事了,果然被鸽. 第四轮电话如约打来,应该是系统硬件组,问了一些传感器和数据采集一些相关知识.
结果,凉.

径卫视觉

9月份开始找实习,第一个接到面试并拿到offer的公司.说起来径卫视觉也是和Microsoft有关联的,创始人好像是CSS部门出来的.
9月份,女朋友在微软实习结束,拿了微软的offer,我也进入博士学制的末年,然而论文数量距离毕业要求...深切感到,不能这样了,我们实验室之前并没有做CV的积累,正经做deep learning的也就我一个博士,遇到问题无人可讨论,平时也接触不到相关领域的线下交流,学习全靠coursera, 科技媒体的直播, 和自己刷论文,进展缓慢.下定决心要找一个实习,还得是搞科研的实习,可以有利于解决毕业问题的那种.
先是注册了Boss直聘,然后又注册了实习僧.更新简历第二天,径卫视觉的HR联系我,有没有兴趣试试他们公司,我看了公司简介,主要做车辆ADAS和视觉相关,还是比较合适的.安排第二天晚上面试.面试我的应该是研究部门的leader,面试内容主要两大块: CNN相关和编程基础相关.
先是问了一些CNN基础问题,然后提到我看过MASKRCNN,问了一个相关问题,我没答上来,不过他告诉我答案的时候,我想起来看到过这个点,补充了一点细节,也算是答对一半吧.
然后问了一些编程相关的知识,两道编程题,都是比较基础的,毕竟口述,也写不了复杂的.还有一个和C++面向对象相关的.编程题中有一个是类似类型转换的(具体记不清了,方法是这么个方法),把一个Python数组中的数据转换为另一个类型,用for循环遍历下就行了.面试官问还有没有其他方法,想了一会,没想出来,面试官提供了一个用[]解决的方案,恍然大悟,还有列表生成器这么个东西可以用,不过本质和for其实差不多,作为专业马后炮,我又补充说这玩意叫列表生成器,面试官表示认可,也算答对了一半吧...
径卫视觉流程也很快,前一天晚上面试完,第二天早上就给我发Offer,赞一个! 但是考虑到目前刚找实习,也才只面过一家,还得再找找,就没有直接接受,跟HR表达了自己的想法,HR也很支持,约了一个期限给他回复.后来由于毕业压力等的考量,还是放弃了这个Offer.首战告捷之后,就陷入了两个月的节节败退期...

商汤科技

商汤是给我指明了面试准备方向的公司.同时商汤科技和亚研院也有很多的关联,比如创始人汤晓鸥博士以前是MSRA的研究员.看过一篇相关报道,据说小鸥老师,以前在研究院号称"小o"老师,笑:)
商汤是国庆节前面试的,之前其实也在实习僧投过,但是一直杳无音讯,不仅商汤杳无音讯,其他投的也杳无音讯,感觉前途渺茫啊,遂找了在商汤工作的学弟帮我内推,(对,是本科学弟,ACM大神).果然就有联系面试了.感觉现在这些互联网大厂收简历太多,如果简历没有特别耀眼的能力或经历(比如ACM,或在其他大厂实习过),简历这一关不太容易过,最好还是找朋友内推吧,可能会认真对待一下你的简历.
商汤面了3轮,应该也是三个不同的Group,甚至可能是不同的site.HR提前半天拉了个面试群,群里有6个人: 两个HR,三个面试官 + 我.面试的形式是微信群内语音,由面试官发起群语音,我接受就行了.既然拉了个群就不太会出现被鸽的情况了,事实也是这样,基本都是准时发起面试的.
第一个面试官应该是ACM背景的,因为之前完全没有做过算法和编程的相关准备,被虐的很惨,是真的惨.问的问题涵盖概率,立体几何,数据结构,编程语言基础,算法题.简单问了个ResNet的问题还很细节,第一个问题ResNet平均池化前的feature map的size是多大,这个题我居然答出来了.然后又接着问ResNet101和150的区别是啥,我印象除了层数没区别啊...
第二个面试官很友善,先问了第一轮面试感受如何,我表示感受很不好,基本都是算法题...于是他表示,那他就少问算法题吧. 先问了CNN基础知识,我以为问的CNN在计算机中如何实现的,脑海中浮现出之前看caffe的时候提到的先把feature map转换为column,然后怎么矩阵相乘的,说了一通,面试官估计很懵,啥玩意啊...又重复了一遍问题,我总算明白了,原来问卷积核和feature map怎么乘怎么加的,好吧,这妥妥先检验是不是纯不求甚解的掉包侠啊,这个答不上来估计就可以直接结束面试了...然后又问了一些基础CNN相关的知识,我答的都还可以.最后,我们再来到算法题吧...果然是动态规划,而且是一道很简单的动态规划,确实不是为难我,但我确实不会...最后问了下可以实习的时长,建议是6个月,我表示可以保证6个月.最后表示最终录用还是要综合衡量几个面试官的决定.
第三个面试官是无人驾驶硬件组的,基本就是对着简历聊聊天,也算轻松.
等了一周,国庆快到了,还是决心问一下HR,安心过国庆,果然,又凉.估计是因为第一轮实在是太过惨烈.

中智行和地平线南京研究院

这两家有点类似,成立都在1年内,都没有给面试,而且似乎不打算招实习生,不过中智行没有明确说不招,南京研究院明确说不招.
参加了南京研究院两次校园宣讲会,混了个小米鼠标礼品.
参加了中智行第一届开放日,体验了他们的无人车,听王劲大佬分享自己的历程.也是很值的.还碰到了在德国留学回来的高中同学,也是非常巧了.
后来,南京研究院HR在领英加我,聊了几句,感觉他们是有实习生的啊,可能是不公开招实习吧...

MSRA

经历了这么多,我对MSRA是最不报希望的,记得刚开始入坑深度学习的时候,实验室几个博士在一起吹逼,有个博士对我说,到时候去MSRA搞个实习.我笑笑,没说话,内心表示,这种不切实际的幻想就算了吧.
我抱着试试看的态度,投了个简历,没想到腰也不酸了,腿也不疼了(串台了).我抱着试试看的态度,没想到居然就中了,某天下午去找女朋友,下午5点半左右忽然收到mentor发的邮件问是否还在找实习,约了第二天下午的面试,第三天中午发Offer.也是很效率了.
由于面试准备时间非常短(晚上一两个小时+第二天早上两三个小时),根本没时间准备,于是找到Mentor的主页,匆匆看了下他的publication的列表,当天晚上挑了篇最高引和最近一两年的一两篇文章看了下.第二天上午简单回顾下深度学习的一些知识,忘记复习下动态规划了.快中午的时候,又收到Mentor邮件,发了一个链接给我,我打开一看,是collabedit在线协作的网址,这是手撸代码的节奏啊,完全没有心理准备,也没有时间准备代码了,硬着头皮上吧,反正也没抱什么希望.
我印象好像没有自我介绍环节,直接问了简历上一些的项目经历,我做了一些描述,Mentor会就一些点问一些细节,比如性能提升了多少,你觉得产生这种效果的原因是什么.反正就是一问就知道你是不是真的干过这些事的问题.大概聊了20分钟不到,然后就进入编程环节,第一道问题很简单,用set,dict这种哈希表相关的数据结构都可以做,我写的过程中,粗心一个细节写错了,Mentor提示我再看看,我仔细查了下,改正了.然后又问了dict在Python中的实现,以及内存分配方式,正好之前手动写过哈希表的实现,也看过流畅的Python这本书,也答出来了.这时候面试过去30分钟.再来一题动态规划吧...说实在的拿到题目的时候是很懵的,Mentor之前并没有说是动态规划题,我看了会感觉是动态规划.动态规划最难的不是编程实现,不管是递归还是递推,最难的是正确地把问题分解成子问题,写出正确的迭代式.这道题最终我花了近30分钟才做完,写出了完整的代码,其实中途也出了错,Mentor提醒我再看看,我看了好久没看出来,只好问Mentor到底哪错了,不是特别大的问题,加了一句代码改正了下,算是完成了.最后Mentor问我有什么要问的,又聊了15分钟左右,挂电话的时候,Mentor说了声,挺好.感觉有戏.但是也提醒自己不要抱太大期待,万一因为各种因素没有过,岂不是太失望,而且不一定什么时候通知结果,接下来多少天都要处于一种患得患失的心态中.第二天就调整好了心态,安心干活.
第二天中午睡觉的时候,手机调了静音,中午醒来,发现一个未接电话,北京的,一看前面几位和昨天Mentor打来的电话号码相同,赶紧回过去.果然是好消息~这个效率高得猝不及防!

总结

找实习的过程也经历许多波折,许多失望,庆幸最终找到了超出预期的实习.
下面开始找实习的技术总结:
1. 如果目标公司有认识的人,最好内推.热门互联网大厂内推的简历已经很多,非内推的简历如果没有特别的亮点很难得到机会.
2. 自身能力是根本因素,决定性因素.在低谷期或者迷失方向的时候,不要放弃,可以做一些基础能力的巩固,比如编程,算法,数学以及各种基础的网络结构,all your effort will pay off.我被商汤血虐之后,掏出了数学书开始复习概率,打开了leetcode开始刷题,商汤与MSRA的面试间隔其实也就1个月不到,我基本把这些东西都补了起来.面试中问到的东西其实也不是特别难,但是如果没有准备过,指望在面试那种环境下,灵光乍现答出来是很不现实的.扎实的基本功很重要,有了扎实的基础,再进行一些针对性的补充练习,很快可以搞定,我从商汤到MSRA的事实经历也说明了这一点.
3. 自己不会的东西不要写在简历上强行打肿脸装胖子.面试官基本都是很懂行的,你究竟做没做过,几个问题就可以问倒你.再或者说,你自己都不懂的东西,你能把面试官侃晕,这种公司你愿意去吗
4. 如果可以,最好提前了解下面试官的背景,虽然可能对面试过程并没有太大帮助,但是可以让自己做到心中有数,提升自信心.