天天看點

計算機學院去微軟的大牛的面試經驗

好厲害,向他學習,以下是大牛的原文:

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分鐘,問的問題都不是很難。

面試完了沒多久,就收到了去阿姆斯特丹面試的邀請,可惜由于辦荷蘭簽證和辦日本簽證的時間發生了沖突,是以就隻能作罷。

不知不覺,竟然寫了這麼多了。回顧自己找工作的經曆,發現還是有不少遺憾。這些遺憾一方面是自己實力不濟,另一方面也是由于自己視野的局限性。就我自身的感覺而言,交大學生與清北、中科院、北郵這些計算機強校的學生相比最大的差距不在專業技能上,而在于視野。有太多的資訊,太多好的機會我們都不知道。選擇走怎麼的路是每個人自己的選擇,可問題在于有好多可以走的路我們卻并不知道。

繼續閱讀