2022 Google Taiwan SWE (new grad) 面試心得
畢業之後休息了一陣子,準備方式比較偏向短期衝刺,一個半月全職刷題。寫這篇文章的目的除了分享一些準備心得,也希望可以鼓勵到大家!
Timeline
Google 的面試時程超級長!前後大概快三個月,建議一開始就丟!等結果的過程再去面試其他家(其他公司面試心得可參考:2022 新鮮人軟體工程師面試心得)。
- 1/24:Phone interview
- 2/15:Onsite interview 1&2
- 2/16:Onsite interview 3&4
- 2/17:Onsite interview 5
- 3/07:Hiring Committee(HC) approved
- 3/21–3/25:Team Match
- 3/31:Offer get!
LeetCode 練習方式
會建議買 Premium,top company 題目其實蠻有幫助。由於之前沒有刷題經驗,所以這部分我主要分成兩階段:
1. 根據主題練習
因為很多東西都忘的差不多,一開始是先針對不同主題複習過一次(例如 Array、Stack/Queue、Binary Search、Tree、Graph、Trie…等)。再到 LeetCode 做該類的高頻題,這部分我先從 easy 開始(從 easy 入手比較可以建立信心)。每個主題大概會順個 7–10 題左右,確保自己對這個主題有一定的熟悉程度。
在寫題目時,讀完題目後要先有一些想法,如果時間複雜度極差也要先寫出來。submit 後,如果發現自己寫的時間/空間複雜度不是落在平均範圍,再去嘗試優化複雜度。最後再去看 solution/discussion,了解別人的思路。
這裡分享一些不錯的網路學習資源:
- https://www.youtube.com/c/NeetCode
- https://www.youtube.com/c/HuaHuaLeetCode
- https://grandyang.com/leetcode/1/
- https://zxi.mytechroad.com/blog/leetcode-problem-categories/
2. 隨機練習
每個主題都大概練過之後可以開始隨機做題目,這部分我是用 company tag 下去練習。隨機刷題是在訓練解題思路,讓自己在看到新題目的時候不會完全沒有頭緒,而是讀完題目後,要大概知道應該是什麼類別的主題、可以怎麼解、edge case 可能有什麼等。當然一開始可能不會想到最佳解,所以這部分我的練習方式如下:
- 看完題目,練習口述自己的想法,分析時間/空間複雜度(想像有一個人在聽你面試)。
- 到 solution 看有沒有比自己解法更好的時間/空間複雜度,有的話就稍微看一下 title,嘗試往這個方向去思考。
- 持續 think out loud。寫完 code 練習做 dry run,不靠 submit debug。
遇到沒想法的題目怎麼辦?
看解答!給自己幾分鐘掙扎,如果真的完全沒想法就直接去看答案。一開始我也很抗拒看答案,但一直想不出來就越挫敗,其實不用硬逼自己想出來,有些解法的切入點是不管再怎麼想都會想不到。如果這題我是看解答寫的,就會再多做這題的 related questions。
Easy/Medium/hard怎麼分配?
一開始我先從 easy,寫到最後都直接練 medium,但有些 easy 的 follow up 蠻有挑戰性的,也不用看到 easy 就都跳過。hard 我超少碰,只寫經典hard 題。
解法要都會嗎?
一題的解法可能有多種,選一個自己最熟悉的方法就好了,其他可以參考,偶爾練習切換一下思路,但不一定都要很熟。
面試過程
關於 Google 常考的題目類型?不一定。像我都沒有遇到 DP,所以還是要對每個主題有一定的掌握。今年因為疫情關係,所有面試都是線上進行。
Phone interview(英文)
Phone interview 算是門票,過了之後才有接下來的五場 on-site。這場題目是 Matrix 相關的。兩個 follow up,第二個 follow up 有拿 hint,程式碼都有完成。
Onsite*2(中文)
第一場題目類型偏向 design,面試官給蠻多 hint 的,個人認為這一場表現不是最好,因為是 open end 題目,很多東西都要自己設計或假設,沒有寫到最佳解。第二場有兩題,第一題 Binary search 相關,有 follow up,第二題 tree 相關,兩題都有做完整的 dry run,都沒有拿 hint。
Onsite*2(英文)
兩場都是印度 Googler 面試,皆是 medium 難度+一個 follow up,程式碼都有完成,也都沒有拿 hint。第一場考 DAG,follow up 面試官說不用寫程式,他想知道我會怎麼解就好了。第二場一開始我誤會題目意思,花了不少時間列舉範例跟面試官討論才理解題目。
這兩場的面試官會不斷地質疑你的每一個思考步驟,why this?解決辦法就是用更多的例子去說明自己的思路;另外他們也會問你「這部分為什麼要設計這種資料結構?」「這樣時間複雜度是多少?」全部都確認沒問題之後,才會開始寫 code。
Behavior Question*1(中文)
這場多以團隊合作經驗相關問題為主,面試官會給你一些情境題,問你會怎麼做,或是有沒有相關的經歷。基本上不要回答的太糟糕,這部分都可以很順利。
Team Match(中文/英文)
所有面試結束後,recruiter 會搜集面試結果送 HC 審核。通過 HC 後才會有 team match 流程,有開缺的 team manager 會從 pool 裡面挑選有興趣的 candidate 來安排 fit talk,所以每個人被安排到的 fit talk 數量不一定(我的話是五場)。
每場 fit talk 大約半小時,manager 會大致介紹自己的 team 大概在做什麼,有興趣的話,可以再多問一些自己想深入了解的內容。最後 recruiter 會搜集雙方的意願,安排 candidate 到其中一個 team。
瀏覽 16,355 次