文/由 Tony Yang 授權轉載,並同意修訂標題。
六月,在6個月的奮鬥下,終於,拿到了Google的Offer,在這期間受到很多人的鼓勵和幫忙,所以我希望可以寫一篇Google面試心得,如果文章可以幫忙到即將要面試的人或者正在面試的人那這篇文章就有意義了,讓這份感謝傳遞下去,同時也讓台灣的軟體業更加透明、發展得更好。
如果你未來有要面試軟體公司或者類似的外商公司可以繼續往下看,想看看我怎麼經歷層層關卡終於拿到offer的話也可以慢慢閱讀。
Software Development Engineer, New Grad 2021
本身是遇到來自美國總部的女性工程師替我面試,出的題目是Dynamic Programming的題目,因為我怕有保密問題,所以我不會詳細說題目是什麼,但每個階段我都會分享遇到的是屬於那一個類別的題目。
一開始的題目非常好理解,所以我蠻快就解出來,然後帶入cases說明我的答案,面試官給了一個follow up,這個follow up聽起來是上一題的變化,所以轉個觀念也寫出了答案。沒想到,又給了我一個更進階的follow up,這一題由於時間不夠我沒有想出來,最後她跟我大概講一下觀念後,然後問我有沒有什麼問題就結束了這次的面試。
這次面試很緊張,因為如果第一輪就掛了,後面就沒有機會,幸好,我覺得表現還算可以。後來,當天晚上就拿到了下一輪面試的邀約。
第一位面試官來自美國總部,出了一個有關Graph – DFS的題目。這次我遇到了小小的挫折,因為一開始我想不到該怎麼用比較洽當的方法解決問題,因此我使用Brute Force,嘗試到一半,面試官給了我一個hint,也幸好他給了我hint,我終於順利迅速完成,也因為還剩一點時間,所以他提出可以優化我剛剛給的答案。我們邊寫邊討論完成了最後的Optimal Solution。
休息的時候,我有點被上一輪面試影響,因為我自己覺得表現得不好,因此我有點沈浸在悲觀的情緒,總覺得自己會被刷掉。雖然不鼓勵用這種情緒去面試下一輪,但我是因為想說前一輪表現不好,下一輪就放開吧!也因此第二輪的面試比較放鬆順利。
第二輪面試官出的題目是Binary Tree相關的題目,題目雖然都沒有寫過但是只是Leetcode上面的一些變化,所以稍做思考後就解開了題目。因為還有很多的時間,所以又出了一題follow up,第二題跟上一題沒有任何相關性,第二題是Graph – BFS,我聽完題目後就有了想法,馬上給出了答案,沒想到時間複雜度超過了面試官想要的。
可能做過蠻多Graph的題目,馬上想到了用extra space去降低time complexity,順利度過了第二輪的面試。
總體來說這第二場back to back的technical interview,我覺得表現得中規中矩,一輪表現不好、一輪表現尚可。雖然自己的表現不太理想,但是我覺得Google的面試官都是很擅長與面試者對話,幫忙一起figure out答案,只要願意表達自己現在想到哪裡,面試官就有很大的機率可以幫助你,所以不要害怕犯錯和詢問,要嘗試然後表達,這樣才有機會獲得幫助。
Behavior Question的環節其實還蠻輕鬆的,一般只要你懂得團隊合作、溝通協調和解決難題,然後用親身例子去表達出來,基本上就沒有問題了。你回答的內容他會做紀錄,應該是後來給Hiring Committee去看的。
這次的兩輪面試都是女工程師,第一位出的題目是Tree相關的題目,感覺以前好像有碰過很相似的問題,但是臨時不知道當時是什麼想法寫出來的,因此我當下給出了另一個答案,並且用幾個cases去證明我的答案。後來面試官說答案是對的但是希望我可以給出一個更簡潔更少空間的解法,也是因為這個提醒,所以我想到我以前寫過的Optimal Solution。
第二位面試官,出的題目是Graph相關的題目,BFS和DFS都可以解出來,難度就大概是Medium,所以觀念熟悉的話也是可以思考一下就解出來的。一樣有出follow up,這個follow up我給出了超出預期時間複雜度的答案,照理說是應該用Trie去解,可是我最後沒有實現出來,也成了我一個小小的遺憾。
這輪的面試後我稍稍的有點緊張,因為我覺得還是沒有兩輪都表現完美,一樣一好一壞的感覺,每次的面試總是有點小缺憾,不知道是因為我準備不足還是每次到了重要時刻都容易緊張表現得不甚理想,必須好好反省,以免以後會再有這種後悔的情況發生。
Hiring Committee
在結束面試進入Hiring Committee前Recruiter會跟你要一些資料方便委員會去審查。
審查需要一些時間,如果收到Approval的話就會直接進入team match階段、如果是Reject那就直接再見,最後假如是Hold的話就可能需要增加面試,或者要等有Headcount。
Hiring Committee Decision
不幸的是我被告知,要等四月底有Headcount後才會繼續,可能是我的表現沒有足以直接被Hire的程度,所以那時候我只能祈禱有加面的機會。
一個月多的煎熬,我終於拿到了額外面試的機會!
老天有點眷顧我,讓我有加面的機會,我心裡也知道這是最後一個希望,所以我用盡一切努力的練習,來準備這場最後決戰,題目從面試官嘴裡說出來後,我心裡有個模糊的想法,好像是用HashMap可以完成,因此,我朝那個方向前進,終於給出了面試官最想要的答案,因為他說他原本的follow up我用第一題的解答也是可以完成的!我聽了之後非常地高興,感覺有進步,但卻又不敢抱太多期待,唯一能做的就只能等待好的通知,畢竟是最後一輪的面試了。
通過Hiring Committee後,Recruiter會積極地幫你邀約各組的manage跟你做team match,通常會約三組,manager會詳細介紹他們組別是在做什麼,如果你感興趣的話請多詢問組內相關的問題。
結束後,如果對哪一組有興趣,就可以跟Recruiter表示,進行順利後,那就會拿到口頭Offer。分享一下,最後我決定去Pixel team!
Google Offer Get
日期:2021/06/02
我的Google面試時間軸
2020/12/17 LinkedIn上聯絡校友內推
2020/12/20 收到內推連結
2020/12/21 修改Cover letter及Resume
2020/12/23 Submit Application
2021/02/01 contact by HR
2021/03/03 Phone Interview
2021/03/03 當天收到下輪通知
2021/03/10 technical(1) 45mins + 45mins back to back
2021/03/17 收到下輪通知
2021/03/24 BQ(30mins) + technical(2) 45mins + 45mins back to back
2021/03/29 HR asked the materials for Hiring Committee and team match (Resume, transcript and internal referral)
2021/04/09 Hiring Committee Review Completed (Hold)
2021/05/10 Additional Interview
2021/05/18 Hiring Committee Review Approval
2021/05/25 Team match – fit talks
2021/05/26 Team match – fit talks
2021/06/01 Team match – fit talks
2021/06/02 Oral offer – offer discussion
2021/06/08 Letter offer
刷題類型
Google一直是我的一個夢想,當初從電機系轉到資工系,就是希望有朝一日能夠到Goolge這樣的公司上班。以前也投過兩次Google的實習,可是連履歷的關卡都沒過,面試的機會都沒有。誰曾想,這是機會出現在眼前,也讓我緊緊抓牢了!
Google面試的流程很長,如果想要面試Google一定要有心理準備。雖然有很多個階段的面試,但是看了我的分享就知道,其實題目都大概是Medium左右,只要了解重要的演算法、資料結構,並且將經典的題目練習幫助自己活用,那基本的準備就充足了。
Goolge的面試官人都很好,在面試的過程中不會感覺到冷漠,當然要願意表達自己的想法,面試官才能有機會幫你。Google的Recrutier有問必答,還提供給我他們的office hour,讓我有問題都可以詢問,所以我在面試的體驗除了因為很長讓我倍感壓力和焦慮以外,Google其他方面都做得不錯。只要願意去發問,基本都可以得到答案。
最後,我要感謝很多鼓勵我的人和在Google工作的朋友幫忙回答問題,讓我能夠勇往直前不再迷茫,我們都有自己的夢,就看能不能堅定的往前!
文/由 Tony Yang 授權轉載,並同意修訂標題