计算机学院去微软的大牛的面试经验

好厉害,向他学习,以下是大牛的原文:

LZ是今年四月份毕业的计算机硕士,去年可能是LZ这短暂人生中经历过的最忙碌最辛苦的一年。这一年里收获了很多,也有很多感悟。一直也希望把这些经历感悟记录下来,分享给有需要的学弟学妹们。我想假如我之前能得到更多前辈经验的分享,也许我能避免一些弯路。下面我对我的求职经历简要回忆一下,各个公司的求职时间可能有交叉。


WAP
这是一家日本公司做ERP的,全称应该是叫Works Application。我投递这家公司的时候刚上研二,也就是14年秋季的时候。当时在论坛上看到这个公司的招聘帖子,薪酬直接写在了招聘细则里,被它的高薪吸引(650W日元,14年的时候那个薪水确实很吸引人)。同时这个公司的offer可以保留两年,所以假如我当时(14年秋季)拿到offer,16年毕业时那个offer依然是有效。于是,我向这家公司投递了简历。
投递之后,很快会收到两道算法题,任选一道解完之后再发回去,它会对你的解法进行检测,假如没有bug的话,就会通知你到现场去面试了。我记得当时是一道c++的题和一道java的题,并不是很难,算是比较基础的那种。而且时间很宽松,会给你几天的时间。
没过几天,就接到现场面试的邀请。这个公司的研发中心在上海,因此面试官是从上海飞过来花两天的时间面试北京的候选人。当时的面试地点是在北邮附近的一家酒店,离学校很近。面试官都是日本人,因此面试交流都用英语。面试写代码是在笔记本上,你的屏幕会共享到面试官的电脑屏幕上,因此你的整个编码过程,面试官都在观察。


第一面是一个年轻的男工程师,稍微寒暄了两句,就出了一道算法题,并放了一个倒计时钟在旁边,告诉我有15分钟的时候完成编码、测试。开发环境是ubuntu,IDE是codeblocks,当然用vim也行(LZ当时用的vim)。由于这是LZ的第一次求职面试,当时还是挺紧张的,写代码的时候思路也不是特别清晰,不过所幸在15分钟内还是完成了编码测试。然后面试官出了一些测试用例,来测试我的代码。紧接着,面试官在刚才问题的基础上做了一些修改,加大了难度,重新计时。这个时候我已经不是特别紧张了,很快就写完了代码,并设计了几个测试用例进行测试。我把代码提交给了面试官,面试官也觉得没有什么问题。然后,面试官进一步对问题进行了升级,还是15分钟计时。最后变成了一个简单的动态规划问题,在纸上画完状态转移,很快就写完了代码。面试官做了简单的测试,也觉得没什么问题。这时候第一面差不多也就结束了,40分钟左右,3道不算难的算法题。


第一面完了之后,被叫到另一个屋子完成一份测验试卷,好像也有时间限制,都是一些数学题(概率题比较多)。不过我还没有做完,就被叫出去参加第二面。第二轮面试官的级别比第一轮要高,流程还是一样,一个算法题,然后15分钟计时。是一个求公共子串的问题,我看一共才15分钟应该不会要求我写KMP,于是我就写了一个暴利解法。解完测试过了之后,面试官升级了一下问题,难度比之前提高了一些,但还是控制在了15分钟可以写完的程度。写完之后,面试官做了一些测试。


这个公司招聘效率很高,面试通过之后工作人员带着我来到另一个屋子,公司的一个高管会跟你进行一些简单的交流,比如职业的规划等等。然后现场就会把纸质的offer发给你,在两年之内这个offer都是有效的。工作地点是在上海、东京或者新加坡。不过第一年是要待在上海的。
感觉这个公司面试的题的难度一般,只是对速度会有比较高的要求。做的产品也更偏向传统行业,跟互联网并不是特别紧密。


Google
找了一个大我很多届的学长帮我内推了google,免去了参加线上笔试的环节。其实那个学长并不认识我,我只是在linkedin上搜到了他。不过学长还是很热心,内推了我的简历。但内推也只是能保证hr能看到你的简历,能不能拿到面试机会还是hr说了算。幸运的是,内推没多久,hr就帮我安排了电话面试。面试时间是在早晨7点,因此应该是美国总部那边的面试官。
电话面试当天很紧张,因为从来没有经历过电话面试,而且还有可能是英文的电话面试。因为面试时间太早,因此不方便在宿舍面试,我早早就跑去了实验室。编码是在google doc上完成(需要翻 墙),面试开始前,我的翻 墙软件突然不好使了,弄得我好紧张。很准时的就接到了美国那边打过来的电话,面试官是个中国人,可能是hr特意安排了中文的电话面试吧。简单寒暄了几句之后,面试官基于我以前做过的一个项目出了一个系统设计题,和面试官来回讨论了好几种设计方案,每种方案的优缺点。讨论了大概20分钟,总算得出了一个比较满意的设计方案。紧接着面试官出了一道算法题,我很快给出了一个解法,但不是最优的。然后面试官给了一点提示,感叹这个题确实非常巧妙,很快写完了代码,面试官也觉得代码没有什么问题。这时候电话面试差不多就结束了,面试官似乎还比较满意。
Google效率很高,没过几个小时就接到hr电话准备安排现场面试了。现场面试是先面两轮,如果表现不错,会几天之后再安排两轮。这四轮都表现不错的话,会把材料报到总部的hc(hire committee),然后会决定有没有offer。
现场面试那天,早早来到了google 北京的office,这也是第一次参观google的office,感觉装饰也是挺有风格的。面试官都是从总部飞过来的,可能等面完这一批校招的候选人之后,再回总部吧。


第一面的面试官是96级清华的毕业生,在youtube部门工作。寒暄的时候都说的中文,面试开始之后就必须用英语了。面试时会发给你一台笔记本,然后在google doc上编码。面试官在google doc上敲了一段c++代码,然后让我在里面挑错。没想到还有这种面试形式,也有可能作为热身环节。我糊里糊涂说完几点之后,面试官也没做什么评价。然后出了一道算法题,是leetcode上的原题,并不是很难,但有一些比较巧妙的细节。当时我也比较紧张,思路不是特别清晰,总算是磕磕绊绊写完了代码。然后和面试官讨论了一下测试用例的设计,时间差不多就到了。


第二面也是一个中国人,在google里做开源项目。上来什么也没说,直接出了一道题。解法并不是很难,但是代码写起来稍微有一些复杂。先跟面试官描述了一下解法,面试官表示可行,面完一面之后状态变好了一些,很快写完了代码,然后和面试官讨论了测试用例。然后面试官紧接着出了第二道题,有点类似于一个脑筋急转弯,经过几分钟的讨论后,发现了规律。代码很简单,很快就写完了,然后设计了几个测试用例。
两面结束后,当天的面试就结束了,本来还以为能蹭一顿午饭吃,结果直接就被送出来了。Google的反馈很快,当天下午就接到hr的电话,说前两轮面试表现不错,马上安排了第三天后面的两轮面试。


第三面是个白人小哥,在google做search,可能不是美国人,因为英语听起来稍微有点难懂。上来节奏很快,什么都没说直接出了一道题。看起来挺简单的,然后我犯了面试中的大忌,使用了题目中没有的假设,并且十分着急就开始编码。等到我代码快写完时,才发现这个问题。然后赶紧跟面试官确认,发现确实自己的假设有误。我想这会我给面试官的印象已经不太好了,后来我用比较复杂的解法解决了这个问题。现在看来这个问题其实挺简单的,但不知道为什么当时没有想到更简单的方法,可能就是脑子卡壳了吧。不过面试官不动声色,所以在当时我并不知道我给出来的解法其实是不够好的。然后面试官讲问题升级到了多机环境中,和面试官讨论了很久,总算找到了一个解决方案。这个时候差不多还剩15分钟,面试官又出了一道题,并不难,但我又给出了一个不是最优的解法。
在当时,我感觉这一轮面试应该还行,因为出的三个问题都解出来了。但是现在回想起来,其实整个过程跟面试官的互动都没有做的很好,还犯了不少的错误。
第四面是个中国人,看起来比较年长了。让我首先做了一下自我介绍,前面三面都没有让我做过自我介绍。完了之后出了一道算法题,我很快给出了一个解法,也写完了代码。但是面试官让我对内存进行优化,我提出了很多种方案,到最后也没有想出让他满意的方案。其实现在想起来还挺可惜的,可能还是面试那天状态不算特别好吧,思维有点卡壳。
面试完了没几天,就接到hr的电话,面试不太理想,就不走后续流程了。现在想想确实还是可以做的更好吧,之后从其他候选人那获得的信息来看,google去年在大陆的招聘名额确实少了很多,很多通过了面试的人,最后也没有拿到offer。


微软
微软可能算是现在唯一在中国有大规模招聘的美国IT巨头了,每年三月份左右,微软会启动面向应届生的预科生计划。面试通过之后就算是进入校招的绿色通道了吧,可以更早的拿到offer。去年报名之后,先参加了一场线上的笔试。四道算法题,笔试表现不错的会被邀请参加面试。我当时做了240分,估计也就中等水平吧。
笔试完了一两周之后,接到现场面试的通知。第一面的面试官看着挺年轻的,估计也是刚毕业没几年。聊了几句做过的项目之后,出了一道算法题。很经典的一个问题,不是很难,很快写出了代码。然后面试官做了一下升级,加大了难度,依然是个很经典的问题,不是很难。写完这个之后,面试官又升级了难度,问题变得复杂了不少。时间已经不够写代码了,所以只讨论了一下思路,这过程中面试官也给了一些提示,才得到比较满意的解法。
第二面是个帅气的男工程师,简单聊了一下项目。出了一个带实际应用场景的问题,要求计算出需要多少台机器,每台机器的使用内存等等。最后在纸上写了核心算法的代码。感觉问题还挺新颖的,可能是他们实际工作中曾今遇到的问题吧。
第三面是个中年工程师,感觉应该级别挺高的。上来什么都没说,就出了一道算法题,现在想起来都觉得这道题确实很巧妙,代码很短,但是有很多需要处理的细节。确实很能考验面试者的思维和代码能力。在尝试了很多种解法后,终于找到了满意的解法。然后写代码花了很多时间。
面完之后,还没回到学校就接到了微软的电话,说面试表现不错。之后又和一个部门的高管面了一面,这一面比较简单,没问太多技术上的问题,就大概聊了聊他感兴趣的话题。
随着google在中国的缩招,facebook在中国的停招,所以有很多想翻墙去美帝的应届生会直接申请微软美国。现在回过头来看,再来一次的话,我也会尝试直接申请微软美国吧。


百度
我一个高中同学在百度网页搜索部的rank组实习,他觉得这个组不错,正好有内推的机会,就让我也去试试。每次收到百度hr的邮件差不多都快半夜12点了,而且面试安排在了周末,看来BAT的工作强度真是名不虚传。
第一面是个操着东北口音的男工程师,感觉很亲切。上来聊了聊项目,让我推导SVM算法。当时我已经决定不找与机器学习相关的工作了,所以对这些东西没有做任何准备,于是我直接跟他说我已经忘了。然后出了几个很基础的算法让我写(floyd等等),之后从他们的实际工作中抽象了一个问题,给出了一个算法,分析了一下复杂度。最后面试官出了一系列的概率问题,最后一个概率问题一直到面试结束我都没有算出来。这一面持续了一个多小时,感觉可能是面试官忘记控制时间了。
第二面是一个比较高冷的男工程师,不怎么说话,没有第一个面试官亲切。上来聊了聊项目,依然让我推导SVM,我还是告诉他我已经忘了。然后出了几个很基本的算法,类似实现strcpy,实现堆排序等等。
两面面完,技术面差不多就结束了。hr(那个hr好漂亮~)带着我们到房间里面休息,假如技术面试通过就会还有一轮部门经理的面试。过了一会儿,hr过来通知我去参加第三轮面试。面试官是部门的女经理,感觉浑身散发着霸道女总裁的气质,弄得我有点紧张。上来问了一个技术问题,在百度上输入关键字时,它会弹出相关热门的搜索选项。面试官让我设计实现这个功能,我就开始往多台机器、节省内存、快速搜索这些方面上想,结果这些好像都不是她想要的。她让我之后再想想,我也不知道她关注的到底是什么。问完这个技术问题之后,就开始聊一些职业的规划啊,遇到的困难啊。最尴尬的是我记得她问我人生中遇到的最大的困难是什么。我说以前学C语言的时候,经常报奇奇怪怪的编译错误,不知道是什么意思,觉得好困难。然后她瞪大了眼睛说,你长这么大,最大的困难就是几个C的编译错误吗?当时觉得好尴尬~。
过了两三天,接到百度hr的电话,说通过了面试。之后过了些天,第一面的面试官加了我的微信,跟我大概讲了一下他们组的情况。大概十点钟下班,但描述的前景非常好,不过我也不知道可不可信。毕竟时代不一样了,他4、5年前加入百度和我现在加入百度可能完全是两回事情了。


亚马逊
本科的一个同学(读研去了外校)在亚马逊实习,于是校招的时候找他帮忙内推了一下。其实我还让在美国的本科同学内推了亚马逊总部,但是没有任何回复。亚马逊中国这边的内推好像没有什么用,依然要做在线的笔试。在线笔试是两道算法题,一个小时左右。两道题都非常简单,差不多半个小时就能做完。
没过多久,收到了去现场面试的邮件,但一个很厉害的本科同学却没有收到,所以不知道这个笔试到底是怎么筛人的。亚马逊一共只有两面,面试轮数这么少,感觉并不能判定面试者的水平。
第一面面试官有两个人,一个技术经理和一个招聘经理。技术经理上来就出了一道算法题,一道比较简单的动态规划题,在纸上写完了代码,然后模拟了几个测试用例。面试官也感觉没有什么问题。然后技术经理开始问面向对象编程的问题了,这是亚马逊面试的特色。我拿了一个之前做的项目来介绍一种设计模式,讲完之后发现我对那种设计模式的理解好像是错的,当时感觉好尴尬。技术经理问完之后,招聘经理做了一下英文测试,问了一下其他offer的进度这些问题。
第二面是技术面,我的面试官是中国人,有的碰到的是外国人。上来让我做自我介绍,说说自己的亮点。然后我尴尬的发现没有什么可说的亮点,我就草草说了两句就结束了。面试官感觉也挺失望的,然后出了一个以实际业务为背景的算法题。乍看起来挺简单的,我很快说了一个解法。但是面试官并不满意,让我持续优化。但当时我感觉已经是最优解法了,所以没有什么头绪。在后来的持续讨论中,终于找到了可优化的点,然后写完了代码。这时感叹这真是一道好的面试题,并不是特别难,却让面试者有茅塞顿开的感觉。在整个讨论的过程中,面试官似乎对我的印象从刚开始的有点失望,慢慢有了转变。


面试结束后过了挺久,接到hr的电话说通过了面试。由于当时已经不准备去亚马逊了,所以也没有问offer的细节。听其他同学说亚马逊的股票和签字费都给的挺给力的,户口由于今年政策的原因估计不能像以前几年那么给力了。而且貌似亚马逊transfer去美帝很容易,这条貌似也是他们去年校招的卖点之一。


Indeed
Indeed是全球最大的求职搜索引擎,总部在美国,前两年在东京新开了office,因此这两年开始在大陆招人去东京工作。薪资非常丰厚,在东京可能仅次于Google。我知道这个信息,一次是在WAP组织的聚餐上,一个北大的博士向我推荐了这个公司;另一次是在清华读硕士的本科同学在夏季的时候拿到这个公司的offer,然后推荐我去参加这个公司的秋季招聘。
Indeed有两场在线测试,每场都是四道编程题,貌似只要有一场做出三道题以上,就算通过了笔试。但我也有同学做出了三道题,却没有接到后续的通知。笔试完了之后不久,就接到了skype电话面试的通知。skype面试流程比较奇怪,要求你拿着电脑到一个指定的酒店去参加,在东京的面试官会通过skype面试你。skype面试官是一个白人小哥,英语没有口音,听起来很舒服。之前同学跟我说skype面试的题都特别简单,主要是筛掉英语不行的。结果小哥出了一道很难的题,再加上网络信号也不是特别好,磕磕绊绊的解完之后,小哥还升级了问题,加大了难度,我稀里糊涂说了几句之后,时间就到了。skype面完之后,我感觉听沮丧的,估计是没戏了。
没想到过了两天,收到邮件说通过了skype面试,邀请去东京参加现场面试。以前从没去过日本,有机会免费去玩一趟,还挺兴奋的。 秋季这一批招聘,大陆差不多有30个人到东京去现场面试。
弄完签证材料,12月中旬到了东京。那几天正是北京雾霾最严重的时候,当抵达东京看到蓝天的时候真是觉得到了另一个世界。一行人到了酒店,我跟一个清华本科生住在一个房间里。天色还早,第二天才是面试所以大家决定出去逛逛。有的人去了浅草,我跟室友就决定在附近逛逛。走在东京的小巷子里,有种日本动漫的既视感。
第二天早早来到indeed在东京的office,一共安排了三轮面试。三轮面试都是白人小哥,面试官的水平都非常高,而且面试风格非常统一。都是从一个简单的问题出发,然后讨论越来越深入,难度越来越高。整轮面试感觉一气呵成,而不像有些面试问很多很零散的问题,而不知道面试的主题是什么。
面试完了之后,hr安排了上一届从大陆应聘过来的三四个工程师和我们一起吃午餐,有什么问题的话可以问问,感觉他们对在东京的生活还挺满意的。
吃完饭之后,hr带我们参观了公司的工作环境,确实如他们宣传的一样,工作环境非常棒。好几个小伙伴本来只是想过来旅游的,参观完了之后都挺动心的。
完事之后,时间还早,我们一行人就去了涩谷买药妆,然后去逛了逛东京塔。
回国之后没几天,接到hr的电话说面试通过了,但是通过面试的人数比他们要招的人数多,所以只能先等着。


Booking
booking类似于是外国的携程,也是WAP上认识的一个北大女博士告诉我这个公司的招聘信息的。工作地点在阿姆斯特丹,报这个公司的一个重要原因是想面试的时候去阿姆斯特丹玩一趟。
在网上投递完简历之后,很快就收到了在线笔试的链接。时间不固定,只要在45分钟内完成就行了。四道编程题,都很简单。做完笔试没过几天,就收到邮件要进行hr的电话面试。
hr电话面试约了北京时间的晚上9点,很准时接到了电话。hr是来自西雅图的小哥,所以英语没什么口音。简单聊了聊背景,然后向我介绍了一下阿姆斯特丹,类似租房要花多少钱这种事情。然后向我介绍了一下我申请的这个项目。
打完电话没多久,就收到了预约电话面试的邮件。电话面试在一个类似google doc的平台上进行的,面试官有两个人,根据他们的业务背景出了一个算法题,不难,很快就写完了。然后对问题进行了相应的升级,加大了难度。面试大概持续了45分钟,问的问题都不是很难。
面试完了没多久,就收到了去阿姆斯特丹面试的邀请,可惜由于办荷兰签证和办日本签证的时间发生了冲突,所以就只能作罢。


不知不觉,竟然写了这么多了。回顾自己找工作的经历,发现还是有不少遗憾。这些遗憾一方面是自己实力不济,另一方面也是由于自己视野的局限性。就我自身的感觉而言,交大学生与清北、中科院、北邮这些计算机强校的学生相比最大的差距不在专业技能上,而在于视野。有太多的信息,太多好的机会我们都不知道。选择走怎么的路是每个人自己的选择,可问题在于有好多可以走的路我们却并不知道。


毕业之后的第一份工作是一件很重要的事情,可毕竟也不是天大的事情。不管遗憾与否,我已经走过了这一步。希望我的经验,能对学弟学妹有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值