
一份來自亞馬遜工程師的 Google 面試指南:GitHub 9.8 萬顆星,已有簡體中文版

原文《一份來自亞馬遜工程師的 Google 面試指南,GitHub 收穫 9.8 萬星,已有簡體中文版本》刊登於「數據分析那些事」medium。這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,分享數據分析相關知識點推送、(工具 / 書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據者一同進步。也歡迎追蹤「數據分析那些事」的 Facebook 粉絲專頁。
一位從 1997 年就入行的 Web 工程師,立志要成為 Google 軟體工程師,3 年前寫下了一篇超完整學習和面試教學,以此作為自己的奮鬥計畫。
這位名叫 John Washam 的工程師,換了好幾份工作,最後卻陰差陽錯在 2017 年成為了亞馬遜 AWS 的技術專家。
但這並不妨礙他的教學成為熱門,在 GitHub 上線以來,已收到近 10 萬星的好評。
而且最近這篇教學已經完成了中文翻譯,就算你沒有去 Google 面試的機會,也可以用它來好好充實一下自己。
為何寫這篇教學
作者 Washam 本人並非電腦學位,但在兒時就已經展現出對電腦的濃厚興趣,從事的工作是關於 web 程式的建構、伺服器的建構。
作為一名非專業人士轉行,Washam 已經算是相當成功。然而,他還是想去 Google 工作,真正地理解電腦系統、演算法效率、數據結構性能、低階程式語言及其工作原理。
可對這些知識都不了解的他,怎麼會被 Google 錄取呢?
於是他在網上收集了各類電腦專業知識,以及進入 Google 工作的員工分享的資源,並系統化地整理了這些資料。
Washam 強調,想去 Google 工作首先不要妄自菲薄。Google 的工程師都是才智過人的。但是,就算是工作在 Google 的他們,仍然會因為覺得自己不夠聰明而感到不安。
學習資源
接下來就跟著 Washam 的腳步去學習。
首先要做的就是選擇一種語言,在 Google 一般是 C++、Java、Python,有時也會用到 JavaScript、Ruby。背後還有一些如 SQL、HTML 等技術沒有列出。
接著開始學習電腦硬體知識:

然後補充電腦專業的基礎數學知識,如演算法複雜度 / Big-O / 漸進分析法、數據結構、樹、排序、圖論。

此外還有遞歸、動態規劃、組合與概率、NP&NP - 完全和近似演算法、緩存、線程與進程、系統設計、可伸縮性、數據處理。
看到這麼多知識點,你會不會覺得有點傻眼呢?Washam 告訴你一點小技巧。
因為你不可能一遍就記住所有知識點。所以需要把要回顧的知識點做成字卡(flashcard):正常的及帶有程式碼的,類似於背單詞。

每種卡都會有不同的格式設計。專案首頁中就有字卡的原始碼,可以根據自己的學習特點去製作。
Washam 還留有一組 ASCII 碼表、OSI 堆疊、Big-O 記號及更多的小抄,以便在空餘的時候可以學習。每寫半個小時就要休息一下,並去回顧你的字卡。
當然,論文的閱讀也是必不可少的,尤其是 Google 曾經發表的一些基礎技術論文。

書籍則推薦一些關於演算法和 C++ 語言之類的。

去 Google 面試需要注意什麼
面試的第一步當然是要有一份好的簡歷,這樣才能為你爭取到寶貴的面試機會。知名科技布洛克 Steve Yagge 給出了 10 個訣竅,幫你做出一份還不錯的簡歷。

這位 Steve 曾經在亞馬遜、Google 都工作過,Washam 的這個專案就大量地引用了他的技術部落格內容。
在面試時,你可能會遇到這 20 個問題,每個問題準備 2–3 種回答。準備點故事,而不要只是擺一些你完成的事情的數據。

面試官在也會問你還有哪些問題,不要說自己沒有什麼要問題,可以試試問一些此類問題:

當然,進入 Google 也不代表著結束,你還有新的學習過程等著。
Washam 還有一份附加內容,包括 Emacs 和 Vim、Unix 命令列工具、密碼學。這些內容雖然不會直接用到,但是會大大提高你的效率。
最後,在這樣一個特殊的時期,好好給自己充個電。祝大家在新的一年裏都能面試成功!
傳送門
來自:量子位
責任編輯:Mia
最新發展: