簡介
國人對于Amazon(亞馬遜)的認識大多停留在大型的電子商務公司,但其實亞馬遜在很多IT技術方面都是業界領頭羊。比如,亞馬遜(AWS)是目前全世界最大的云計算服務提供商;亞馬遜數據挖掘技術與商業的結合也幾乎是業界的最高水準。
網申
亞馬遜的網申是典型的IT公司風格,簡潔、明了、直接,填一些關鍵的信息,提交CV就是全部網申內容,整個過程大概不到20分鐘。而且亞馬遜還支持同時申請多個不同崗位,寫好的一份材料可以同時投給亞馬遜的多個不同分部,用戶體驗超級贊。
網測
亞馬遜的Online Test的考核內容只有一項:代碼能力。網申通過的話會受到亞馬遜發來的代碼測試鏈接,來自一個叫codility的代碼自動測試服務商。Codility本質上與leetcode是一類網站,但不同之處在于:
(1)codility主要面向企業,leetcode主要面向個人
(2)codility注重實際場景,常常要求考慮conern cases,leetcode更注重解決問題
(3)codility的結果可視化做得更好,會將結果的得分點與失分點逐條展現,leetcode一般只提供結果
(4)codility能夠實時記錄面試者寫代碼的全過程,防止作弊,leetcode只以最終代碼為準
Codility成立的時間不長,但近年發展速度很快,越來越多的IT公司傾向于在Online Test里面加入來自codility的測試。如果有時間,在找工作前去codility上找模擬題練習一遍,可以提高成功率,還有可能遇到原題哦。
一面
亞馬遜的一面還是常規地由HR做面試官,但令人印象深刻的是,亞馬遜的HR面試中會非常側重技術問題,而非HR或Competency-based問題,要知道一般公司HR對于技術都知之甚少,面試中能不涉及就盡量不去涉及。
一面問題集中在對于算法、數據結構的考察,不難但對全面性要求比較高。一個常見的問題鏈如下:
常見排序算法有哪些 ->
復雜度為n2有哪些,復雜度為nLogn的有哪些 ->
nLogn中哪些是穩定排序,哪些不是 ->
不穩定的原因,不穩定的最壞結果是什么,改怎么選擇 ->
面試官本身并不是程序員,所以答題的時候需要把復雜/專業的概念用比較淺顯的話解釋出來,這反過來要求面試者對以上問題掌握透徹,如果只是粗淺的了解,很有可能解釋不清楚(這是很好檢驗準備是否充分的方法)。
二面
二面開始是由程序員來做面試官,面試官拿出之前我在codility上提交的代碼,詢問代碼的思路、細節處理和改進方案(提交的代碼不是滿分)。因為之前代碼提交后有在codility上找到類似的題目做過研究,很快就解決了問題。
接下來還是代碼問題,這次由面試官現場出題(通過電話),估計因為之前codility上面試官已經對我代碼能力有所了解,這部分并沒有關注實現,而是以探討算法思路為主。題目難度不大,不過需要非常仔細確認面試官題目中的需求,畢竟隔著電話很多細節可能被省略了。我的做法是在開始說思路前用一個例子跟面試官確認,以保證理解上不會有太大偏差。
三面
據周圍參加過亞馬遜面試的同學說,亞馬遜是由Accessment Center的,但我并沒有收到AC的邀請,二面通過后直接收到的是三面的通知。跟HR確認過,這確實也是最后一面(可能流程有調整)。
面試官是個中年白人,大概是招聘部門的負責人,很健談,開始后介紹了很多關于亞馬遜、關于他們團隊的內容。正式開始后,發現居然是系統設計方面的題。
第一道問如何在抽象層面設計高負載、高并發的數據處理系統,心想亞馬遜自己的系統就符合要求,而且之前也做過準備,直接套用亞馬遜的結構作為答案。
第二題要求設計一個國際象棋系統,需要面向對象并寫出核心代碼。系統的頂層設計與模塊劃分很快就完成了,并得到了面試官的肯定。但設計具體類與方法時,跟面試官出現分歧。我的想法是用設計模式讓系統擴展性更強,但壞就壞在我本身不會國際象棋,有些想法可能并不符合實際情況。當時以為面試官沒聽懂,又講了一遍,結果他還是不同意。
三面結束后收到拒信,不出意外是因為系統設計的那個問題。
總結
亞馬遜作為FLAG中在英國唯一一個常年在英大規模招聘的公司,而且針對畢業生開放的graduate roles機會眾多,對于有志于在IT公司工作的同學,是個非常好的選擇。