微软软件工程师校招经历
当我接到微软HR电话的,说实话心里真的是很开心,因为在无数的求职者中能够选到我的简历自己感觉也是非常幸运,当然也离不开我大学就读时候的努力。和HR约好了五天后面试,我就立刻开始刷Lintcode。平时和学长、同学交流的都很多,基本上对微软的面试流程和大体思路都有比较充分的了解。根据网上的面经,微软的笔试、面试很大一部分考验算法,而且非常注重写代码的能力,所以我针对这个做了很多准备,Lintcode大概刷了2遍。
电话面试:
接到HR电话之后,HR会单独跟你商量一个电话面试的时间,并且提醒你保持通话质量的稳定。感觉还是很贴心的,我留的是学校学生中心办公室的固话。当时约的是下午2.00左右,我1.30左右就等在电话旁边了。电话大概1.55分响起(好准时),面试我的是一个普通话很标准的小哥,先问了我一些很普遍的问题,比如哪里知道的招聘信息,专业和经历之类的。然后就开始正式的问问题,问的属于比较基础那种,比如排序和一些很简单的三叉树列表之类的。感觉电话面试很大程度上属于一个筛选的过程,把那些不达标的人全部排除出去。所以大家平时基础一定要打好。基本电话面了大概20分钟左右就结束了,小哥说我不错,让我回去等通知。
面试第一轮:
通知邮件大概在三天之后收到,说我通过了电话面试,准备来公司面试。第一轮在单独的小房间的进行,第一轮的面试官好像是很技术派的那种,一开始就问我的项目经验和设计思路什么的,应该是想通过我的经验来看看我的基础和其他能力。这个部分是限时30分钟的,所以即使我和面试官聊的很欢,到了半个小时他也会拿出试卷让你做题。题目大部分都是算法题,比笔试要较难一些,但是也是蛮基础的,最重要的是细心不紧张。对于这一部分我的建议是你写完一个程序后,一定要用自己的测试用例跑一下,确保你的程序是能顺利跑完的。一定要考虑全面,不要等面试官亲自指出来你才发现错误。当面试官让你再检查一下的时候,这说明你的程序肯定是有问题的。面试的时候遇到了1道lintcode原题,和一道lintcode相似题,建议大家到lintcode多练练,把高频的题目刷个透,基本就没问题了。
面试第二轮:
第二轮面试还是技术面,这一轮的面试官主要就问我一些语言上的问题还有算法题目。开始问了我一些C语言的特点,内存分配的函数,函数出错的一些解决方案等等。然后就问C++,继承,虚函数,类,运算符重载,异常的处理等等,delete和delete[]的区别等等,还有为什么要引入这些概念。有些问题我记得以前在哪本书里看到过,所以回答的还不错。面试官之后又问了我几个技术性的问题,像是现场编写折半查找算法、singleton 模式、贪食蛇的算法实现等。然后面试官就开始找我的错误,大概说了我的程序问题和优点大概半个小时之后,叫了一个比较年轻的小哥过来(貌似是实习生),把我送出公司。
面试第三轮:
第三轮面试安排在第二天(第一天的面试结束大概晚上就给我打电话约了第二天面试的时间),这次的面试官感觉年龄偏大(其实也不是很大,大概35.6岁左右吧),比较有趣的是除了上午昨天技术性问题之外,还问了很多?类似智力问答?比如4个装满药丸的容器,其中有一个容器的药丸变质了会让质量+1.现在只称一次,怎么分辨容器的药丸变质类似的智力问题?所以感觉程序员还是要多读书啊!三面的问题偏向于实际应用吧,相比之下昨天的面试比较偏向于理论。不过有点庆幸这次没让我重新写代码,因为感觉昨天面试消耗了我的所有精力再加上晚上有些紧张没有休息好。
面试第四轮:
中午面完之后HR告诉我下午是总监面,这就意味着基本上我离进入微软只有一步之遥了吧。所以我中午特地在食堂吃完饭之后在沙发趴了一会,下午感觉精神好多了。总监穿着一件polo衫,看不太出年龄,不过感觉头发都有点白了。相比之下,总监面甚至感觉有点轻松,和我聊了聊之前做过的项目还有和老板一起做过的课题,时不时还感慨一下我们现在学习机会的丰富。最后拿出我的简历看了看就出去了,过了一会HR姐姐告诉我没问题了,总监面过了。最后总监面感觉有点没通过一样的轻松?
总结:
1、英语很重要,一定要增加你的词汇量,对专业术语要了解,并且了解相关的英文解释,因为在微软工作的每一个人都会英文,在面试的过程中,每位面试管几乎都会和你用英语说两句。所以词汇量和口语实力是很重要的!
2、注意你的算法,算法可以说是在微软的面试中层出不穷,而有的算法在实际的开发中并不常用,但是请记住这是面试,不是工作。对于算法问题,刷题是真的很有效的方法。相信大家也在网上搜索了很多面试题吧,但是说实话网上有很多鱼龙混杂的题目。我个人比较推荐的是http://www.lintcode.com,这原本也是学长推荐给我的刷题网站。它的题库还是比较全的,题目数量也很多,而且都还在一直更新中。基本上涵盖了所有IT公司面试会面到的算法题。
3、校园招聘是以做题为主的,而不是主要聊你的项目经验,并且面试都是手写代码,平时不能光看不做,这样会非常吃亏!
4、面试千万不要紧张,沉着冷静才能发挥出你的最佳水平!
5、微软和其他的上市公司的要求确实不一样,微软更注重思维、基础、以及code的严谨,最主要的是效率,也许这就是一个高效率企业最基本的要求吧!