- 相關推薦
微軟面試雜談
(摘自《編程之美微軟技術面試心得》)
背景
每年從金秋九月起,校園里的廣告欄中、BBS上的招聘信息就逐漸多了起來。小飛是一名普通高校的應屆計算機碩士畢業生,他勤奮好學、成績中上,愛好廣泛。他看到身邊的同學都在準備精美的簡歷,參加各種各樣的招聘會,筆試、面試,他也坐不住了。他在BBS上看了各式各樣的“面經”,也擠過招聘會上的人潮,他長嘆:“行路難,行路難,好工作,今安在?”
小飛從網上了解到了有關招聘的各種術語,他整理了一個列表:
名詞
解釋
面經
面試的經歷。
默拒
投了簡歷,進行了面試,但是公司從此再也沒有消息,詢問也不回答。
Offer
公司給學生發的入職邀請。
群毆
通常指一群人一起參加面試,一般以多對多的形式同時進行,最后總是會有人被不幸淘汰,這一過程就叫做“群毆”。
聽霸
凡校內招聘演講會都出席旁聽的。
投霸
凡公司招人都投簡歷的。
筆霸
凡投出簡歷都能得到筆試機會的。
面霸
凡參加筆試都有面試通知的。
巨無霸
在招聘過程屢屢被拒、機會全無的,江湖人稱“巨無霸”!
霸王面
“霸王面”指沒有獲得面試資格,卻主動找用人單位,要求面試的人,源自吃飯不給錢的“霸王餐”,即“沒機會面,創造機會也要面”。
小飛獲得了一個在微軟亞洲研究院實習的機會,在工作中認識了一位有豐富招聘經驗的研發經理。他對經理進行了非正式的采訪,希望能得到第一手的“內幕”消息。下面就是小飛整理出來的問答。小飛的問題用Q來標注;經理的回答用A標注。
典型面試
備注:在本文中,應聘者(英文為:candidate, interviewee)指應聘公司職位的學生,或其他社會人士;面試者(英文為:interviewer)指公司里進行招聘和面試的人員。
Q:經理,您好。我就開門見山,您能否分享一下當年您第一次去面試的故事?
A:好,大學畢業后,我進入了學!爱a業辦”開的公司。有一天,一家美國公司(我們姑且叫它H公司)要來招人,這是我的第一次面試。那個公司的代表和我寒暄之后,遞給我一道題目,題目大意是“寫一個函數,返回一個數組中所有元素被第一個元素除的結果”。我當時還問了一些問題,以確保理解無誤,所謂 clarification是也。那位面試者簡單地解釋了一下,然后就在電腦上敲敲打打,也不理我了。我想這也不難,如何能顯示我的功力呢?于是我就把循環倒著寫 for (i=n; i>=0; i--),因為我當時看到一本Unix書上是這么寫的。
代碼大概是這樣的:
void DivArray(int * pArray, int size)
{
for (int i = size-1; i >= 0; i--)
{
pArray /= pArray[0];
}
}
寫完之后,他看了看就問我,你為什么要這么寫循環?如果不這么寫可以么?我說,也可以呀。他問了兩遍,如果正著寫循環會出現什么問題。我想,能有啥問題?就把循環正著寫。噢,原來陷阱在這里!你知道這個陷阱是什么嗎?
Q:讓我想一想,知道了,如果循環從數組的第一個元素開始,并且不用其他變量的話,在循環的第一步,第一個元素就變成了1,然后再用它去除以其他元素,就不符合題目要求了。
A:對,同時還有另一個陷阱看看你是否會檢查除數為零的情況,以及對參數的檢查,等等。
Q:這不是很簡單么?一會兒就寫完了。
A: 面試題大多數不難,但是通過觀察應聘者寫程序的實際過程,面試者可以看出應聘者的思維、分析、編程能力。面試者一般還會有后面幾招留著。比如,如果你要測試剛才寫的這個函數,你的測試用例有多少?或者改變一些條件,能否做得出來?
Q:很多人說,面試是一個不公平的游戲,因為信息不對稱。比如:面試者知道問題的答案,而應聘者不知道,面試者知道今年公司要招幾個人,而應聘者不知道。
A:但是,應聘者手頭有幾個Offer,面試者也不知道。應聘者是否喜歡公司提供的職位和薪酬,面試者也不知道。一方面,應聘者在“求”職,另一方面,面試者也在“求”才。面試也是一個增進雙方互相了解的有效途徑。
既然扯到了“信息不對稱”,我再講一個我的故事,當年H公司來我校面試的時候,我對H公司的了解僅限于H公司捐贈給我們計算機系的一個有些過時的小型機系統。我想,這個H公司是不是還有一些新東西?那時候還沒有互聯網,于是我就托人借了幾本原版的Byte雜志來看,這是很厚的一本雜志,非常多的廣告,看了半天,夾在雜志中的小廣告掉了一地。我只看到雜志對H公司新出的一個桌面管理軟件“NewWave”的評價,我琢磨了半天,大概搞懂了這是一個什么東西,市場上還有什么競爭對手,等等。
過了兩天,面試開始了,對方端坐在沙發里問“你對我們H公司有何了解?”我先說了H公司的小型機系統,然后說,“By the way,我還了解了NewWave”。于是我把看到的東西復述了一下。沒想到對方坐直了身子,說這個NewWave就是他曾經領導的項目。于是我就根據雜志上的描述問,“您怎么看某某競爭產品?”他很興奮地跟我談了NewWave 是如何的領先,云云。后來我們又聊了不少相關的東西。
最后所有人面試結束之后,我們的領導說,美方覺得我很突出,知道不少東西,包括NewWave,口語也很好。領導就要求我給所有人都介紹一下 NewWave,我只好把看到的東西又復述了一次。不久,H公司過來面試的另一個經理不解地對我們領導說,為什么你們這么多人知道NewWave?
前 不久,我在面試的時候問一位同學,“你對微軟亞洲研究院有什么了解?”他說,“沒啥了解,昨天打電話叫我來面試,我就來了……”對于這樣的同學,信息的確是非常不對稱,那他吃虧也是難免的了。還有一位在面試中發揮得很不好的同學跟我說,他特地沒有做任何準備,因為他想顯示他的“raw talent”……
Q:關于Test(測試)的職位,有沒有一些典型的題目呢?
A:有哇,典型的題目如給你一支筆,讓你說說你如何測試據說要測試12個方面;再比如判斷一個三角形的特性(直角、鈍角、銳角、等腰)據說有20多個測試用例,這是要考察大家思考問題的全面程度和邏輯分析能力(測試用例見4.8節“三角形測試用例”)。
Q:網上有些非常流行的問題,都號稱是從大公司流傳出去的,是真的么?
A:對,是有一些題目比較常見,例如“下水道的井蓋為什么是圓的”,還有一個問題一度非常流行,據說早期面試PM(Program Manager程序經理)職位的應聘者大多曾碰到這個題目:
房間里有三盞燈,屋外有三個開關,分別控制這三盞燈,只有進入房間,才能看到哪一個電燈是亮的。請問如何只進入房間一次,就能指明哪一個開關控制哪一個燈?
傳說在晚上,微軟一些會議室的燈忽明忽滅,那就是一些還沒有搞懂的同事們在實地鉆研。
Q:我大概了解了Dev/PM/Test 這三種工作的典型面試題,那么這些題目的答案別人都知道了,還怎么面試呢?
A: 對,會有不少題目流傳出去,這本來無妨。但是一些人知道答案之后,就開始背誦,或者原封不動地拿它去面試應聘者,忘了“知道答案”和“能做一個好員工”的關系。大家都知道了答案,就能做一個好的開發人員、項目經理,或者銷售經理么?一個極端情況會是:公司里每一個人都知道哪盞燈是由哪一個開關控制的,如何 測試三角形的類別等,但是這個公司真能從此開發出更好的軟件么?
一句話:關鍵不在于答案,而在于思考問題的方法,這也是我們沒有“題庫”的原因。
【微軟面試雜談】相關文章:
招聘、面試雜談07-31
招聘與面試雜談08-12
微軟面試--“車輪戰”07-31
微軟面試題目07-31
微軟面試算法題08-09
面試者頭疼的微軟試題從哪來面試技巧07-31
微軟面試試題大家談07-31
微軟面試題目及答案08-04
微軟公司面試問題——頭腦07-31
微軟公司筆試+面試題08-08