Google Interview 心得

我是自己上網投履歷的
時程大概是這樣

  • 3/24 按 apply
  • 3/30 收到填基本資料的表
  • 4/20 Phone Interview
  • 4/21 HR 說通過了,問我時間要安排下一輪
  • 4/29 Virtual onsite 1
  • 5/2 HR 說通過了,問我時間要安排下一輪
  • 5/12 Virtual onsite 2
  • 5/26 HR 說下去了,感謝你

背景

  • 沒打競程,但大一有修過系上開的競程二、競程一,大概知道在幹麻…吧
  • 在學期間在一間公司寫垃圾網站
  • 在系上計算機中心當幾個月的助教
  • 修作業系統設計與實作拿滿分
  • 大二機率被當
  • Leetcode 大概五六十題,包含很久以前寫的

前期

因為幾個月前剛弄完推甄的東西
有做一個簡單的 Resume
就把他稍微改一改錯字就丟上去了
然後還有去學校印一下成績單
還順便發現可能是因為有很多人提畢
所以我的系排名從 40% 變成 30% XD

一陣子之後就收到 HR 的表單
要填一些基本資料還有甚麼時候可以開始工作(有問你要不要當兵)
然後就填一下自己 ok 的時間,我是寫隨時

4/8 的時候收到 Phone Interview 的通知
還有附贈一些面試參考資料
但感覺沒什麼特別的,就是網路上查的到的那些東西
我是覺得 Google 在 Youtube 上傳的那些面試影片滿有用的

Phone Interview

現在 Google 會寄給你一個類似線上編輯器的文件,可以選語言,會有 Syntax highlight
所以不用太擔心以前說要在 Google Doc 上寫程式的問題
Google Meet 連結會在 Calendar 裡面有

我遇到的面試官是在 101 的台灣人
他大概遲到了一下子
問了一題應該算滿簡單的樹的 DP
快速寫出來之後
Follow up 就是他說有可能輸入會有問題
問我說可能會有那些問題,然後要怎麼偵錯之類的
我大概提出了四種問題
接下來就是分別針對這四種
把原本的實作加上偵錯功能
要層層疊加,就是最後一份要四種都能偵錯
無敵的吧
方法大概就是用 Set 跟找環(反正就檢查樹是不是真的樹)

找環我原本想用 Stack 實作結果寫得有點亂,感覺有點 Bug
他就建議我用遞迴的做,然後就滿順利的

隔天 HR 就寄信跟我說通過了,接下來要 2 Rounds Virtual Onsite
問我下周的時間

結果一直到下周二才跟我說星期四面試
讓我有點措手不及XD

Technical interview 1

面試官在上海,是個妹子XD
我原本很擔心要用英文,還好那天兩場都中文
問了一題很單純的題目,我看了心就涼了一半
因為這麼單純感覺就是要求空間複雜度
啊我就很爛

結果真的是,然後我真的很爛,就沒想法
一直亂講一些解法,然後又自打臉
還好最後有想出一個把 n*m 優化成 n+m 的方法
我解釋完之後她說還可以更少,然後就直接跟我講答案,可以變成 n
反正大概就是用我優化的方法在優化一次(但我沒想到,太爛==)

然後就開始實作,一路上都沒啥太大問題,就一些小 Bug
之後她就說我這實作多用了一些變數,問我說可不可以用少一點
這邊我馬上就說出怎麼弄可以弄更少,但她好像沒聽懂,覺得我搞得很複雜
所以她就告訴我她覺得怎樣弄可以變少
但我發現她的方法是錯的 XD
我就跟她解釋她這樣會錯在哪,就變得有點尷尬
後來還是讓他理解了我的方法,然後實作了

結果還有第二題
就一題簡單的 DP
很順利的就完成了

後面給我問問題的時間
我問她現在中國的學生還會覺得 Google 這種外商好嗎
還是都去國內的大企ˇ業,例如 BAT 之類的
她就講一些 Google 的生活比較好之類的,反正就講得滿開心的

Technical interview 2

這場也是遇到上海的人
問了一題飛機航班的問題
我大概知道要怎麼做
但還是先講了最簡單的 dfs 方法
他說這樣很慢
我就馬上說,喔,這可以用類似 Dijkstra 的方法弄一弄
他原本大概就是原本都一副漫不經心的樣子
我講出 Dijkstra 這個字的時候就突然很開心,然後一直微笑點頭

但是他好像沒有找到那個 shared doc
就問我上一場是在那裡實作
我就傳那個連結給他
然後他就順利進去了
環境弄好之後
我就等他把題目跟測資貼過來之類的,他也沒有叫我開始寫
然後他就一直不貼,也不講話
我以為他網路有甚麼問題(因為在上海)
然後我們就一直看著對方大概五六分鐘
他就說:阿你要開始寫了嗎

尷尬一陣子之後我就順利的實作出來,然後沒什麼問題
他就說那有一個XXX
說真的我愣了一下,因為我聽不懂他的中國口音
幾秒鐘才理解他是說 follow up

follow up 就是原本題目是 query 一次
現在改成 query 很多次
我就給了一個 DP 解法
然後把轉移公式打在下面
他就說好,讚讚讚
還好他沒有叫我實作,感覺我就做不出來==

到這邊還剩下大概二十分鐘
他就說其實還有一個更快的作法
但有點 tricky,給我個方向讓我想一下
我是很快就想到了,但他說現在這方法有個 worst case,就是 XXX
叫我想一下怎麼解決
結果我聽不太懂他那個 case 到底是啥情形,就卡了有點久
後來重新問一次那個 case 到底是怎樣,然後就很快就想到了
阿還好他沒叫我實作,也沒問我這個複雜度多少XD

Googleyness interview

原本說是要用英文
結果是一個在 101 的台灣人
主要就是問一些跟人分工的經驗
或是跟公司文化的問題
比如說如果你的隊友跟你有爭執你要怎麼做

我也不知道我回答得好不好

Technical interview 3

台灣人,但要用英文
是一個可能要用類似 window 的題目(我也不知道正解是啥)
我沒啥想法

他說先做 K=1 就好
我給了一個 n^2 的解之後又給一個 n 的
然後它就說好,開始實做
但我亂實做一通,一堆 Bug 而且有一些情形沒考慮到
後來才修好
總之都很不順利
然後時間就到了

後面就讓我問一些問題
我就問一些台北辦公室那邊都在做什麼之類的

這場真的很爛
不但我英文講得很破,破到有點難溝通
而且也沒想到什麼解法,實做又一堆問題

Technical interview 4

台灣人,用英文
這次英文講的滿順的,不知道為啥,可能剛剛有熱機過
前面先自我介紹一下
我就說我最近在研究作業系統之類的
他覺得很有趣,他說它第一次遇到興趣不是 ML 的人

結果是個算簡單的題目
我先給了 DFS 的答案
他說不錯,來寫一下
寫完之後他就說應該可以在變快
我就提出了一個 DP 的方法
他覺得不錯我就實做了

後來又說可以節省一下空間複雜度
我就又實做一個版本
然後時間就差不多了
感覺這場還算不錯
面試官是說空間複雜度還可以在省一點,不過基本上時間複查度有到最佳就很好了

結果

等了兩週就收到感謝信
就是那種很委婉的說他們決定不要在繼續推進
之後有符合你的職缺會在找你之類的
我有回信問說可不可以拿到一些 feedback 之類的
不過 HR 沒有回
但他們好像本來就不能提供這種資訊
總之整個面下來體驗是很好的
心得就是英文太爛、演算法也太爛

還好我有碩班可以念,繼續當學生
兩年後還可以在當一次 new grad
雖然一樣下去的機率比較高,嘻嘻