Google 面經(jīng)分享
本文公眾號(hào)來(lái)源:程序猿石頭作者:碼農(nóng)唐磊本文已收錄至我的GitHub
去年換工作的時(shí)候, 面試了一下 Google (這里說(shuō)的是 Google 中國(guó)), 來(lái)了個(gè) Google 面試六輪游, 結(jié)果是沒(méi)通過(guò). ? 現(xiàn)在分享下我參與面試的具體流程以及個(gè)人認(rèn)為應(yīng)該注意的事項(xiàng), 希望對(duì)大家有所幫助.
個(gè)人相關(guān)背景
先介紹下自己相關(guān)背景, 985 本科, top2碩士(其實(shí), 大公司都比較看重第一學(xué)歷的). 在校期間, 科研也沒(méi)啥能拿得出手的論文. 社招時(shí), 4 年多工作經(jīng)驗(yàn), 面試時(shí)為大疆后端開(kāi)發(fā)TL(帶3~4個(gè)人而已).
面試流程
Google 整體面試流程上基本如下:
Recruiter Prescreen →
Phone Interview (1~2 sessions) →
Onsite Interview (4~5 sessions, 1 week to receive feedback) →
Hiring Committee Review →
Offer Review →
Offer Delivery (Yippee!)
我一共經(jīng)歷了 1 輪電話面試, 5 輪 onsite, 如果算上前面的HR 的預(yù)篩選的話, 就是 7 輪.
簡(jiǎn)歷投遞
之前校招其實(shí)也參加過(guò), 無(wú)奈門(mén)檻太高, 競(jìng)爭(zhēng)壓力太大, 連面試流程都木有進(jìn). 當(dāng)初校招時(shí)直接網(wǎng)上刷題, 這個(gè)網(wǎng)站上其實(shí)還能看到往年的一些題目情況: Google Code Jam. 基本上分幾輪, 每輪 top xx 的選手才有機(jī)會(huì)進(jìn)入面試.
第一次換工作的時(shí)候, 其實(shí)也有找在 Google 的同學(xué)內(nèi)推, 填了不少內(nèi)推推薦理由呀等等, 最后簡(jiǎn)歷都沒(méi)過(guò). ? 當(dāng)然, 簡(jiǎn)歷沒(méi)過(guò)肯定也有多種理由啦, 這個(gè)其實(shí)跟各個(gè)公司都一樣. 比如人家需求是招聘 P7, 以你的工作年限經(jīng)驗(yàn)等最多就 P6, 肯定不行; 還有比如希望是招聘機(jī)器學(xué)習(xí)等相關(guān)經(jīng)驗(yàn)的等等, 崗位信息等不匹配也不行; 當(dāng)然還有一種, 崗位描述等都相關(guān), 確實(shí)簡(jiǎn)歷沒(méi)啥亮點(diǎn), 太平庸, 也直接被 HR 給篩選掉了.
這次其實(shí)剛開(kāi)始是沒(méi)有考慮過(guò)面 Google 的, 機(jī)緣巧合在 linkedin 在有 Google 的 HR 聯(lián)系, 說(shuō)要不要試試 Google 的機(jī)會(huì). 當(dāng)然就抱著 “試試就試試” 的想法跟進(jìn)面試流程啦. 既然要嘗試, 當(dāng)然還是需要認(rèn)真對(duì)待, 修改簡(jiǎn)歷. 防止手生, 肯定需要提前準(zhǔn)備”刷題”的. 發(fā)簡(jiǎn)歷給HR 小姐姐后, HR 小姐姐會(huì)給你一些準(zhǔn)備材料供你參考, 這份材料還相對(duì)比較豐富, 直接會(huì)告訴你面試涉及到的知識(shí)點(diǎn), 推薦書(shū)籍還有一些推薦參考的視頻等.需要的小伙伴可以留言, 我整理下發(fā)給你(跟 HR 求證過(guò), 這些資料是可以公開(kāi)分享的哈).
其實(shí), 時(shí)間有限, “刷題”準(zhǔn)備不夠, 當(dāng)初預(yù)感估計(jì)面試面不下來(lái). 不過(guò)真正走完所有面試流程, 發(fā)現(xiàn)其實(shí)面試題目沒(méi)有想象中的那么難(然而, 我仍然沒(méi)有過(guò)
, 說(shuō)明實(shí)力不足呀
), 積極準(zhǔn)備, 還是有希望的. 因?yàn)槊嬖囶}目比較敏感, 不能直接分享原題哈, 不過(guò)我會(huì)根據(jù)我的理解, 找類(lèi)似知識(shí)點(diǎn)和類(lèi)似難度的題目分享一下.
HR 面試
這也是我參與的所有面試當(dāng)中, HR 直接參與的”技術(shù)”面的. 我理解就通過(guò)這一輪面試可以用比較少的成本把一些不合適的候選人直接排除了. 當(dāng)然這種方法可能不一定適用于所有公司.
電話面試
相比 onsite, 電話面試不能在一個(gè)很好的溝通環(huán)境下, 不能面對(duì)面和面試官進(jìn)行交流. 當(dāng)初我面試的一道題目和二叉樹(shù)的遍歷相關(guān), 當(dāng)然題目不會(huì)是直接寫(xiě)二叉樹(shù)的先序/中序/后序/層次之類(lèi)的遍歷, 會(huì)有一個(gè)具體的業(yè)務(wù)場(chǎng)景在里邊. 需要你分析這個(gè)具體的業(yè)務(wù)場(chǎng)景, 能夠抽象出題目本質(zhì)上就是 二叉樹(shù)的遍歷方法. 這道題目算是拿下了. 實(shí)際 coding 后, 面試官可能會(huì)根據(jù)你寫(xiě)的 code 去提問(wèn), 一些邊界條件以及讓你提優(yōu)化方案.
HR 小姐姐介紹的電話面試時(shí) 1-2 輪, 其實(shí)我理解, 這應(yīng)該是需要看第一輪的面試官的反饋, 是否猶豫是否再安排一輪電話面試. 畢竟和 onsite 相比, 電話面試成本相對(duì)更低一些. 在線 code 其實(shí)在面試過(guò)程中, 還是蠻重要的環(huán)節(jié). 從你 code 的細(xì)節(jié), 包括 code style, 邊界條件的判斷, 哪怕是注釋情況, 都能看出一些編程習(xí)慣. 我認(rèn)為這個(gè)環(huán)節(jié)對(duì)于招聘一個(gè)寫(xiě)代碼的工程師來(lái)說(shuō), 肯定是一個(gè)必不可少的環(huán)節(jié)(google 整個(gè)就搞了五六輪).
現(xiàn)場(chǎng)面試
onsite 也基本上是在電腦上 coding. 你和面試官一人一個(gè)筆記本, code 時(shí)共享屏幕, 有時(shí)候題目面試官會(huì)在白板上寫(xiě)出. onsite 的題目, 明顯就要比電話面試的題目難度高一些呢. 但實(shí)際上比我想象中的要簡(jiǎn)單些. 因?yàn)樵?jīng)想 Google 這樣的公司面試恐怕連理解題目意思都要理解大半天吧. 可能也是社招的緣故, 社招整體感覺(jué)在算法的要求比校招就要低一些. 這只是我的主觀感受啦. (確實(shí)自己在當(dāng)面試官的過(guò)程中, 在算法這塊對(duì)社招的同學(xué)預(yù)期也會(huì)低一些)我記得其中有一道題目就跟 leetcode 上的類(lèi)似(再次聲明不是原題, 也不 share 原題), leetcode 上那個(gè)題目應(yīng)該是二維矩陣, 最短路徑相關(guān)的. 用 dp 可以解決. 只不過(guò), 一般題目會(huì)分為好幾個(gè)小問(wèn)題, 難度一般從易到難.同時(shí)也考察到了二叉樹(shù), 仍然圍繞著二叉樹(shù)的遍歷進(jìn)行. 需要熟知二叉樹(shù)的各種遍歷方式, 非遞歸的方法(遞歸比較容易, 一般不會(huì)讓寫(xiě)這個(gè)). 在遇到二叉樹(shù)相關(guān)問(wèn)題的時(shí)候, 是否可以聯(lián)想到二叉樹(shù)的遍歷上來(lái).另外有一道系統(tǒng)設(shè)計(jì)的問(wèn)題, “知識(shí)圖譜”的概念, 圍繞著”圖”的相關(guān)算法, 這個(gè)要求在白板上寫(xiě)出設(shè)計(jì)方案和偽代碼. 同時(shí)面試官會(huì)不斷 push 你讓你提出更優(yōu)的解決方案. 有足夠多的計(jì)算資源, 并行去跑, 以及具體怎么實(shí)現(xiàn). 這道題目我回答的不好(當(dāng)初也知道不好, 后面 HR 反饋也印證了這一點(diǎn)).還有一道題目, 是解決生活中的場(chǎng)景題目. 需要你抽象出這個(gè)問(wèn)題, 用代碼來(lái)解決. 一般這種題目, 就需要反復(fù)跟面試官去溝通和確認(rèn)其中的場(chǎng)景, 怎樣把業(yè)務(wù)抽象成算法. 記得之前面試 Amazon 的時(shí)候也有類(lèi)似的題目(只不過(guò)當(dāng)初面 Amazon 考察的是 OO Design, 而本題是具體算法實(shí)現(xiàn)).onsite 一共聊了 5 輪, 上午 2 輪, 下午 3 輪, 其中有兩輪是英文面試(英文面試后面會(huì)說(shuō)). 整體來(lái)說(shuō),工程師崗位面試會(huì)圍繞如下幾個(gè)方面進(jìn)行(以下參考 HR 提供的面試指南):
Coding: 用熟悉的編程語(yǔ)言(不限)實(shí)現(xiàn)給定的題目. 會(huì)重點(diǎn)關(guān)注解題目過(guò)程中的理解和溝通能力;
算法: 涉及到 排序/搜索/分治/動(dòng)態(tài)規(guī)劃/貪心/遞歸, 具體數(shù)據(jù)結(jié)構(gòu), 以及也有可能會(huì)涉及到
Dijkstra和A*等算法, 需要會(huì)算法復(fù)雜度的分析;排序: 常見(jiàn)的排序算法, 時(shí)間/空間復(fù)雜度, 例如 快排/歸并/堆排序/插入/基數(shù)排序等等;
數(shù)據(jù)結(jié)構(gòu): 數(shù)組/連表/堆/棧/hash/數(shù)/二叉樹(shù)等;
數(shù)學(xué): 可能會(huì)涉及到離散數(shù)學(xué), 組合數(shù)學(xué), 例如 N個(gè)中選k 個(gè)的方法等;
圖: 圖的表達(dá)(例如矩陣/鄰接表), bfs/dfs 等;
遞歸: 遞歸和迭代的轉(zhuǎn)換;
其他: 設(shè)計(jì)和操作系統(tǒng)等;
午飯
中午 HR 小姐姐會(huì)安排一個(gè) Google 的工程師, 帶你吃飯, 跟你聊天. 有任何疑問(wèn)都可以跟他溝通. 不得不說(shuō), Google 的伙食還是蠻不錯(cuò)的. 我當(dāng)初就跟小哥哥聊了下他在 Google 工作的感受.

英文面試
. HR 會(huì)反饋你哪里表現(xiàn)得不夠好, 然后如果想進(jìn) Google, 就加油刷題, 說(shuō) 1 年后, 可以再次嘗試, 保持聯(lián)系哦.
哈哈, 以上就是我這次完整的 Google 面試之旅, 雖然失敗(實(shí)力還不夠)了, 但還是有收獲的. 如果大家有足夠自信(當(dāng)然也要有一定實(shí)力哈), 也可以找我?guī)兔?nèi)推, 我可以給在 Google 的同學(xué)幫忙或者直接給招聘的 HR 同學(xué). 如果要面試 Google, 刷題是在所難免的了. 整體來(lái)講, Google 的面試體驗(yàn)還是很不錯(cuò)的, 全程 HR 小姐姐悉心指導(dǎo)和及時(shí)反饋, 給 HR 小姐姐點(diǎn)贊
各類(lèi)知識(shí)點(diǎn)總結(jié)
下面的文章都有對(duì)應(yīng)的原創(chuàng)精美PDF,在持續(xù)更新中,可以來(lái)找我催更~
- 92頁(yè)的Mybatis
- 129頁(yè)的多線程
- 141頁(yè)的Servlet
- 158頁(yè)的JSP
- 76頁(yè)的集合
- 64頁(yè)的JDBC
- 105頁(yè)的數(shù)據(jù)結(jié)構(gòu)和算法
- 142頁(yè)的Spring
- 58頁(yè)的過(guò)濾器和監(jiān)聽(tīng)器
- 30頁(yè)的HTTP
- 42頁(yè)的SpringMVC
- Hibernate
- AJAX
- Redis
- ......
掃碼或者微信搜Java3y 免費(fèi)領(lǐng)取原創(chuàng)思維導(dǎo)圖、精美PDF。在公眾號(hào)回復(fù)「888」領(lǐng)取,PDF內(nèi)容純手打有任何不懂歡迎來(lái)問(wèn)我。
原創(chuàng)電子書(shū)
原創(chuàng)思維導(dǎo)圖

![]() |
|


