[心得] 第二次 Google 面試洗臉心得

看板Soft_Job作者 (在沙漠裡尋找星星)時間7年前 (2017/02/05 04:57), 7年前編輯推噓126(126054)
留言180則, 118人參與, 4年前最新討論串1/1
標題寫得非常清楚,這篇是我去年第二次挑戰應徵日本 Google …… 然後再次被洗臉的故事。 第一次在臺北的面試由於 NDA 的關係不能分享整體面試內容 但是這次日本面試有特別確認過不用簽 NDA ,所以下面會講得很詳細 當然這不保證之後會不會被查水錶就是了,要是被查會回來把這篇毀屍滅跡 聯絡 recruiter (應該說被聯絡): 這次的面試並不是我主動投的,是 Google 一位負責亞太地區的 recruiter 找上門來: 「我有看到你去年應徵的記錄,請問你是否還有興趣再次應徵 Google 呢?」 其實我本來是打算在年底準備得差不多時自行應徵(因為我原先也是規劃一年準備期) 不過當時可能是想說這次居然有 recruiter 主動找上門來,擇日不如撞日 於是就馬上把更新好的履歷寄回去,開啟了第二次(洗臉)挑戰 面試準備: 除了履歷以外,其他項目都是在第一次面試失敗後開始利用下班時間準備的 所以這樣算起來,整個準備期間大概是十個月左右 如果是辭掉工作全心準備的話,聽其他有嘗試過的朋友提大概都是抓三個月 履歷: Google 面試時對於履歷內容的提問比例相對於其他公司算是比較少的 不過也不能保證完全沒有,所以面試前還是必須仔細確認自己寫在履歷裡的內容 確定到時候萬一真的被問起不會直接愣在原地 程式語言:由於四年工作經驗全是在做 Android 開發,我自然選擇了用 Java 應試 不過這裡的重點是一旦選定要用的程式語言就必須要詳細複習那個語言的語法 因為有些對程式碼特別要求的面試官會拿面試者的程式碼追問「為什麼要這樣寫」 (「為什麼 static 」「為什麼不用 float 」「這 call by reference 安全嗎」等) 所以比起「知道很多語言」,「把一種語言用到專精」反而比較重要 Leetcode :近幾年 Leetcode 的題目數量膨脹得相當快 直到我 on-site 面試前已經有大約 400 題,我自己是陸陸續續做了大概 340 題 如果是要挑戰 Google 的話,大致上有幾個利用方向: 1. 訂閱:這不是幫 Leetcode 打廣告(強調) 主要是我自己跟幾個有挑戰的朋友面試時都有碰到被 Leetcode 鎖住的題目 所以即使沒有自己付錢訂閱,有機會的話一定要打聽看看鎖住的題目 2. 參加比賽: Leetcode 現在每週末都有辦比賽,比賽中會放出新的題目 運氣好的話會碰到之後會鎖起來的題目,等於不用訂閱就看到題目了 3. 如果時間有限,練好一定基礎之後就從最後一題往前做 因為越後面的題目通常都是最近去面試的挑戰者回報的新題目 4. 最後就是碰碰運氣了,因為最近回報的題目裡出現賽局或是證 NP-Hard 的題目…… 基本上準備面試時不太可能涵蓋所有類型的題目,所以這種的就只能準備多少算多少了 Code Jam :由 Google 舉辦的程式競賽,官方會在比賽結束後放出題目和解答 有些面試官會拿比賽題目當面試題目 系統設計:就是那種「要你設計一個 Twitter 或是設計一個 Amazon 」的題目 這種題目對於沒有雲端背景的面試者來說確實比較難以下手 但是很不幸的,不只 Google , FLAG 或同等級的大型網路公司面試都很常出這種問題 (有傳聞說掛五年以上資歷的工程師面試 Google 一定會遇到至少一題系統設計題) 我自己也沒有相關經驗,只能在面試前到 HiredInTech 網站上看看要怎麼應對這種題目 那個網站上面很詳細地解釋了該怎麼一步一步地進行系統設計討論 (釐清需求→設計架構→發現瓶頸→改進架構),對於沒經驗的面試者幫助很大 電話面試: 我當時的打算是在電話面試上速戰速決(馬上安排面試,不再花時間準備) 這樣萬一電話面試就翻船的話,我就可以馬上評估要不要準備其他公司的面試 所以其實我這次有在電話面試上小賭了一把,賭電話面試只會出 medium 以下的難度 (聽說運氣很背的話電話面試就會被 hard 級題目洗臉) 這樣以我八月當時的準備狀況應該就足以應付大部分的題目 結果我運氣還不錯,這次碰到經典題大數相加(兩個超出 long 長度的數字相加) 題目本身不難,但是卻碰到一位對語言相當要求的中國面試官 我在程式碼中為了保險起見加的 explicit casting 全被他抓出來問是否真的有必要加 (他本人沒有表達預設立場,純粹是要測試我對 Java 的 casting 規則熟不熟) String 和 StringBuilder ( mutable string )的使用也被提出來討論 幸好最後還是得到面試官認可,安全進入下一關 On-site : 電話面試完四天後,我收到另一位 recruiter 來信通知準備安排 on-site 面試 (聽說第一位聯絡我的 recruiter 只負責到電話面試結束,所以後面交棒了) 不過當時我提了很多麻煩的條件: 1. 由於當時我還需要一些時間準備,所以希望把 on-site 時間排到兩個月後 2. 我跟 recruiter 提出希望能「自費飛去日本的 Google Office 面試」 原因還滿多的,包括臺北人力吃緊,排面試的時間限制非常多(很可能要分兩天) 以及希望能先去看看日本辦公室的樣子、還有同學建議不要去臺北 office 面試之類的 後來喬了好一會兒才終於敲定十月中到日本面試 當天的面試官一共四位,沒有實習面試官;全程以英文(我選的語言)進行 第一位美藉面試官考了 Leetcode #308 ,但是要把取總和的函式改成取平均 當時我一聽到這題心就涼了一半,因為我知道這題會扯到 Fenwick Tree 但是整個準備過程中用到 Fenwick 的題目不到 1% ,所以我沒有練熟…… (原理大致上能解釋,但是沒把握能寫成 code ) 或許是出於保守心態吧,最後我選擇忽略 Fenwick Tree 向面試官提出 naive 和 prefix sum 兩種解法、然後照要求 coding 和比較複雜度 另外由於這題被改成取平均,所以有討論到要以什麼型態回傳(精度)的問題 第二位面試官是個嚴肅的日籍中年工程師,看起來就像一般日本上班族: 1-1. 什麼是中位數?什麼狀況下會考慮使用中位數而非平均數? 1-2. 寫一個函式吃三個數字吐其中的中位數、並附上 unit test 測資 1-3. 你的函式執行一次最多會用到幾個 > 、 < 或 = ?有沒有辦法減少? 為了涵蓋到所有 case ,我在寫函式時直接窮舉了所有可能組合, 結果最多會比到五次,寫完後馬上被面試官用 1-3 (寫完後才問)打臉 最後印象中可以砍到最多只要比三次 2. 設計一個負責收集 log 的系統;這個系統要能收集從多個伺服器傳來的 log 、 並讓工程師調出指定時段內的所有 log 第三位面試官是位年輕的日本工程師,面試經驗比較淺: 1. 看履歷上摸過什麼技術、然後問該技術相關的東西(例如 Unicode ) 2. Road to Freedom (遊戲 Fallout 4 裡的任務) 首先會播一段該任務的攻略 https://youtu.be/v6_cRSULPZ8
(有玩的板友注意有雷) 然後問你:如果給定轉盤上的字 r 和要輸入的密碼 p 你能不能算出最少需要幾步(轉盤轉一格和按中間各算一步)才能輸入完畢? 2-1. 在討論時我提出了「只能逆時針旋轉」和「 r 沒有重複字母」兩個條件來簡化問題 所以面試官要求我寫出可以解簡化問題的 code 2-2. 把簡化條件移除,提出可以解決完整問題的演算法(不用寫 code ) 我在面試前有聽別人提過 Google 喜歡考 DP ,所以當初準備時有集中練習 結果在這裡派上用場,最後用 DP 解出這題,算是今天四場面試裡最順利的了 第四位美籍面試官有帶一位實習面試官,不過實習面試官只是來旁聽的,不會參與討論: 1. Leetcode #66 或 #369 ,就是給個大數要加一(資料型態不限) 2. 給即時通訊軟體設計一個 cache 存放最近有發言的使用者帳號資料 換句話說就是要一個 LRU Cache ( Leetcode #146 ) 結果我當時不知道哪根筋不對, Hash Map + Queue 居然寫成 Hash Map + Min Heap (可能是太緊張只注意到要追蹤 timestamp 最小的那筆吧),而且面試完才發現…… 最後結果: On-site 面試完八天後, recruiter 打來通知她已經收到面試報告 但是只有一位面試官認為可以,其他三位都認為我「某方面 needs improvement 」 (據 recruiter 解釋,她不能透露誰是誰,但是一位認為我 coding 行、演算不行, 另外一位卻認為是演算可以、 coding 不行;第三位則是認為系統設計不行) 所以 recruiter 認為不需要送 Hiring Committee ,就直接告知我被 rejected (這種不送 Committee 直接 reject 的狀況好像在臺北也會發生 我有一位朋友去臺北 on-site ,結果隔天人家馬上打來打槍) 老實說得知結果的當下真的有點沮喪,各種負面情緒混著出現 (「花了一整年卻是這種結果」、「四種結果還被解讀成是狀況不穩」之類的), 不過冷靜下來反省一下面試當時的狀況,也確實有不少應該改進的地方: 1. 說演算不行的可能是第一位考 Fenwick Tree 的 這只能怪自己當時沒有充分準備、還有沒把握解釋就選擇繞路的反應吧 2. 只有第二位和最後一位有考設計題 不過感覺上應該是最後 LRU Cache 裡資料結構用成 Heap 問題比較大 3. 這樣看來,說 coding 不行的應該就是希望我找中位數的第二位了 所以就當成是一個寶貴的經驗,下次再加油吧。 ……當時我是這麼想的。 兩個月後我在一次偶然機會下拿到了 wish list 裡另一家公司的 offer 雖然還是有朋友希望我繼續挑戰 Google 不過老實說自己已經不太想繼續過這種只有工作 + 準備面試的生活 (相對犧牲了運動、學其他東西或是搞自己 project 的時間,生活品質也不好) 所以最後選擇拿了那份 offer ,現在正在收行李準備展開新的生活 至於這次經驗就分享給有興趣挑戰的板友,希望能有所幫助。 祝有志之士能塊陶成功! 追記: 沒想到這篇會吸到將近 50 推和一堆恭喜(一堆恭喜的洗臉文……開玩笑的) 後面會補些板友們比較好奇的內容 1. 為什麼不在臺北面試? 主要是因為 recruiter 在安排 on-site 前就有和我說明臺北目前人手嚴重不足 若要安排在臺北面試,面試官的安排可能相當難處理 必要場合會請其他 branch 的面試官透過視訊面試或是拆成兩天進行 (若面試者第一天表現不佳,甚至有可能直接取消其他天的面試) 由於我是在職應徵,面試需要請假(而且是同事一看就知道有鬼的那種請法) 所以自然不希望 recruiter 把面試拆成太多天進行 2. 最後是拿了誰的 offer ? 日本 Amazon 。對,就是那個大家都以為沒在招 SDE/SWE 的地方。 之後我會另外寫一篇心得解釋這份 offer 是怎麼冒出來的,不過現在就先這樣吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.58.19.102 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1486241833.A.6D3.html

02/05 06:09, , 1F
感謝分享
02/05 06:09, 1F

02/05 06:17, , 2F
強者,謝謝分享!
02/05 06:17, 2F

02/05 06:40, , 3F
謝謝分享
02/05 06:40, 3F

02/05 06:50, , 4F
蠻棒的,工作跟生活的抉擇
02/05 06:50, 4F

02/05 07:02, , 5F
02/05 07:02, 5F

02/05 07:18, , 6F
推推
02/05 07:18, 6F

02/05 07:28, , 7F
也是很強了 謝謝
02/05 07:28, 7F

02/05 08:22, , 8F
感謝分享+Congrats!
02/05 08:22, 8F

02/05 08:27, , 9F
02/05 08:27, 9F

02/05 08:27, , 10F
02/05 08:27, 10F

02/05 08:27, , 11F
推 恭喜順利找到wish list的工作
02/05 08:27, 11F

02/05 08:43, , 12F
02/05 08:43, 12F

02/05 09:03, , 13F
推!! 考題方面的心得很有幫助!!
02/05 09:03, 13F

02/05 09:07, , 14F
推推
02/05 09:07, 14F

02/05 09:23, , 15F
感謝分享
02/05 09:23, 15F

02/05 09:29, , 16F
感謝分享 推
02/05 09:29, 16F

02/05 09:34, , 17F
感謝詳細心得。這面試真的好硬…
02/05 09:34, 17F

02/05 09:54, , 18F
想問不想去台北on site的原因是什麼?台北比較難嘛?
02/05 09:54, 18F

02/05 09:56, , 19F
分享推
02/05 09:56, 19F

02/05 10:05, , 20F
感謝分享
02/05 10:05, 20F

02/05 10:16, , 21F
推 恭喜你~
02/05 10:16, 21F

02/05 10:23, , 22F
感謝分享,高手推!!
02/05 10:23, 22F

02/05 10:38, , 23F
感謝分享
02/05 10:38, 23F

02/05 10:44, , 24F
太強大了, 推高手
02/05 10:44, 24F

02/05 10:53, , 25F
google有on-site三振條款 下次on-site可能是最後一次
02/05 10:53, 25F
這個我也有聽說,不過 Google 的內部條款有些其實不是硬性的 比方說理論上我在第一次結束後應該是一年內不能再投 但是這次的 recruiter 卻在八個月後就成功地把我拉去再洗一次臉 不過就如同我最後說的,我大概有好一陣子不會再嘗試了吧

02/05 11:09, , 26F
推分享! 果然硬~
02/05 11:09, 26F

02/05 11:12, , 27F
感謝分享,覺得是不同的世界QQ
02/05 11:12, 27F

02/05 11:23, , 28F
感謝分享
02/05 11:23, 28F

02/05 11:40, , 29F
想知道為什麼不去台北+1
02/05 11:40, 29F

02/05 11:44, , 30F
強者,感謝分享
02/05 11:44, 30F

02/05 11:49, , 31F
感謝分享
02/05 11:49, 31F

02/05 11:51, , 32F
推個
02/05 11:51, 32F

02/05 12:05, , 33F
感謝分享
02/05 12:05, 33F

02/05 12:25, , 34F
不去台北就單純想出國吧. 能往上爬當然就離開台灣
02/05 12:25, 34F

02/05 12:27, , 35F
這不是PM版的兔大嗎XD
02/05 12:27, 35F

02/05 12:28, , 36F
我是8月底~9月面的 我工作約2年10個月 有考系統設計
02/05 12:28, 36F

02/05 12:29, , 37F
我是在台北完成面試 但當初設定成面試日本的樣子
02/05 12:29, 37F

02/05 12:31, , 38F
不少是外國面試官打電話面試 台灣能面的人太少的樣子
02/05 12:31, 38F
還有 102 則推文
還有 10 段內文
02/07 13:50, , 141F
就算在台灣TOP 1%人才過去應徵 .. 他們可能見怪不怪
02/07 13:50, 141F

02/07 13:51, , 142F
我姊夫也被美國總部洗臉過 他們題目也許基本...
02/07 13:51, 142F

02/07 13:52, , 143F
但他們要的是寫出最有效率的candidate...
02/07 13:52, 143F

02/07 15:19, , 144F
02/07 15:19, 144F

02/07 16:26, , 145F
推爆 :D
02/07 16:26, 145F

02/07 20:27, , 146F
就算有點天份也要靠努力才能到達 Google 要求的標準
02/07 20:27, 146F

02/07 20:32, , 147F
不好意思有點不客氣,但是抱持這種想法永遠到不了那個水平
02/07 20:32, 147F

02/07 20:33, , 148F
我朋友 Googler 說也有很多是刷了幾百題準備,考進來的
02/07 20:33, 148F

02/07 20:33, , 149F
IOI ACM 那群神人也都是上千題的練習堆上來的
02/07 20:33, 149F

02/07 20:34, , 150F
沒有人天生就會寫程式的,努力比天份更重要
02/07 20:34, 150F

02/07 20:43, , 151F
02/07 20:43, 151F

02/07 21:04, , 152F
就是靠努力刷題啊 刷過就是天才 沒刷過就是笨蛋
02/07 21:04, 152F

02/07 21:04, , 153F
問一個最簡單的 我現在心裡想一個數字多少?
02/07 21:04, 153F

02/07 21:05, , 154F
我不講 你再天才也想不出來
02/07 21:05, 154F

02/07 21:17, , 155F
感謝回覆,看來也是因人而異
02/07 21:17, 155F

02/07 21:32, , 156F
推1Ni 覺得努力型沒用就不去努力根本是不負責任的說法
02/07 21:32, 156F

02/07 21:33, , 157F
哪個強者不是花大把時間在增進自己? 說自己不是天才的同時
02/07 21:33, 157F

02/07 21:33, , 158F
也先看看你有沒有付出跟天才同等的努力
02/07 21:33, 158F

02/07 21:55, , 159F
光是leet code題目能搞懂最優解 已經是高出平均智商不少
02/07 21:55, 159F

02/07 21:58, , 160F
看過Quora有人認為FLG搞這樣的面試方式是因為不能
02/07 21:58, 160F

02/07 21:59, , 161F
以智商來當篩選條件 只好用這類題目替代智力測驗
02/07 21:59, 161F

02/08 00:19, , 162F
QQ 望塵莫及的高手~光英文就追不上
02/08 00:19, 162F

02/08 03:00, , 163F
這篇一定要蒐藏!!!!大推~~
02/08 03:00, 163F

02/08 05:51, , 164F
強!
02/08 05:51, 164F

02/08 09:17, , 165F
其實英文要求不高 能溝通就好
02/08 09:17, 165F

02/08 10:34, , 166F
推~
02/08 10:34, 166F

02/09 08:03, , 167F
推 強者
02/09 08:03, 167F

02/09 10:50, , 168F
強者推
02/09 10:50, 168F

02/11 01:47, , 169F
02/11 01:47, 169F

02/11 14:41, , 170F
謝謝分享
02/11 14:41, 170F

02/12 18:44, , 171F
沒事來逛版 看不懂你在說啥 都覺得你很牛~
02/12 18:44, 171F

02/13 11:38, , 172F
有分享一定要推的
02/13 11:38, 172F

02/13 17:48, , 173F
強者!
02/13 17:48, 173F

02/14 01:48, , 174F
強者,謝謝分享
02/14 01:48, 174F

02/16 09:18, , 175F
強者!
02/16 09:18, 175F

02/20 16:45, , 176F
感謝分享,雖然我自已有拿過google的offer,但看到這樣
02/20 16:45, 176F

02/20 16:46, , 177F
的文章總有種換作是我,我一定被刷的感覺..
02/20 16:46, 177F

02/22 08:07, , 178F
push
02/22 08:07, 178F

06/17 09:05, , 179F
推!恭喜
06/17 09:05, 179F

09/03 16:53, 4年前 , 180F
好文 推
09/03 16:53, 180F
文章代碼(AID): #1Oba0fRJ (Soft_Job)