[心得] Google面試 & offer請益

作者: Dust2080 (Dust)   2023-08-05 23:24:12
背景4大混血 資訊相關科系
一線ic 軟體 0.5y + 一線ic韌體 1y
技能樹方面 c++ leetcode 600題 純刷題仔
其他技能除了C外 其他都接近0
希望認識的不要認親><
目前拿到2個offer
A公司
工作內容: bsp
待遇: (N + 16k) * 14
優點: 正常工時 &爸爸是一線大廠 & 技能樹在台灣發展性好
缺點: 要碰硬體
B公司
工作內容: 遊戲app backend
待遇: N * (13 + 2)
優點: 使用c++ & 軟體夢 & 短工時福利佳
缺點: 博弈 & 目前後端know how = 0
兩邊錢差不多,產業類別無所謂,比較在乎技能累積
兩邊的面試也有相當的難度,對於工程師的要求也應該會比較高
未來職涯希望幾年後能跳到在台外商 or 不排斥往國外發展
另外想問幾個點:
1.
對於BSP的了解就是讀懂硬體規格,然後讓他能work?
不知道這理解是不是對的 & 有沒有其他困難和有挑戰的點
2.
不同產業的後端的技能是不是能shift?
會不會因為展業導致技能樹受到侷限?
博弈的app後端技術在台灣的市場狀況如何,轉職會不會受限?
如果不方便留言的也可以站內信><
- - -
Google 面試分享(L3)
時程表:
2022:
6/7:HR LinkedIn 傳訊息
12/8:一面(coding)
2023:
2-4月:等新年度head count update & team match
6/6:二面(coding)
6/7:三面(coding, English)
6/8:四面(coding, English)
尋找願意跟我match的team manager
7/11:五面(behavior + team match)
(一年內都可以team match, keep waiting……)
- - -
google面試流程 (2023 新制)
正式面試一般有5關
4關的coding & 1關behavior
4關coding中會有2關用全英文進行(2-4關中間2關)
根據HR表示,今年開始面試流程有一些改動,
所以可以從時程表中可以看到很多team match
現在面試流程是這樣:
Step 1.
HR電話考試,通過可安排一面
Step 2.
一面,通過可安排team match
Step 3.
team match,這邊比較像是確認產品線,
我是選擇silicon,所以後續都是安排silicon的工程師來幫我面試
Step 4.
二面 + 三面 + 四面
Step 5.
尋找願意跟你team match的manager,由他來完成behavior
Step 6.
team match
(根據coding成績,極優秀的人可以先7再6)
Step 7.
Match上之後,會送hire committee,決定最後hire or not,有可能有加面的關卡
- - -
Step 1
HR電話問一些資料結構 & 演算法的問題
選擇題or問答題,會用英文出題
主要確認基礎程式能力和英文能力
我大概刷100題左右時進行
當時英文能力太差,都用中文回答也過了
- - -
Step 2
45分鐘coding面試,45分鐘是硬上線
會出一題類似leetcode的題目
要先說明打算怎麼解 & 分析時間複雜度
面試官同意後可以開始解題
邊寫要邊解釋每一行在做什麼
寫完之後需要自己建test case逐行驗證正確性
如果是比較簡單的題目會有follow up
我當時被問的是今年6月最後一天的daily (hard)
寫的時候有三個edge case沒考慮到
第一次他問我確定嗎? 我檢查一下之後發現改掉
第二次他問我要不要再檢查一下? 我又改了一個
第三次他又問確定嗎? 我說確定
然候他叫我跑test case,跑到一半才發現又錯一個地方
結果後來我還是通過了,而且feedback還很好
這一關比較像是測驗有沒有能力繼續往下走
如果這關沒過就會直接結束面試流程
- - -
Step 3
以往都是一面完之後,就會一路面到behavior結束
但現在會先進行一個team match,選一個想要的職缺
然後會從這個職缺的產品找人當後續面試官
讓你可以面試完的時候和他聊天,對部門多一點了解
每一個coding關,面試官都會獨立寫出feedback
feedback很詳細,會根據演算法 & 資料結構正確性之外
還會評論程式碼整潔度 表達方式 互動細節……等等都是評分項目
每場面試都是獨立的,面試官之間不會彼此討論
每一關面試官,會根據綜合評論,給出最後評分
Strong hire - hire - lean hire - lean no hire - no hire - strong no hire
我這關被問到簡單的string存取,模擬接收封包的情景
follow up 是模擬封包傳送錯誤的處理情形
解法不難也很直覺,大概是一般medium的難度
主要是考你怎麼選資料結構 & 如何update data
這關我拿到hire
- - -
Step 4
這一關是英文進行
題目是根據某些規則算西洋棋走法數
是在leetcode沒看過的題型
我有寫出次佳解,並說出最佳解的時間複雜度
時間不夠,沒有follow up ,但有問我可以怎麼優化
我只有回答出最佳解的方向,但不知怎麼實作
這關拿到lean hire
- - -
Step 5
這關也是英文關
一開始他貼跟昨天一模一樣的題目
如果出現這個情況一定要反應
不然會變成無效關,需要補面
後來他換了一題
根據某些情況算股票買賣時間點
也是leetcode沒看過的題型
因為我知道時間複雜度是O(n)
所以我一開始花了20分鐘想O(n)的解法,但是一直卡住
後來他給我一個提示
我花十分鐘寫了一個O(nlogn)的解法
他對我的解法和寫code能力很肯定
我也說我知道最佳解的方向,但是我一直想不到實作方式
我的負評只有花了20分鐘想不出有效解
其他評論都是正面的
這關拿到no hire
- - -
step 6
到這邊如果評分太差,會直接結束面試流程
如果評分很高,就會先送hire committee決定錄取與否
如果在中間,就會先team match
確認有team要你之後,他會幫你寫推薦信
增加通過hire committee的機會
我拿到三個評價分別為 hire, lean hire, no hire
介於中間,所以先進行team match
這時候hr會去問有沒有team manager想和你team match
你也可以自己找職缺,請HR幫你問
有找到人才會往下進行behavior,如果沒找到就一直等
面試流程一年內都可以進行
我後來match一個做Linux kernel的team
behavior就是一般的樣子,上網查很多資訊
Match過程蠻愉快的
manager會跟你介紹部門做的東西
並且一直問你喜不喜歡
不會問你會什麼,也不會考試
- - -
Step 7
後來team match沒有成功
因為manager有3個candidate可以選,最後選了別人
所以我現在還在等待team match的狀態
一年內都可以match,match成功才會送hire committee
送完之後會有三個可能結果,hire, no hire, hold
hold可能就會需要再加面
如果面試沒上,會進入冷卻時間
冷卻時間半年到一年,會依你這次面試差多少來決定
- - -
我目前規劃:
我會先找工作也是因為google面試流程跟馬拉松一樣
而且看起來距離結束還有很長一段路要走,還不一定會上
所以先找一份工作當成過渡期
也順便選擇未來的領域
之後會繼續面試google,也會嘗試其他外商
- - -
Google 面試刷題方式
L3(初級) - L4(中級) 應該都是以刷題為主
面試難度大概介於mid - hard
我這次被問的題目大概是1 mid, 3 hard
但不是很難的hard
我有朋友被問過極難的hard (leetcode 2242)
我大概刷100題面HR問答
250題面第1關
550題面234關
我準備的刷題方式
是把leetcode的study plan先寫完
然後每天寫daily
並且按照這個網站刷https://neetcode.io/
寫題目的時候
如果10分鐘內想不到最佳解(包含時間複雜度)
就可以直接找答案來看
並且把解法學起來
每題寫完的題目 也要去看看別人是怎麼解的
即使原本不用看解答也能寫對
並且把程式優化,修到最好的版本
要練習到每一題都要在第一時間想到最佳解
並且一次寫就能寫對的程度
面試當下如果說不出夠好的解法
面試官也不會讓你開始寫
可以練習用run確認有沒有compiler 問題
確認沒問題之後直接submit
然後要一次對
hard的題目也一定要寫
因為真的有可能問到這麼難
各種題目題型都要刷(dp, bs, graph, array, …….)
各種特殊演算法也都要會(union, trie, …)
Google面試重視的是能不能想出夠好的解法
並且在接近0失誤的情況下完成
還要能夠驗證正確性,清晰的解釋給面試官聽
以上全部要在45分鐘內完成
所以在平常刷題時候要盡量要求自己寫題能表現到完美
- - -
刷題的時候,每100題都是一個坎
基礎建立時期:
0~100是程式基本資料結構和演算法的建立,熟悉基本語法
100~200會接觸到簡單演算法的模板(DFS, BFS, BS, DP……)
題型熟悉時期:
200~300開始會接觸特殊演算法
這時候會自以為有點小成
但是有些題目還是會卡超久都想不到
才發現有些演算法根本想不到
300-400會開始熟悉所有題型
這時候會開始接觸各種題型的hard
並且熟悉每種題型的解法
開始練習看到題目就要知道該怎麼解
(有些題目跟你說解法,你還是不知道怎麼解)
(蛤?為什麼這題是Binary search?) -> 最常見
(這題dp條件要怎麼更新?)
解法優化時期:
400之後,9成以上的題目都難不倒你
medium 即使沒看過,基本也都能秒殺
hard題型如果遇過,也都能在1小時內寫完
這時候會開始優化解法
不只要寫對,還要寫的美,寫得漂亮
之後累積題目的速度就會變很快
也很容易寫到以前寫過的題目
可以看一下自己青澀時期的寫法
並且重寫一次,讓現在的自己把他修得更美
後面就是題目累積和增加熟悉度
打週賽基本上都能輕鬆快速完成3題
(但我每次第四題都TLE 囧)
- - -
Google面試前準備:
面試前一定要找朋友mock interview
最好是有面試過google的朋友
面試的時候需要邊寫code邊解釋自己在寫什麼
對於沒有練習過的人來說是一個很大的挑戰
尤其是還需要用英文講解
所以平常也要練習邊寫程式邊講解
面試當下不一定要寫出能夠work的code
所以call function的時候如果input參數忘記,可以簡單寫一下
跟面試官達成共識,讓他知道你寫這行想要做什麼就好
平常也要練習考慮各種edge case
並且練習全部想好怎麼寫之後再開始寫,不要邊寫邊想
也不要寫到一半才發現前面沒考慮到,又回去改
再來就是面試的時候可以多和面試官討論
例如確認input size or 有沒有負值
如果想不到解法,也可以先講暴力法
面試官都會斟酌給提示,引導你往最佳解思考
(我當時就是不確定還要硬掰,不好好跟面試官討論QQ)
- - -
如果有什麼面試細節不夠清楚的
可以留言或站內信問我
謝謝各位的觀看
作者: john11894324 (不要叫我大蘋果)   2023-08-06 00:31:00
看起來可以進google的都是神人
作者: ArayaHellCat (喵喵)   2023-08-06 01:14:00
推分享
作者: jackeighteen (拍感動人心的照片)   2023-08-06 02:00:00
推流程分享,感謝
作者: insomniablue   2023-08-06 10:16:00
神人感恩我印出來貼牆上自己做BSP不太推薦太dirtyWork你應該可以找ai 或演算法吧
作者: luckysmallsu (B.J.T)   2023-08-06 15:37:00
這個面試看完真的跪了
作者: toypoodle007 (玩具貴賓狗)   2023-08-07 08:53:00
外商裁人不手軟 要小心
作者: maydaychaaaa (Halo)   2023-08-07 18:56:00
加油啊
作者: keelungReeve (基隆李維)   2023-08-08 08:53:00
砍米國補台灣印度啊, 反正lowball你也會去

Links booklink

Contact Us: admin [ a t ] ucptt.com