记微软实习生面试

上周周三上课的时候,就收到59开头的北京座机号打来的电话。感觉这个电话有些奇怪,于是就小声的接了。果然是MSRA打来的。由于我不方便接,于是约好两个小时之后再打电话。

两个小时之后就吃完饭,回寝室了。那个号码又打过来了。赶紧接了。对面那头用着粤式普通话,问了问我的个人信息,以及可以工作的时间。我说放假前一周只能够保证三天,放假后可以每天都去。他说他们想招一个full-time intern(听了两遍都没听清),于是就没有下文了。

周二下午上课的时候,又一个59开头的北京座机号打来个电话。这次索性溜出教室接了电话。对面的大哥说他是MSRA系统与计算组的,想面试我,问我什么时候有时间。我说那就周五吧,正好一天没课。

然后一周都挺忙的,也没时间准备,以及不知道要准备啥,周四晚上计算机网络实验也做到快11点,洗了个澡就早早睡觉了。早上一来一脸懵逼,怕面试问关于硬件的问题(以为他们是操作系统部OSG),于是翻了翻组成原理的课件,但是没有心情看。罢了,玩两局炉石,就去微软大厦了。到了发现去的有些早,于是绕着微软大厦走了一圈。微软大厦分为两个楼,我突然发现面试官忘了告诉我去哪个楼了。于是提前10分钟跟他打了个电话。

和面试官碰面,登记了访客名单后,就带我上去了。在一个小的会议室里,就开始了面试。

在开始之前,我特意问了一下他们是属于MSRA还是OSG,结果发现他们是MSRA的一个组。感觉有些尴尬……

他跟我寒暄两句后,就要我做个自我介绍。我在简历上写的算法能力还不错,于是我就随便扯了扯关于算法的。结果他问我有什么研究的方向,于是随口说了个数据挖掘,然后他要我谈谈具体的方向,我回答不上来,只好说现在仍处于学习阶段(装逼失败……)。问了我一道算法题,如何判断一个链表是否有环?虽然有点懵逼,想了两秒钟后,我就说:如果链表头为空,则为空链表;从链表头开始向后遍历,如果发现其中一项与前面的某一项相同,则链表有环。显然他不会对这个答案满意(我也是),要我想想复杂度更低的算法。我想的是在遍历的时候给链表项做标记,如果遍历到某一链表项有标记,则链表存在环。于是问他能不能给链表项内容加入一个项目,他说不能修改链表。然后我就懵逼了……

然后面试官让我谈了谈简历上参与的项目。讲了讲具体做了哪些工作。先扯了扯同袍的UWP应用,以及两个用WPF开发的小程序,但是感觉他不怎么感兴趣的样子。于是他问我简历上的项目:一个是python的爬虫项目,另一个是安卓的项目。说安卓项目的时候,我有意表现出了一点对某老师的不满,正好他问我这么一个问题:如果你是管理者,你会怎么管理这个团队?那……软件工程的内容就可以随便扯扯了。既然说到了安卓,他问了我这么一个问题:安卓开发里最重要的四个部分是什么?以前好像见过这个问题,但是不记得答案了……先回答了个Activity,Intent,再乱说了个Fragment,最后他提醒我了Service。他说答案应该是Activity,Intent,Service和Broadcast Receiver(晕根本没听说过……)。再问了问Activity和Service的区别。我对这种题最无感了,只能告诉他Activity在前台,Service在后台。应该还有很多别的区别。

这期间他还问了问我的熟悉的语言,简历上写的熟悉C/C++/Java,用过C#和Swift。于是我就谦虚的说C++的高级功能不会,C还可以,Java写的也比较多。他本以为我用Swift写过iPhone的应用,于是我自嘲说没有iPhone,所以没写过;只写过Mac OS X上的应用。

在他问我了一堆关于开发的问题之后,我反问了一句,MSRA也有开发安卓的项目吗?他说,在MSRA,什么人都有。(这个逼装的好)

嗯,大概就问了这么些问题吧。之后他问我还有没有什么问题。处于懵逼状态的我就先问问他们组的信息吧。于是他介绍了他们组,系统与计算组。一半的人做云计算,一半的人做移动计算,他是做移动计算的。怪不得他懂安卓开发。他说准备要我们做定位的相关应用,于是我表现出了极大兴趣:)。顺便问了他要做什么端的开发,他说优先安卓,然后iOS,我反问WP呢→_→他说WP用的人少就不考虑了(哦……)

然后……他就要我回去等通知了……整个面试过程估计没到一个小时。

然而最后还是没过……