作者:唐磊
去年換工作的時候,面試了一下 Google (這裡說的是 Google 中國),來了個 Google 面試七輪遊,結果是沒通過。🤣
現在分享下我參與面試的具體流程以及個人認為應該注意的事項,希望對大家有所幫助。
個人相關背景
先介紹下自己相關背景,985 本科,top2碩士(其實,大公司都比較看重第一學歷的)。在校期間,科研也沒啥能拿得出手的論文。社招時,4 年多工作經驗,面試時為大疆後端開發TL(帶3~4個人而已)。
面試流程
Google 整體面試流程上基本如下:
1. Recruiter Prescreen
2. Phone Interview (1~2 sessions)
3. Onsite Interview (4~5 sessions,1 week to receive feedback)
4. Hiring Committee Review
5. Offer Review
6. Offer Delivery (Yippee!)
我一共經歷了 1 輪電話面試,5 輪 onsite,如果算上前面的HR 的預篩選的話,就是 7 輪。
簡歷投遞
之前校招其實也參加過,無奈門檻太高,競爭壓力太大,連面試流程都木有進。當初校招時直接網上刷題,這個網站上其實還能看到往年的一些題目情況: Google Code Jam。基本上分幾輪,每輪 top xx 的選手才有機會進入面試。
第一次換工作的時候,其實也有找在 Google 的同學內推,填了不少內推推薦理由呀等等,最後簡歷都沒過。😿
當然,簡歷沒過肯定也有多種理由啦,這個其實跟各個公司都一樣。比如人家需求是招聘 P7,以你的工作年限經驗等最多就 P6,肯定不行; 還有比如希望是招聘機器學習等相關經驗的等等,崗位信息等不匹配也不行; 當然還有一種,崗位描述等都相關,確實簡歷沒啥亮點,太平庸,也直接被 HR 給篩選掉了。
這次其實剛開始是沒有考慮過面 Google 的,機緣巧合在 linkedin 在有 Google 的 HR 聯繫,說要不要試試 Google 的機會。當然就抱著 「試試就試試」 的想法跟進面試流程啦。既然要嘗試,當然還是需要認真對待,修改簡歷。防止手生,肯定需要提前準備」刷題」的。發簡歷給HR 小姐姐後,HR 小姐姐會給你一些準備材料供你參考,這份材料還相對比較豐富,直接會告訴你面試涉及到的知識點,推薦書籍還有一些推薦參考的視頻等。需要的小夥伴可以留言,我整理下發給你(跟 HR 求證過,這些資料是可以公開分享的哈)。
其實,時間有限,「刷題」準備不夠,當初預感估計面試面不下來。不過真正走完所有面試流程,發現其實面試題目沒有想像中的那麼難(然而,我仍然沒有過,說明實力不足呀),積極準備,還是有希望的。因為面試題目比較敏感,不能直接分享原題哈,不過我會根據我的理解,找類似知識點和類似難度的題目分享一下。
HR 面試
對,第一輪就是 HR 面試,上面流程中的 「Recruiter Prescreen」,其實就是一些計算機相關基礎的填空題和選擇題。幾分鐘的時間,十幾道題目。面試過程中,不需要給予明確的解釋,知道就是知道,不知道就不知道。題目可能會涉及到比如: 快排的時間複雜度是多少? 選擇排序是穩定的排序算法嗎? 等等之類的。
這也是我參與的所有面試當中,HR 直接參與的」技術」面試。我理解就通過這一輪面試可以用比較少的成本把一些不合適的候選人直接排除了。當然這種方法可能不一定適用於所有公司。
電話面試
電話面試要求直接用 Google doc 共享寫代碼,需要要求你有一個穩定的網絡環境。這輪面試我理解應該不會太難,從我面試的經驗來看也確實如此。
相比 onsite,電話面試不能在一個很好的溝通環境下,不能面對面和面試官進行交流。當初我面試的一道題目和二叉樹的遍歷相關,當然題目不會是直接寫二叉樹的先序/中序/後序/層次之類的遍歷,會有一個具體的業務場景在裡邊。
需要你分析這個具體的業務場景,能夠抽象出題目本質上就是 二叉樹的遍歷方法。這道題目算是拿下了。實際 coding 後,面試官可能會根據你寫的 code 去提問,一些邊界條件以及讓你提優化方案。
HR 小姐姐介紹的電話面試是 1-2 輪,其實我理解,這應該是需要看第一輪的面試官的反饋,是否猶豫是否再安排一輪電話面試。畢竟和 onsite 相比,電話面試成本相對更低一些。
在線 code 其實在面試過程中,還是蠻重要的環節。從你 code 的細節,包括 code style,邊界條件的判斷,哪怕是注釋情況,都能看出一些編程習慣。我認為這個環節對於招聘一個寫代碼的工程師來說,肯定是一個必不可少的環節(google 整個就搞了五六輪)。
現場面試
電話面試通過後,HR 會很快跟你反饋溝通面試結果,是否通過,以及 onsite 的安排。因為現場面試是 4-5 輪,平均1 輪一小時的話,需要 4-5 個小時,其實還是蠻耗費精力的。
一般會溝通可以約 2 個半天或者 1 整天,兩個半天的好處是,時間不會那麼緊張,前兩輪後,中途可以過幾天再休整調整下再繼續。我當初就選擇」快刀斬亂麻/早死早超生」 的方案直接約了 1 天時間搞定。
onsite 也基本上是在電腦上 coding。你和面試官一人一個筆記本,coding時共享屏幕,有時候題目面試官會在白板上寫出。onsite 的題目,明顯就要比電話面試的題目難度高一些呢。但實際上比我想像中的要簡單些。
因為曾經想 Google 這樣的公司面試恐怕連理解題目意思都要理解大半天吧。可能也是社招的緣故,社招整體感覺在算法的要求比校招就要低一些。這只是我的主觀感受啦。(確實自己在當面試官的過程中,在算法這塊對社招的同學預期也會低一些)
我記得其中有一道題目就跟 leetcode 上的類似(再次聲明不是原題,也不 share 原題),leetcode 上那個題目應該是二維矩陣,最短路徑相關的。用 dp 可以解決。只不過,一般題目會分為好幾個小問題,難度一般從易到難。
同時也考察到了二叉樹,仍然圍繞著二叉樹的遍歷進行。需要熟知二叉樹的各種遍歷方式,非遞歸的方法(遞歸比較容易,一般不會讓寫這個)。在遇到二叉樹相關問題的時候,是否可以聯想到二叉樹的遍歷上來。
另外有一道系統設計的問題,「知識圖譜」的概念,圍繞著」圖」的相關算法,這個要求在白板上寫出設計方案和偽代碼。同時面試官會不斷 push 你讓你提出更優的解決方案。有足夠多的計算資源,並行去跑,以及具體怎麼實現。這道題目我回答的不好(當初也知道不好,後面 HR 反饋也印證了這一點)。
還有一道題目,是解決生活中的場景題目。需要你抽象出這個問題,用代碼來解決。一般這種題目,就需要反覆跟面試官去溝通和確認其中的場景,怎樣把業務抽象成算法。記得之前面試 Amazon 的時候也有類似的題目(只不過當初面 Amazon 考察的是 OO Design,而本題是具體算法實現)。
onsite 一共聊了 5 輪,上午 2 輪,下午 3 輪,其中有兩輪是英文面試(英文面試後面會說)。整體來說,工程師崗位面試會圍繞如下幾個方面進行(以下參考 HR 提供的面試指南):
Coding: 用熟悉的程式語言(不限)實現給定的題目。會重點關註解題目過程中的理解和溝通能力;
算法: 涉及到 排序/搜索/分治/動態規劃/貪心/遞歸,具體數據結構,以及也有可能會涉及到 Dijkstra 和 A* 等算法,需要會算法複雜度的分析;
排序: 常見的排序算法,時間/空間複雜度,例如 快排/歸併/堆排序/插入/基數排序等等;
數據結構: 數組/連表/堆/棧/hash/數/二叉樹等;
數學: 可能會涉及到離散數學,組合數學,例如 N個中選k 個的方法等;
圖: 圖的表達(例如矩陣/鄰接表),bfs/dfs 等;
遞歸: 遞歸和迭代的轉換;
其他: 設計和作業系統等;
以上這部分摘自 HR 提供的 Google 工程師面試指南。pdf,有需要的同學(再次強調已和 HR 確認,此資料可共享),從公眾號後臺回復 「Google面試指南+郵箱」,我會發送給你(或者直接掃碼加我微信也可以)。
午飯
中午 HR 小姐姐會安排一個 Google 的工程師,帶你吃飯,跟你聊天。有任何疑問都可以跟他溝通。不得不說,Google 的夥食還是蠻不錯的。我當初就跟小哥哥聊了下他在 Google 工作的感受。
英文面試
英文面試,單獨拿出來說一下。建議還是提前準備,練習一下基本的口語。不要因為面試過程中,突然讓你只用英語溝通,讓氣氛變得緊張起來,導致發揮不好。自我介紹之類的肯定你可以提前準備,然後就是你可以嘗試比如拿其中的題目自己模擬一下面試場景。主要是可能需要提前熟悉一下基本的計算機相關詞彙,不要到時候想表達卻表達不出。
整體來說,Google 的面試確實很難,但確實也沒我想像中的那麼難。但要求確實是很高的,基本上一些邊界 case 等也都是在考察範圍內的。
onsite 面試完後,在第二天,我就得到結果通知,面試沒通過。事實來看沒通過的結果反饋比通過反饋更快。HR 會反饋你哪裡表現得不夠好,然後如果想進 Google,就加油刷題,說 1 年後,可以再次嘗試,保持聯繫哦。
哈哈,以上就是我這次完整的 Google 面試之旅,雖然失敗(實力還不夠)了,但還是有收穫的。如果大家有足夠自信(當然也要有一定實力哈),也可以找我幫忙內推,我可以給在 Google 的同學幫忙或者直接給招聘的 HR 同學。
如果要面試 Google,刷題是在所難免的了。整體來講,Google 的面試體驗還是很不錯的,全程 HR 小姐姐悉心指導和及時反饋,給 HR 小姐姐點讚
如果大家覺得這篇文章有所收穫,還希望大家幫忙轉發,分享和「在看」。感謝!
微服務把我坑了
如何降低程式設計師的工資?
程式設計師,你得選準跑路的時間!
兩年,我學會了所有的程式語言!
一直CRUD,一直996,我煩透了,我要轉型
字節碼萬歲!
上帝託夢給我說:一切皆文件
Javascript: 一個屌絲的逆襲
Node.js :我只需要一個店小二
我是一個線程
TCP/IP之大明郵差
一個故事講完Https
CPU 阿甘