Google Software Engineer University Graduate 2022 面試心得

圖片來源:freepik

文/EPICAC

如題 之前在板上跟其他前輩交流,受益頗多,當時也決定如果後來有幸拿到 offer,就發一篇心得,分享自身的面試過程及經驗給各位參考!

#背景:

台科電子,學 + 碩。 大學時對電類專業完全沒興趣,因此成績很悲劇,GPA 2.94。 大學畢業後決定先當兵,之後在某上市公司寫一年 embedded MCU,才回台科進修。 碩士決定走軟體,主要搞 DL 跟影像相關。

#經歷:

由於碩士才開竅開始 coding,因此履歷方面比較沒什麼拿得出手的東西 2021 有在 Amazon Ring 做了約半年的 Software Engineer intern 然後最近 TSMC x Microsoft Careerhack 2022 決賽有拿到第二,感謝隊友 carry 🙂 之前面 Amazon 的時候也有發一篇心得,有興趣的朋友可以參考:

#面試準備:

這裡簡單分享一下我大致的準備,不一定適合每個人,單純讓各位參考

– coding 部分:

自己碩一在一次因緣際會下發現 leetcode,由於我本來就很喜歡解謎與益智遊戲,刷了幾題後覺得解題其實還蠻有趣的,所以碩一每天斷斷續續的也刷了 1000 多題左右 自己覺得 medium 差不多都能穩穩 15 分鐘漂亮解完,就能應付 Google L3 的面試了,一般的 hard 大概抓 25 分鐘解完差不多,而且個人感覺不是一定要出最佳解,太 tricky 的題目就隨緣吧

語言部份以 python 跟 c++ 為主,面試前大概題數跟最近一次 contest rank 如下:

– 英文部分:

我自己的英文其實不太好,單字量很不夠,多益可能也就 600 上下 不過英文考試跟 software engineer 的面試其實很不一樣,面試主要考查的是專業方面的溝通能力,因此只要熟悉專業術語的英文就行了 聽說的部分,因為我實驗室每周英文 meeting,加上平常也會跟外籍生聊天,因此也就習慣英文溝通了,這部分比較不行的朋友可以找適合自己的方法來練習 主要關鍵字聽得懂,然後敢講且發音標準一點,不要讓人聽不懂,應該不會有太大問題,至少以我的破英文也是溝通的很順利

– 面試前準備:

除了平常的實力累積以外,面試前的準備也是蠻重要的 我覺得主要可以分兩點: 保持手感 + 調適心態

手感的話,我自己是會在面試前幾天 50 – 60 題密集刷題,刷個大概 300 題左右來保持手感 重點放在常見的 medium 題目,把每種題型都涵蓋進去,保證面試時看到各種題目都能瞬間有基本的思路,hard 的部分就看一些經典的題目,tricky 的無法速成直接跳過,當然如果你天資聰穎可以無視這段 有買 premium 的話可以看 Google Tag 來針對性準備

心態方面,其實蠻多人差的臨門一腳不是因為實力不足,而是因為緊張或心態沒調整好而沒有發揮出自身應有的水平 這方面剛好我個性比較隨緣且粗枝大葉,因此比較不會因為壓力感到緊張,算是因禍得福

(我之前有運動會跳高決賽跟在三創打 LOL 校際盃決賽的經歷,那種萬眾矚目的場合壓力相對還比較大)

面試的本質除了考查硬實力,另一個很重要的點就是要看這個人是不是一個能夠順利且愉快一起工作的夥伴,因此不用太有壓力,就把面試官當成自己的朋友,好好把自己的東西表達出來就行了,應該沒人會想跟整天鋪克臉或難以溝通的人當同事吧哈哈
我自己面試時是把面試官當成自己的學生,在心中想像一個白板,從資料結構開始用最淺顯易懂的方式來解說,一起合作從頭分析並解決問題,並盡可能保持最良好的溝通與互動協作這樣,如果是一樣有家教或老師經歷的朋友,可以參考看看

#面試流程:

下面會詳細講一下自身面試的流程跟 timeline 自己覺得 Google 的流程相對其他公司真的長很多,因此要面試的朋友要做好長期抗戰的心理準備,不要操之過急,保持平常心來應對每一場面試。

2021/9/28
recruiter
透過 linkedin 聯繫,職缺為 Google, Software Engineer, University Graduate, 2022
當時其實沒有想過要投 Google,但剛好 recruiter 從 linkedin 聯繫,因此決定把握這個機會來檢驗自己的程度。

2021/9/29
recruiter
電話訪談,聊過往經歷 & DSA 基本知識 大約聊了 20 分鐘左右,主要 focus 在一些 CS 領域的基本知識 會問十幾個關於演算法複雜度以及各種資料結構的問題 這個部分比較像是 recruiter 要確定 candidate 有一定的基礎程度,才會啟動面試流程,讓雙方不會浪費彼此的時間。

2021/10/5
recruiter
告知決定啟動面試流程,先請我至 Google 官網投遞履歷。 投遞完不久,recruiter 告知兩個禮拜後 phone interview,並傳了一些準備的建議與參考資料給我。

2021/10/20
virtual phone interview,一場 coding
面試官是蠻年輕的男生,感覺年紀比我還小,開場寒暄一分鐘後,就直接切入主題 這輪的題目難度普通,要實作一個有特殊 function 的 stack
一開始的題目差不多是 medium 偏 easy,當下看到題目大概就知道怎麼寫了,因此快速跟面試官 sync 設計想法與複雜度後,就開始 coding
大概花了 5 分鐘寫完,之後馬上列幾個 test case 然後跟面試官一起跑了幾遍 code,確定沒有問題
接著 follow up 要再額外加一個新的 function,這題難度個人覺得 medium 偏 hard 當下直覺是用 double linked list + hash map 來做,我說完想法後,面試官覺得聽起來 ok,就讓我開始 coding,結束之後回想才發現自己想得太複雜了,這題其實可以直接開兩個 stack + map 來做,會簡單很多
可能是因為第一次面試外商正職,這場稍微有點緊張,double linked list + hash map 刻的不是很流暢,花了不少時間才寫完,而且寫完後測 test case 發現在特定情況下會有 bug,好險面試官人很好,給了我一個 hint,讓我順利把這題做完 因為 follow up 寫的不是很順,而且有被小提示一下,因此面完的時候覺得很抖。

2021/10/25
phone interview pass
五天後收到 phone interview feedback,有驚無險的通過了,感覺 phone interview 的 bar 似乎沒有很高
不過 recruiter 有跟我說面試官的 feedback,他覺得想過 on-site 的話,我的速度需要再快一點
最後約 2 個禮拜後 virtual onsite。

2021/11/9~11/11
virtual onsite interview,四場 coding & 一場 behavioral
因為課程時間的關係,我面試是排 3 天,分別是 2, 1, 2 場

第一場, coding
面試官是一位跟我同屆的台灣男生,看起來非常嚴肅,給人一種很強烈的菁英感,這場是全英文面試
第一題是 leetcode 經典 medium,graph 相關,跟面試官確認好後直接秒掉,不過分析複雜度的時候,考慮不夠周全,不小心講錯,被面試官糾正回來 QQ
follow up 加一個限制 – graph 裡會有 cycle,加幾個判斷式即可
可能因為還有時間的關係,面試官又來了一個 follow up,假定 graph node 的狀態會有好幾種,把題目變得更複雜一點,個人覺得有 hard 等級,不過並不是很 tricky 的題目,因此還是在時間內順順寫完
因此這輪自己評價在 positive 跟 neutral 之間,雖然寫得很順又沒有要 hint,但複雜度講錯,稍微有點可惜。

第二場, coding
面試官是一位人很好的台灣姐姐,整個給人很親切的感覺! 這場也是全英文面試
這輪我只寫了一題,tree 相關,難度約 medium – hard,之前沒有遇過類似的題目,花了很長的時間跟面試官討論想法
而且 coding 到一半才發現方向錯誤,直接打掉重練
好險後來突然頓悟,想到一個自己覺得蠻漂亮的解法,才把這題寫完
因為時間的關係,面試官決定直接進入聊天環節,由於覺得只寫完一題有點丟臉,聊天的時候我很不甘心的問了一下 follow up,結果 follow up 比原題簡單很多…
當下瞬間想了一個解法,把複雜度從 O(n) 降到 O(log n),跟面試官口述後,她有點驚訝地認同我的想法,雖然沒有實際寫 code,不過可能多少有挽回一點分數
後來有一周的 leetcode contest 第三題就是這題 XD
這題算是蠻 tricky 的題目,第一次看到要很快想出最佳解個人覺得不太容易,當時看 contest 的各路大神都在這題卡了起碼 1x 分鐘
這輪自己評價是 negative,是 on-site 裡面我表現的最差的一場,recruiter 還跟我說這場面完後有點小危險,當下還挺懊惱的哈哈哈。

第三場, coding
這場面試官是嚴肅且寡言的台灣男生,中文面試
第一題是 matrix 相關 第一直覺是空間複雜度 O(n ^ 2) 的暴力解,面試官同意後,就先秒寫一個 easy 等級的暴力解
follow up 請我優化空間複雜度,這邊我想了大約 3 分鐘,絞盡腦汁還是怎麼想都想不到 O(1) 的解法,跟面試官詢問後發現只要有優化就行了,當下覺得自己有點搞笑,然後迅速給了一個面試官認同的 O(n) 解,難度約 medium
由於時間還剩很多,因此面試官再出了一個新的題目,system design 相關,用 hash map 完成,難度約 medium – easy,是我這次 on-site 遇到最簡單的題目,5 分鐘搞定 之後 follow up 加入一個 probability 相關的新功能,難度約 medium – hard,想了一下後,用 accumulate array + binary search 完成
這輪自己評價為 positive,沒要 hint 而且 bug free 順順寫完 4 題,整個信心大增。

第四場, coding
這場面試官是很親民的中國男生,中文面試
這場整個節奏非常特別,開場面試官因為 link 搞錯,進到了錯誤的 meeting room,大約 15 分鐘才發現,回到正確的 meeting room 後還跟我瘋狂道歉哈哈
這輪因為時間關係,也只面了一題,graph 相關,leetcode 經典 medium 變形,10 分鐘寫完
過程中花了不少時間跟面試官討論 recursion 跟 iterative 孰優孰劣,因為我原本想用 stack 直接 iterative dfs 做這題,但面試官似乎有他的堅持,跟我分析了很久之後,覺得 recursion 版本比較合他的胃口 XD
當然我也就順勢照他的意思,用 recursion 來完成這題 寫完後時間還剩很多,我原本以為會有 follow up,結果不知道他是因為開場的 delay 心懷愧疚還是怎樣,居然直接進入聊天環節,當下其實蠻訝異的
最後的 20 分鐘都在聊天,這輪的面試官非常 nice 且健談,我們聊了很多未來的規劃跟彼此的經歷,是一場很愉快的面試體驗 🙂 這輪自己評價是 positive,不過整場節奏真的很詭異就是了。

第五場, behavioral
這場面試官是一位溫文儒雅的台灣男生,中文面試
一開始是用英文面試,不過因為我英文有點破,講一講覺得用英文很難精確表達自己的想法,就詢問說能不能改用中文回答,面試官也很 nice 的同意了
問題主要 focus 在一些過往的經歷跟一些假設情況,類似人際之間一些情境的處理跟應對進退
因此面試過程算是蠻順利的,基本上把 googleyness 稍微看一下,然後整理一下自己的思路,不要緊張過度,正常人基本上應該都不會面得太差
這關自己評價是 positive,自己覺得 behavioral interview 這種類型的面試是我的優勢之一

整個 on-site 面完後,自己體感大概是在及格邊緣,有上沒上都不意外的感覺
主要第二輪表現不佳,不然原本還算是蠻有信心的,只能怪自己實力不夠,還需要再努力精進。

2021/11/13
recruiter 告知 onsite feedback : “most of them are positive”,索取成績單送 HC review 當下看到 feedback 其實還蠻開心的,不過因為表現未臻完美,因此覺得過 HC 的機率並不高,抱著沒上正常有上賺到的心態,開始了漫長的等待,提交成績單的時候有點怕怕的,因為成績真的很爛…

2021/11/26
recruiter 告知因為 HC 要排很久,因此打算先幫我排 team match。

2021/12/13
team match,chrome OS 部門

跟 chrome OS 的兩位主管聊了兩次,整個過程算愉快,可以感覺得出來 Googler 真的很有料 他們表示我有一年工作經驗算是加分項,算是意外之喜 因為他們陸陸續續都還有跟很多 candidate 在面試,因此聊完後主管表示不會馬上做決定,請我等一陣子
換位思考一下,我是主管的話理所當然也會想多跟幾個 candidate 聊聊,再決定比較合適的人選,所以也沒什麼特別想法,就繼續等。

2022/01/27
recruiter 告知 team match 成功,重新送 HC
後來 recruiter 說其實我第一次 HC 是沒過的,但是在及格邊緣差一點點,因此決定 team match 到就再送一次 HC,過的機率會比較高
當下就只能開始祈禱,希望這次能順利通過 🙂

2022/02/11 recruiter 告知 offer get
原本以為沒戲了,沒想到第二次 HC 居然過了!
收到訊息當下非常驚喜,立刻感謝各路親朋好友的祝福,然後跟朋友開了一場 LOL 來慶祝一下哈哈。

#心得:

整體而言,Google 的面試相對單純,就是很純粹的測試資結演算法以及溝通能力,沒有其他零零總總的 domain knowledge
這次整體面試的流程都蠻順利的,可以感覺到 Google 有認真在對待面試這件事,每個環節都讓人感到非常舒服,能夠很好的檢驗出一個人是否配得上這份 offer,也讓我知道自己還有很多不足的地方,是一次很寶貴的經驗
雖然說今年科技業景氣一片大好,各大企業都積極擴招,不過我感覺 Google 招的 SWE 新鮮人似乎並沒有很多,還是有一定的標準
在這裡要謝謝我的熱心 recruiter 以及 chrome OS 的兩位主管,沒有你們的協助,我根本不會有這個機會
同時感謝我生命中所有的人事物,不管是支持我,使我心靈富足的,亦或是厭惡我,使我明白自身不足的,都很謝謝你們,沒有你們就沒有今天的我
最後在這裡祝大家求職順利,早日找到心中理想的工作!
如果有任何問題或是發現我有講錯的地方,都歡迎在留言區詢問、指正 : )
p.s 應版友要求開了卡稱,有興趣的朋友可以搜尋“EPICAC”

本文由 EPICAC 授權轉載,原文連結

瀏覽 3,789 次

覺得不錯的話就分享出去吧!

發佈留言

Back to top button