1. 程式人生 > >微軟亞洲研究院(MSRA)面經

微軟亞洲研究院(MSRA)面經

我最早把簡歷投給MSRA是在美國交換的時候,大概11月左右吧。不過估計是因為那時候我人也不在國內,11月也是個收實習生的淡季,沒什麼空位子,所以在美國期間他們也並沒有打國際長途聯絡我。後來1月初回國後,我就又重新上MSRA網站上看了招聘資訊,發現創新工程組新開放出了一個職位,所以我就在春節後第一個工作日給他們投了申請表和簡歷。

第一輪:簡單交流

有開放職位就是不一樣,在發出簡歷的大約一個周後我就收到了研究院打來的電話。說起來可以算是第一輪的電話面試吧。因為電話來的很突然,沒什麼準備,問什麼就答什麼,也沒有過多的緊張。

打來電話的是一個美國人,一上來就是英語,問一些基本的資訊:以前做過些什麼專案,C++掌握程度怎麼樣,讀過哪些C++的書,最欽佩C++界的什麼人啥的。這些都是小菜一碟,尤其是之前還參加過C++的大師Lippman來我們學院辦的講座,拿出來說一說或許更顯得與眾不同吧。

簡單瞭解過這些背景後,他又問了一下我願意做些什麼工作。我告訴他說,為了出國讀研,我希望能接觸一些研究性工作,不知他們組具體在做些什麼。據他介紹創新工程組是科研和工程結合的部門,扮演技術孵化的角色,可以接觸到一些最新的研究成果,也有一定量的編碼工作要完成,成果通常是有一定影響力的產品。雖然與純科研工作有些不同,不過畢竟也算是科研和工程的結合點,我便也表示有興趣參與,況且別的組在這個時候也沒有合適的職位供我候選。

聽到我仍對職位有興趣,他便繼續問我有沒有online的code sample,我猜他是想看一看平時寫程式碼的風格和質量。想到平時做的專案都在Google Code和BitBucket上託管,於是我向要了他的email地址,並表示將電話之後選一些程式碼庫地址發給他。

最後他簡單跟我確認了一下我可以工作的時間段,然後約了下一輪面試的時間。我接到這個電話是在週五下午四點多鐘,於是我便提出下週一的下午進行下一輪面試,不過應他要求改成了晚上(靈活的工作時間可見一斑啊)。他還透露說下一輪大體上會考察我的演算法、解決問題的能力,並且實際動手寫一段程式碼給他看。

第一輪的面試就這樣結束了,沒什麼特別的,只是簡單聊一聊,瞭解一些情況,約個下一輪的時間,看來下一輪才是重頭戲。

第二輪:程式設計能力

因為約到了後面的週一,我便有了一個週末可以稍作準備。因為知道要寫程式碼給他看,而且在網上搜到有人說要用一個實時現實鍵盤動作的會議軟體,我便專門在notepad++裡用C++把基本的演算法(各種排序、搜尋)和主要的資料結構(連結串列、樹、圖等)都寫了一遍。還動手實現了一些簡單的C庫函式(比如atoi(),itoa() 等)。我也又拿出演算法書簡單溫習了一下。

當然,我也上網搜了一些別人的面經。事實證明,實習生的面經其實很少,大部分都是正式員工的面經,看上去都是過五關斬六將,面試週期拖得很長,那真是體力上和腦力上的雙重摺磨。看了也沒什麼用,所以我也放平了心態,格外注意基礎知識。準備的過程並不是為了要壓到題,而是要把自己的大腦調整到一種活躍的狀態,能夠對一些常見的問題有比較快的反應,或者能夠迅速產生思路。

這輪面試因為事先約定了具體的時間,所以越是快到約定時間的時候就越是緊張。不過等到真的電話準時響起的時候,反而也就平靜了。

打來電話的仍然是上次面試的美國人,由於上次已經簡單聊過,這次便迅速進入正題。他簡單地介紹了一個C語言的庫函式的功能,同時通過email發來了函式原型、輸入、輸出,讓我來實現一下這個函式(我寫的是strtok())。其實並不像網上流傳的用什麼網路會議軟體來看你鍵盤的動作,他們大概也沒空盯著你寫這個小函式,他只是說30分鐘後再打回來,看看完成的情況。

有時間限制的程式設計總是有點讓人緊張的,一開始我也有點心慌,不過開始動手寫了也就好了。30分鐘很快過去,我也寫也很順利,他準時打回電話的時候,我便把寫好的程式碼通過email發給了他。

之後的內容便是讓我稍微解釋一下我的程式,探討這個函式的一些潛在問題,並把情景擴充套件到多執行緒,乃至並行處理。這個過程大概又持續了半個多小時,他關心的可能並不是你真的是不是回答的完全正確,只是想看看你的思路、你的知識程度、以及你能不能把各種知識聯絡起來。所以,一個有效的方法就是儘量把你想到的東西有條理地說出來。

最後,他表示他要和同事商量一下,可能會有其他同事再聯絡我,讓我等訊息就好了。由於那天是元宵節,在電話內外傳來的節日的爆竹聲中,我也祝他元宵節快樂。於是這一輪的測試就這樣順利的結束了。

第三輪:瞭解知識領域和背景

我本以為需要要至少兩三天後才有訊息,結果沒想到才過了不到半個小時,我便接到微軟另一個工程師打來的電話,要約第二天的某個時間聊一聊——效率還真是高啊。因為時值寒假,我正在北京的家裡,所以也就不再電話裡談了,而是約了第二天下午直接到公司去實地見一見吧。

第二天下午,我如約來到中關村新落成不久的微軟大廈,開始了第三輪的面試。這次的目的大體就是了解一下我的知識領域大體在什麼範疇,以便考慮有沒有適合我的工作內容。由於他們所做的專案涉及到使用Win32 API開發某種客戶端,而且我之前在何宗健老師的Win程課上也花了很大心思做過純Win32API的Excel,所以問題就從這裡開始。面試我的工程師雙手空空,就坐在我對面聽我講,我講到哪就追問道哪。從訊息佇列、訊息迴圈到登錄檔、DLL都問了個遍。此外也簡單提及了一些Web內容,比如HTML、CSS、動態網頁等。這個過程並不是很難,知道什麼說什麼就好了。由於涉及的東西比較多、比較雜,感覺稍微有點累而已。

經過了一個多小時的“拷問”,我又被要求在紙上寫一小段程式,並且要修改到最好,主要是想看一下程式設計風格,並且談談對程式設計風格的認知。至此所有面試就結束了。我便回家開始等訊息了。

錄用與入職

他們辦事速度確實比我預想得快很多,我回到家後的第二天晚上,最初聯絡我的美國人(現在我的Mentor)就給我打來電話,告訴我順利通過的好訊息。最後我們簡單寒暄了幾句,並且再次最終確認了入職的時間。因為2月中下旬我還要回學校辦理一些註冊報到的手續,所以我正式入職報到的日子定在了2月29日——這個日子距我投出簡歷整整一個月。總的來說,整個過程並不難,如果你非問我要準備些什麼,我會覺得把基本功練好比什麼都重要。

當然,這裡的時間並不具有普遍的參考性,主要還要看開放職位的情況。如果有開放職位,而且要人比較急迫,可能訊息就來得快一些;如果不是,自然也就慢一些。MSRA不太提供什麼轉正機會,它常年做實習專案,流動性很大,有了空的職位就會招新的實習生來填補進來。大部分的實習生畢業後就該出國出國,該讀研讀研了。

其他

在我入職後的第二週,參加了一個小型的入職培訓。同參與一場培訓的同學各自做自我介紹時,我發現清華的實習生比例明顯比別的學校多。年長的到碩士生、博士生,年輕的甚至連大二學生都有,他們幾乎都是學校老師、聯合課程推薦,或者是學長、同學推薦的。看到這種勢頭,我心裡多多少少有一點點不服氣,其實我培養出的學生的實踐水平還是很高的,大概只是歷史不長,資源和人脈上還沒有鋪的那麼廣吧。所有後來我在收到內部的推薦郵件時,立刻也就轉發給了學院實習辦,希望我同學們多多申請來MSRA實習。向這些一流的工程師和研究員們多多學習,一定會有不小的收穫。

順便說一句,非北京的同學也完全不用顧慮交通和住宿的問題,MSRA會給你提供免費住房,如果你自己租房的話也會給你一定的補助。往返上海的路費也不用你自己負擔。所以大家放心來實習就是了。

即便內部推送出來的開放職位不一定常常有,大家也完全可以多多關注www.msra.cn上實習生資訊,自己看到有職位就鼓起勇氣來投簡歷吧。我在準備面試的時候看到過一句話,我印象很深:“不需要有太多的壓力,也不需要對結果有任何擔心和顧慮,大膽的面對它,當做證明自己的一個機會,看看自己到底有多大能耐”。我也希望把這種心態傳達給大家,不論你畢業後是要去名企工作、去保研、去考研、去出國深造、還是去創業,決定了就勇敢地投身進去吧。祝大家好運!