我的微软亚洲研究院实习生面试经历

来到MSRA实习快2个月了,有很多收获,但总是懒得写,今天有点时间就先写一下我的面试过程,分享一点个人的经验,希望能对低年级的同学有点帮助。

首先是投简历。想去MS或者IBM、GOOGLE实习,英文简历是必须的,不用太过华丽,简单明了最好。我的英文简历就1页,中文简历2页,里面没有照片,非常简单,重点突出我的编程能力和项目经验上。这里要注意一点,除非觉得某一方面别人肯定问不倒你,不然尽量不要写精通XXX(特别是别写精通 C++)。然后直接在MSRA的网站上投的:http://www.msra.cn/recruitment/InternRecruitment.aspx  投MSRA还需要在他的网站上下一个申请表,填完一并发过去。MSRA回信很快,我投了2天还是3天就给我电话了(微软工程院好像过了1、2周才给我回邮件预约面试的)。

然后就是电话面试。投完简历的第2天还是第3天MSRA的研究员(就是我现在的mentor)就给我打电话了,想给我做一个电话面试。当时我还在发烧,躺在床上休息,本来很没精神的,看见手机是010开头的号码,马上有精神了。问的问题都很基础,只要基本功扎实一些的同学基本上都能答上来(面试的题目写在最后)。第一轮面试大概1个小时,然后他说以后还会有其他人再给我做几次面试,结果不到半小时电话又打来了,另一个人开始给我进行第二轮电话面试。然后又过了大概1个多小时,又接到了第三轮电话面试。隔了一天,接到了第四轮面试(最后一轮面试)。全部都是技术面,除了基础问题就是问一些关于我项目的问题。感觉他们问的问题都比较即兴,当我回答完一个以后,回答的过程中可能又说到了一些技术点,然后他们就会问这个技术点的问题。

     最后就是给实习offer。在最后一面(第四面)完了以后,又过了1天,突然又接到我现在mentor的电话,说想让我过来实习,但是查系统时发现我在1 个月前投了微软工程院的实习生职位,问如果两边都要我,我想去哪边。我当然很干脆的回答是去MSRA了(其实对于我或者大多数人来说,MS的哪要就去哪,还没牛到选MS的地步)。然后他说一会儿会有HR给我电话和我确认。过了半小时,先是接到了MS ATC的HR电话,问我想去哪边(她的口气希望我去MS ATC),让我考虑考虑,但是我还是跟她说我想去MSRA。后来又接到了MSRA的HR电话,跟她确定我想去MSRA实习的意思。最后又过了一天,MSRA的HR才给我电话,口头给我实习offer的。在这其中,我之前投的INTEL研发实习也给我进行了一次电话面试,后来在收到MSRA实习 offer以后,我就拒绝了他们的第二次面试。

    总结一下,从时间上,MSRA这边最快,包括投简历到口头给我offer总共也就一周。INTEL其次。最慢的是MS ATC,从投简历到电话面试大概经过了1个月。但是MS ATC最正式,在电话面试之前一周,HR给我打电话预约时间,并给我发了一封面试时间表的邮件。

    下面是我还能记得的一些面试题,都很基础,主要考察了基本功,涉及面很随意,我觉得他们是想到什么问什么,从你回答过程中了解你的思维过程(后来我和 mentor聊时他也这么说,很多题并没有正确答案,他们只是想看看我的思维过程),所以大家在思考的时候最好嘴也不要停,把你的思考过程说出来。并提醒一下低年级的同学,基本功很重要,平时学的时候就要学牢。

    最后鼓励一下大家,其实来MSRA实习没有想象中的这么难,我觉得周围的实习生里面有很多牛人,但是很一般的人也有,关键是大家要有自信。我周围有很多其他学校大四的在这边做毕设,所以快到大四的同学可以提前做做准备,争取来这边做毕设,不管是以后继续读研还是工作,都会有很大的收获。研一上完课的并且以后想直接工作的同学也可以早点试试,有这边的实习经历对以后找工作也有一定加分。

   想出来实习的同学要早做打算,经常关注一些招聘网站和这些大公司网站,一有消息赶快投简历。


面试题:(我同时投了微软工程院、微软亚洲研究院、INTEL研发,下面是他们问的面试题)
1. 说一下C++中的多态,最好举一些例子。
2. C++中虚函数和普通函数有什么不同(也要求举例子)。
3. 进程间通信你知道哪几种方法?
4. 举例说一下死锁的条件?
5. 讲一下windows消息传递机制?
6. 讲一下工厂方法的好处?(不是如何实现,是好处)
7. 说一下COM组件接口的三个最基本方法(函数)?
8. 进程间同步的方法有哪些?
基础题大概是这些。
P.S.: 在面试微软工程院的时候,他们让我装live meeting,然后一边和我电话,让我直接把程序打到live meeting上面,所以问了几道具体的编程题,都比较简单:
1. 他先向我介绍了一下标准C的strtok()函数,然后让我实现(直接在live meeting里把代码打出来)。然后继续问我,如果这个程序在多线程情况下会出现什么问题?我回答以后又问,那么应该怎么解决这些问题。
2. 要求写一个程序,输入一个数n,如:n=1,程序输出:
1,2,3, ...,9
如果n=2,程序输出:
1,2,3...9
1,2,3,...98,99
如果n=3,输出:
1,2,...9
1,2,...99
1,2,...999
(不能写伪代码)

--
欢迎去我的博客看看: http://hi.baidu.com/wuxicn
软件理论教研室网站: http://www.jlu-softlab.cn/

你可能感兴趣的:(面试笔试题)