Featured image of post 2022 Google Taiwan SWE 面試心路歷程

2022 Google Taiwan SWE 面試心路歷程

2022 Google Software Engineer Interview Experience

一個普通人的Google面試經驗

前言

大學時期正處AI技術火熱發展的幾年,也因此經常有媒體報導AI技術領頭的Google的工作環境,像遊樂場一般的辦公室、吃不完的零食和飲料、五星級的免費三餐、領著百萬年薪上班還可以想睡覺就睡覺,其內部夢幻的刷新我對一份工作的三觀,從那時起對這間公司逐漸產生好奇,儘管好奇,我卻一直抱持著觀望的心態,如此夢幻的企業收人的標準想當然也是異常的高,傳言中只收台大電資的書卷大神或是競賽選手,望向我那慘慘的在校成績,完全不敢想像要如何才能拿到進入Google的門票。

大四那年系上開了企業參訪,地點就是朝思暮想的Google,當下毫不猶豫就報名了,就此開啟了與Google的第一次相遇的緣分,那時候板橋的總部還沒有成立,我們參觀的是位於101的總部,隨著前往76樓的電梯快速上升,興奮的心情難以壓抑,電梯們打開的剎那,迎接我的是我朝思暮想的夢幻國度,原來新聞裡講的都是真的,免費的冰、免費的飲料、免費的五星級三餐,搭配著76樓的高空美景,真有種去度假的感覺,遊樂器材、打盹房也是真的,完全體現了Google對員工的信任,在與帶領我們的員工交流後了解到Google對員工管理的自由,不僅僅是工時上的自由,工作項目上員工也有相當大的主導權,員工甚至可以自行組建小組發起專案,就這樣在震撼中結束了與Google的第一次邂逅,從那之後進入Google成了我的夢想,我深知自己的不足,只能一步步的朝那裡邁進。

大四的暑假有了一次前往美國舊金山的機會,趁著這個機會再次造訪心中的夢想之地,位在山景城的Google總部,不過這次比較可惜沒有人脈可以帶我進去參觀參觀,只能當個觀光客在園區閒晃,雖然說只能從外部看,也能感受到整間公司以Have Fun為中心思想的氛圍,隨處可見的腳踏車、沙灘排球場、還有各式各樣的野餐區域簡直就是個大型的度假中心,後來也去了園區附近的紀念品中心買了不少伴手禮回來,朝聖之旅讓我感受的這間公司迷人的活力與矽谷這個科技業的傳奇之地的魅力,這裡的創造力與帶給世界的改變,我心想未來的某一天,我也希望能來到這裡工作。

回台灣之後進入了研究所就讀,原本就對自己的技術能力不太抱有信心,進入研究所後被各路大神強者環繞,更是讓我深切的感受到想要進入Google還有很長的路要走,在技術能力與研究能力上必須要有更上一層的累積,抱持著這個心態,在被研究進度追趕之餘也儘可能的參與各式各樣的side project、hackathon,也參與了幾個新創專案累積了一些參與新創的經驗,在跌跌撞撞之中夾雜著過人的運氣,在研究所的最後一年極度幸運的拿到了微軟的實習機會,開啟了一年的實習與研究所兩邊跑的生活,儘管這個老牌的軟體公司在Google、Facebook這些當紅的網路公司略顯遜色,但作為老牌卻長青的科技巨頭,仍提供了我不少的成長養分,開發技術能力的提升、專案管理能力的培養,也讓我得以窺見在科技公司中的生活模式。

2021年板橋的Google成立,將會是亞洲最大的硬體研發中心,能預期的是Google在台灣將會有大規模的人才招募活動,進入Google的難度也會較以往稍微容易,我深知想要進入Google這是個非常好的機會,在2021年底我在Linkedin上第一次收到來自Google HR的面試邀約,在與HR面談後了解到這是屬於Google Silicon的Hardware Engineer職缺,招募台灣電機背景或是有硬體開發經驗的工程師,只可惜我完全沒有學過硬體設計,對於verilog是一竅不通,面談後就完全沒有後續消息了…

2022年初聽聞有個學弟進入Google,我厚著臉皮請他幫忙推薦並投了2022年度的Software Engineer校園招募,這一次我總算沒有被拒於門外,順利的拿到了第一次面試的機會,就這樣開始了魔王級的面試挑戰之旅。

背景

112資管系雙主修森林系學士+112電信所碩士,沒有參加過程式競賽,也沒有貢獻過開源專案,只有和幾個朋友做過Side Project和Hackathon,大二修程式設計時因為花太多時間在社團而被當掉,大三重修A+過,資結演算法只能說是普通水準。

準備

差不多從2021年12月左右開始刷題,中間有一段時間在趕研究進度跟過年荒廢了一段時間,過完年後為了要強迫自己刷題買了一年份的Leetcode Premium,現在看起來是很不錯的投資,另外我也有買很多人推薦的Cracking the coding interview不過只有看一兩個不太熟的章節而已,刷題的策略前期我自己是從動態規劃開始練習,那時候是看花花醬的動態規劃終極學習方案系列影片累積思考動態規劃問題的技巧,差不多二月開始開始以寫完Leetcode前100題為目標,首先從Easy開始,然後是Medium,三月時開始以寫完Blind 75為目標,刷完一遍Blind 75後在去看前100題中的Hard題,最後在Onsite前一週努力刷Google面試的高頻率題,不得不說Leetcode Premium都將高頻題整理好了真的蠻方便的(而且真的蠻有用的XD),這段期間每天會固定上去寫Daily,算是強迫自己每天維持解題手感,刷的題目數量,在Phone Interview前差不多150題左右,在Onsite之前差不多230題左右,相對於各路大神來說應該不算多,不過對我自己而言還算夠,各方面的題型都算是有顧到,自己的感覺是都能夠穩定的解出Medium,Hard則是可以想出可行解。比較可惜的是這段時間沒有找朋友幫忙Mock interview,面試經驗的累積是靠實戰累積,在這之前還面了Amazon、Nvidia。 因為Google的Technical Interview至少會有兩關以上的全英文面試,英文也是很重要的一部分,雖然不用到Native specker那樣流利,但至少邏輯要能正確傳達,我英文的部分主要就仰賴實習的時候累積下來的,抱括日常聊天用語與解釋技術的能力,很感謝在這段時間願意跟我交流和我練習英文的人。 這一段時間的刷題紀錄

刷題的三圍

時辰

2022/01/20 -> 收到朋友的內推通知信,官網投遞履歷,投的是Software Engineer, University Graduate, 2022 2022/03/07 -> 收到HR來信通知安排面試 2022/03/28 -> Phone Interview 2022/04/07 -> 通知通過Phone Interview,準備安排Virtual Onsite Interview 2022/04/25 -> 第一天Virtual Onsite Interview,兩關Technical Interview + 一關Behavior Interview 2022/04/26 -> 第二天Virtual Onsite Interview,兩關Technical Interview 2022/05/07 -> 通知面試結果most on positive 2022/05/26 -> 得知Hiring政策可能會異動

過程

要說面試有什麼最需要注意的,我會覺得是要保持平常心,這也是我認爲面試最困難的部分,畢竟在跟自己的夢想公司面試,興奮、期待、緊張等情緒交雜,很難保持平常心,在第一次Phone Interview時我甚至前兩天晚上都緊張到睡不著,能做的就是去Youtube上找各種國外講軟體工程師面試的影片來看,提醒自己面試該注意的點,英文類的也順便可以練習英文聽力,以下推薦幾個不錯的影片:

Phone Interview

我差不多在預定時間的前十分鐘就坐在電腦前等,不過在預定時間點進去時面試官還沒上來,讓我緊張了一下以爲是不是記錯時間,等了差不多十分鐘後面試官終於來了,很抱歉的表示因為前面有一個會有一點耽擱到。面試官其實是一個親切的中國的小姊姊,一開始問了一個類似字串比對的問題,差不多是Easy等級,基本上一看到題目想到解法了,陳述了解法後面試官也同意這個解法,就花了10分鐘左右完成這題的coding,接著他表示有Follow up,比較像是會重複使用到第一題的概念屬於Medium等級,在思考這題的時候我原本以為只需要重複使用第一題的解法就行,結果發現我第一題使用的解法並非最佳解,到這邊其實有一點慌了,還好小姊姊人很好,不斷引導我去思考更好的解法,最終想出一個更佳的解法並花了幾分鐘實現,面試結束前小姊姊表示其實還有更好的解法,因此又花了幾分鐘請教一下,不過他表示這個解法他自己也沒有想到。 個人評價,整體來說面試表現還行,解題並不是很流暢,中間卡了一下,但算是有解出來,所以也不到差。 後來是通過了這一輪面試。

Onsite Interview

Technical Interview #1

這一關是一個人很不錯的中國的大叔,也沒有遲到,問了一題排序的變化題,一開始以為是Easy,但實際解下去後發現有Medium難度,完全錯估了這題的深奧程度,最一開始提了一個可行解,但面試官希望我提出最佳解,就這樣在這討論解法的30min中我至少提出了五六種解法,並分析在輸入範圍不同的情況下複雜度的差異,但我都沒有提出最佳解,後來在面試官的提示下想出了最佳解,但時間基本上已經用完了,我只能快速的將想法實作出來,後來想想自己實作的演算法是有Bug的,還好面試官人很好,並沒有很急著要結束面試,反而盡可能多留一些時間讓我完成面試,最後面試官回應我認為這是個很有趣的討論,認爲我提出了許多有趣的想法。 有了Phone Interview的經驗後,並沒有讓我比較不緊張,反而一直很擔心面試官一上來就會來一題Hard,就面試情形而言自己覺得表現是比較糟糕的。

Technical Interview #2

這一關是一個懶得說話的小哥,問了一個類似尋找子字串的問題,他先請我思考一個brute force solution我基本上看完題目就有想法直接給出了解法,他聽完後也覺得可以因此就請我實作,我差不多花十分鐘實作完成並解釋了一下時間複雜度,接著希望我提出最佳解,對於最佳解自己其實沒什麼把握,只感覺字串應該可以用prefix tree來處理,因此提出了自己想法,沒想到他回應這是正確的思路,因此接續的想就給出了最佳解,還算順利的完成這一關,難度大概是Medium。 在第一關爆掉之後這關心情反而輕鬆許多,有一點隨他去的感覺,大概是因為心情放鬆不少,反而思緒比較清楚,果然緊張才是大魔王。

Behavior Interview

這一關是一個中國的姊姊面試,首先問了一些蠻常見的Behavior question像是團隊的合作以及如何溝通,詳細題目網路上有蠻詳細的資訊,比較特別的是面試官問了一題有點類似產品設計的題目,因為事前完全沒有預料到,只能憑想像回答,但感覺面試官似乎沒有很滿意,面試最後有給個feedback認為我回答的沒有很深入,但他覺得我可能缺少工作經驗,因此回答的不深入也算預料之內。 整體來說回答的算尚可,至少都有給出個穩健中庸的答案。

Technical Interview #3

第三關開始就變成了用英文面試,面試官還是中國小哥,不得不說跟同樣母語是中文的人用英文溝通難度真的低很多,可能是因為背後的思考還卡在中文的框架下。 面試官問了一個tree traverse然後output路徑的題目,高度相似於leetcode上某題Google高頻題,剛好前幾天刷題有寫到,幾乎是秒想出最佳解,當然看到原題還是很興奮的,大概花了15分鐘講解完以及寫完code之後面試官給了我一個follow up,表面上是上面這題的延伸,但實際上已經轉換成BFS尋找兩點最短路徑的題目,還算是有趣的Follow up,這個變化在leetcode上就找不到了,這題同樣也是medium難度。

Technical Interview #4

第四關是一個沒有什麼表情的中國小哥,問了一個類似blind 75 pacific atlantic water flow的題目,看完題目後第一反應就連想到blind 75這題,事後也證明用同一題的方法可以解決這題,大概花了20分鐘講解跟寫完code後面試官同樣也給了follow-up,不過這個follow-up就沒有前一關有趣,只是單純數量上的增加,用同一題的方法改一下code就解決了,這題難度大概Medium。結果後來反而是這關的面試官認為我寫的code有些微的瑕疵,果然看到熟悉的題目還是不能太大意啊。

後續

我面試的時間已經算是Google 2022Campus Hire的末端了,大部分的缺都已經招完了,所以後來就變成直接沒有Headcount可以進行Team match,因此那時就有心理準備可能會需要等到下一年度的campus hire在繼續。

後來就如同大家所見的,在美國升息的壓力下各大公司開始被迫精簡人力,台灣這邊的campus hire也延到11月才開始,而headcount也必須要等到明年初人力政策確定後才會比較確定,好在面試結果可以保留一年,就祈禱明年還有機會可以繼續進行面試流程。

雖然尚未成功的進入我的Dream company,但這一路上還是很感謝許多人提供的機會以及幫助,此外也感謝協助我的Google HR不厭其煩的提供招聘流程的各種資訊。

comments powered by Disqus