http://bbs.chinabyte.com/viewthread.php?tid=8854&extra=page%3D1
微软ATC就业之路,我的面试经验
ATC就业之路,ATC即微软授权培训中心(Microsoft Authorized Training Center),是微软的培训公司。
无论笔试还是面试,每次参加身体状态都不是很好,以至于觉得老天爷故意整我,反而激发起我的斗志。因此每次去的时候都是脑袋昏沉沉的,出来的时候反而神采奕奕。好像笔试/面试是一付良药。
不过,ATC的笔试/面试确实是我参加的最有收获的,以至于我不停的去参加其它公司的interview,看看有没有其他好玩的东西。
Background
由于ATC跟中科院离的比较近,因此中科院成为了ATC的第一个试验田,于9月2日招了当初参加ATC开放日的中科院一群学生作了第一个mini-test。可惜当初有事没有参加开放日,因此那批中没有我的名额,而我又不愿拉下架子来参加霸王笔。于是第一次机会离我而去。
祸兮福之所倚,谁也不知道当时的抉择是否正确。但是也幸好我没去参加9月2日的minitest,有机会先听取他们首次吃螃蟹的经验,而且也有机会有更多的时间准备interview。
Second Mini-test (9.27)
凭借简历上丰富的内容,很幸运的得到了参加第二次的mini-test的机会。毕竟我这两年来工程经验还不错,应付起基本算法和编写程序的笔试来还是比较轻松。(具体内容由于签了保密协议,在这里就不泄露,还是考察最基本的算法和程序风范)。
出了考场,感觉不错,应该有机会参见on-site interview了。于是就开始耐心的等待结果。其间一同学亲戚在ATC工作,于是顺便让他内部推荐了一把。双重保险下,因此我就开始继续复习算法和一些openquestion,准备interview。
First Interview (10.24)
我是10.20晚上接到ATC HR的电话,那时正好在参加IBM的宣讲会,记了日期和地点后就挂了。然后就开始准备interview。我记得那几天比较繁忙,21日早上参加了百度的网上三个小时笔试,22日早上参加了瞬联的笔试。反正以战养战。
还好,10.23日实验室有人先去参见ATC的interview,晚上询问情况,发现跟第一波的interview完全不一样,居然大部分是用english面的。于是晚上回宿舍拼命复习english。
要求8:45到,因此早上8点不到就起来了,去食堂吃了早饭,然后骑车去了sigma大厦,8:30到的,已经有三个人在等待了。然后就坐在那等,随后又来了一个北邮的,然后就跟他聊了会。
9点准时开始interview,上午每个人有三轮面试,一轮一个小时,每一轮的interviewer都不同,可能一个也可能两个,幸好我三轮都只有一个interviewer。每一轮面试都会去interviewer的办公室。然后由上个interviewer领给下一个interviewer。
第一轮是一个中国人面的,一开始先让我用英语介绍,听到我说作的项目已经在线跑了很久,就问我如何保证内存不泄露。我就说尽量少用new和delete,自己写个内存管理模块,提供API让其他模块调用。尽可能的写多点测试用例,来测试其是否有内存泄露,尽可能的长时间跑,测试其是否有内存泄露。他就问怎么测试,如何测试。我说用crtdbg提供的API。他就继续问release下如何测试。我就只能老老实实的说使用其他工具,windows下使用purify,linux下使用Valgrind。这才作罢。然后问我对c和c++哪个熟,我说c++。然后就开始问了许多c++的基本问题。感觉都是effective c++,more effective c++,inside the C++ object model, c++ templete这些书上的内容。然后又问了些设计模式和线程方面的问题。接着有让我在纸上写了在o(n)复杂度对字符串中的字符按字典顺序排序。比较容易,用一个数组保存每个字符出现次数,最后逐一根据其次数打印出来即可,很快就在纸上写出来了,给他看,结果他扫了一眼说能不能编译通过,我再一看,居然最后没有写return语句,暴汗。补上后,他又问了句,字符串如果是unicode怎么办。我一看,我写的函数没办法解决,于是只能说我会按照windows提供的api一样,对这种宽字符的字符串再写一个专门处理宽字符的函数,只不过换成用65536个字节数组来保存出现次数。他又问如果字符串长度比较少的话,那么效率就不是很高,让我给出改进算法。我想了想,只能说用桶排序,桶个数少些。然后又出了个设计题,水彩笔和颜色,让我根据在用户最好使用条件下给出如何设计类的属性、类与类之间的关系。结果没讨论完就超过1个小时了,很郁闷的就结束第一面。ps:
后来回来后看了一下我的简历,暴汗,居然写了那么多东西,难怪被问那些BT的问题,自作孽啊。(简历很早就在joinms上提交了,后来也无法再次查看简历,所以比较郁闷)
第二轮好像是个华裔,一开始先问了下用没有使用.net,我说用过vs.net 2003。而且发现其中atoi函数返回结果跟linux下不太一样,他好像蛮感兴趣的,说他还不知道,让我详细说明了一下。然后就出了一道题让我做。计算GIS中多边形和圆相交的面积,我就不断地提出方法,都是数学方法,计算交点,近似圆弧之类的,说了一大桶,结果他不断地说不是数学问题,然后接着提醒计算机图像怎样表示的,多边形和圆是怎么画出来的,于是想到了像素。不同图形不同rgb表示,计算同时具有两种颜色的像素,于是问题就解决了。最后结果居然这么简单,继续郁闷。面试官就说这一轮就结束了,问我有什么要问的。我还继续沉浸在郁闷中,等和他一起出他办公室的时候,我才说被他的问题给打击了,他就开导我说当年他也没解决这个问题,还是微软其他工程师解决的,只花了几分钟。
第三轮是另外一个中国人面的。在去他办公室的他就问我前面几轮面的怎么样,我说一般般,他就安慰我说不要有包袱,要调整好自己,把自己最好的一面展现出来。于是一开始就问了一些基本问题,像为什么要去微软啊,自己能给微软带来什么啊。然后就开始问我算法方面的问题。问如何建立一个字典,用什么数据结构。然后让我使用这个数据结构写出新加一个词的函数。正好跟我实验室做的东西有点类似,于是很快就在纸上写出来了,结果给他看了后让我给几个测试用例,结果发现一个地方错误,改正之,基本没问题了。然后又接着问我只使用putchar来实现itoa,没什么难度,很快就给出了一个非递归的算法,他又让我用递归来实现。郁闷了会,在纸上写了个给他,又有问题,改正之。然后就结束了。
上午的面试就结束了,然后在一间会议室根其他几个面试者一起吃了个午饭,比较难吃,饭多菜少还没汤。大家聊了会,然后再沉默中等待结果。直到两点多,hr才过来告诉结果。告之那天我的下一轮的面试官有会议要参加,下午没有时间,过两天再通知我具体时间去面第四轮。于是就只能等待了。
Second Interview (11.1)
第四轮是我参加interview中最诡异、最离奇的一轮。
hr是10.31日晚上六点多给我打电话的,让我11.1下午两点去面。于是我就提前15分钟去了,结果到了那告知在外面等。那个时间点是我最想睡觉的时候,看看还有点时间,就闭目养神了会,结果这一等就等了好长时间,都快2点半了,还没任何人来面我,感觉很郁闷,想想确实是两点,然后给hr打了个电话,还好不是前台电话,是内部电话,不幸的是没人接。只能继续干等,终于2点半的时候hr出现了,然后面试官也出现了。
被领到面试官的房间,看了一下,好多奖牌,感觉应该是高层。后来查了一下才知道是个技术总监。
在电脑上看我简历,问得第一个question居然是:Have you anyquestions? 当场晕倒。太离奇了,先是被晾了半个多小时,现在居然一开始就问这种bt问题。于是我把所能想到的具有挑战性的问题都抛给他了,并且干脆直接用中文问的。接下来他问我英语怎样,就给了个题目让我做。题目还是蛮有意思的,这一点我很佩服ATC的面试官,能有这么多非常不错的题目。题目是三子棋,在3*3的棋盘上放了6个棋,让我说出那方会赢。我看了看,说了个结果。他说不看结果,让我给出得到结果的思路。我说了一下,他说结果是正确的,但理由不充分,说应该是**理由。然后又问我六个棋中那个棋是第六步下的,这下我反映过来了,很快就给出了结果,面试官好像也比较满意。然后说了句让我郁闷的话:this is just test your english, haveyou any questions? 继续晕倒。干脆说已经问过了。他就说这轮面试结束了。走出房间时,我问他什么时候能给我答复。他说这要看hr,可能两三天,可能两个礼拜。
于是我就郁闷的回去了。当天晚上六点多,接到hr的电话,说我被录用了。终于可以给这个诡异离奇的面试画上一个圆满的句号。
Conclusion
我感觉ATC的面试官是非常成功的,非常有经验的。他们会在面试过程中不断的鼓励和指导,这一点参加过ATC面试的都会深有感触。所以能去ATC面试对于自己的成长很有帮助。
ATC面试官看中的并不是你的结果,而是你的思路,考察你的瞬时反应力,因此面试的时候你要尽量的跟面试官沟通,他们会给你一些tips,所以不要紧张,面试是一个互相讨论的过程,把它想象成平时在实验室跟师兄老板的一场讨论就可以了。在那种氛围下,你会把你自己的潜力爆发出来。Just be yourself.
另外不要太看重结果,其实过程反而更加重要。
Postscript
ATC给人的感觉是一家很好的大公司,而且会花精力去培养一个新人,所以喜欢校园招聘。这一点确实不错,但是毕竟公司太大了,也就相应的缺少了一些灵活性。
这些天陆续收到了其他公司的offer letter。其实做出抉择还是有点难度,每家公司有每家公司的优点和缺点,选择更适合自己的才是最重要的。不能只考虑salary和公司规模大小。而是要看以后你能获得的发展机会,还要考虑家人等因素。所以最后我没有选择ATC。虽然周围人觉得我放弃ATC很可惜,但是我觉得找一个适合自己的更加重要。