编程之美-微软技术面试心得

2008-03-12 by 开心就好

我喜欢面试人,不喜欢被人面试,我相信大部分技术出身的朋友都与我一样的想法.但活在这个业界,不可能不过五关斩六将的参加各种面试过程.面试结束,有的人很郁闷,有的人很兴奋.当然很多时候,这都是临场发挥的实力,但其实也折射出大家的综合素质.

相信很多人都知道微软的面试过程是比较特殊的,也有很多朋友在一些媒体上读到了类似于下水道井盖为什么是圆的等等所谓的微软面试题.对于微软的面试过程产生了敬畏.微软的面试过程也被蒙上了一层面纱,让人感觉非常神秘.当然我也相信有很多朋友经历过微软的面试后,会发现其实这些面试过程并不神秘.如果你"有幸"被我面过,会发现我从来不问“北京有几个公共汽车站”或者“黄河每秒钟的流量有多少”之类问题.其实原因就是开心现在工作的部门并不是研发部门,除了要求技术能力外,还需要一些市场运作能力等.所以面试过程会更加开放一些.

与邹欣认识比较久了,在微软刚刚开始"潜力发展计划"的时候,我们在济南做试点,就曾经邀请过邹欣同志来济南进行演讲.那时候他还在总部工作.后来去美国的时候,又与邹欣聊过后来,一直建议他回国发展.最终现在邹欣在微软亚洲研究院工作.邹欣同志是一个面试老手,不知道有没有博客堂的读者也被其面过,可以写写心得了.

从邹欣拿来他回国后主编的第二本书《编程之美-微软技术面试心得》,我就开始不停的流汗,邹欣也太会"折磨"人了吧,这些题目简直堪比满清十大酷刑呀,比如第一道面试题“CPU占用率曲线听你指挥”,让面试者写一段程序,控制任务管理器当中的CPU占用率的曲线一直显示为一条直线或者正弦曲线。后来通过各种搜索引擎进行搜索,发现还真有不少朋友做出来解答,还从网上把一些朋友的解答拿到本机进行测试,特别佩服某些朋友的思考能力以及创新思路。我相信,很多朋友假如第一次有机会来微软面试,遇到的第一个问题是这样刁钻的问题,不止会流汗,可能有些人会恨不得把鼠标抡起来,砸向面试官。

CPU曲线还是那个曲线,任务管理器还是那个管理器,但出这题的朋友以及可以答出这题的朋友都需要很多的思考,往往一些细节就可以考验出这些朋友的真功夫。

我也看到过其它公司的一些面试题,比如探讨一下Java的事件机制以及C#的事件机制有什么区别?重载与重写有什么区别?使用ASP.NET 2.0中的Master以及Theme机制写一个简单的个性化网页。通过这些面试题,我们可以看到每家公司所招聘人才看中的重点,大部分IT公司招聘的就是代码工人,只要会熟练使用工具,对语法熟悉就可以了。希望招聘到的员工经过简单的培训立即可以上岗。而微软的面试题折射出来的则是微软对于基础研究的重视。

我也在日常的客户接触当中,听过很多朋友抱怨C#/.NET太简单,不像Java那样高深,其实无论是Java还是.NET,或者其它产品性的技术,都是同等的工具而已,工具会有顺手不顺手的差异,在本质上没有什么差别,关键还要看自己的基本功。由此想到了前几天邹欣所写的《Arrays.sort() and 吾欲仁则斯仁至矣》。的确,现在中国的高校教育过于急功近利了,高校毕竟不是技校或者中专,培养出来一批工具使用娴熟的技术工人,高校培养的应该是真正有创造性思维的人才。

再由此想到了Google的面试,不知道是否是由谣传谣,说Google招聘某全球VP,最终由于此候选者无法拿出自己在大学期间的成绩单而被拒。也听说过Google在国内非常看重学历(以讹传讹?),所以出来了模仿Hao123的“网站导航”或者模仿搜狗拼音的“Google拼音”。

其实面试只是一个过程,面试并不能保证所有通过面试的人都是万中挑一的高手,没有通过面试过程的朋友也不必自怨自尤,毕竟面试过程与临场发挥、专业对口甚至面试官的心情都有关系。所以,放平心态就是了。

再次向大家推荐阅读这本《编程之美-微软技术面试心得》这本书。


Comments