最近終於準備收 offer 了,想分享一下挑戰 big G 的一點經驗與心得,
可能會寫得比較像流水帳,大家輕鬆看看就好。
會試著面試的緣由是看到前同事挑戰成功,覺得自己好像也有點機會試試看。
殊不知總共挑戰了三次,從 2018 年底到 2021 年中終於塵埃落定。
然後這篇主要會分享前兩次失敗的經驗,跟從中獲得的一些教訓,
下一篇才會提供成功的經驗,希望能幫助到一些還在努力的板友。
1. 2018 年底,第一次面試,職位:Software Engineering Productivity
第一次是以一種嘗試的心態進行,Leetcode 大概 100 題就上場了
HR screen 時問了一些演算法複雜度與說了些英文,
phone interview 被問了一題 easy-medium 的題目,順利解出進 onsite,
然後 onsite 前兩場就被直落二了...
第一場中文對談,問了一題 easy-medium,是某個 medium 題目的子題。
結果沒跟面試官討論好,直接就寫了最直觀的暴力解,
寫完立刻就被打臉說這不是最佳解,要我再想想看。
然後我的步調就亂掉了,拿了 hint 之後好不容易找到對的方向,
但最後還是寫了亂七八糟的 code 出來。
第二場也是中文對談,是一題 medium,
其實方向是對的但因為自己不太確定,所以講的有點支支吾吾,
最後被問時/空複雜度直接結巴。
後來自行檢討這兩場失敗的原因,應該是出在「寫 code 不乾淨」,
還有「太快開始寫 code」跟「對寫下的 code 不夠有信心」吧。
不過原本就是以一種嘗試的心態進行,失敗其實不大意外,
但其實心裡隱隱約約覺得,這兩題最後的解題方向都是對的,
如果有好好練習準備,感覺應該還是有機會過的。
最後以一個有點遺憾又不太意外的心態結束這一回合。
2. 2019 年底,第二次面試,職位:Software Engineering Productivity
其實 2019 年中就有收到 HR 的再嘗試邀請,
但當時女兒剛出生,在醫院陪產整個漏看信件 lol
在 2019 年底才又真正被聯繫上。
電話接起來後,HR screen 直接措手不及英文開場,
講一講後突然說「我們其實可以說中文」,然後就轉成中文溝通 XD
也沒被問制式化的問題了,直接就安排 phone interview。
這次心裡想說機會來了,要來好好把握。
直接跟公司多請了六個月的育嬰留停假,領著勞保局給的補助打算拼了。
這段時間大概跟我考研所的時間有得拼,
每天除了吃飯睡覺以外,就只剩下刷題,
直到面試前累積了 600 題左右吧,以一個好像還行的心態上場,
...結果 phone interview 差點崩掉。
其實這次 phone interview 不難,只需要用到簡單的數學概念就能解,
難度應該只有 easy,什麼演算法資料結構都用不上,根本暖身題而已,
但在當下我緊張到頭腦一度空白,最後五分鐘才想到解法一口氣寫完。
原本以為完蛋,結果收到 HR 的信內寫「well done」,
有點摸不著頭緒的進入 onsite 流程。
這次安排面試前有被問說想面 junior 難度還是 senior 難度,
可能是因為我的工作經驗剛好卡在四年多吧,L3 or L4 都可以試試,
經過一番掙扎最後選了 senior 的難度,
這邊雖然說是 senior 難度,但應該對應到 L4 左右而已而不是 L5,
但這次被告知除了三場 ds/algo 以外,會再有一場 system design。
當下有點傻掉,因為似乎 2018 還沒有規定要面 system design,
所以先寄了信問能不能把 system design 換成一場 ds/algo 來面,
結果答案是不行,好吧,頭都洗下去了硬著頭皮來面對。
還好能把 ds/algo 都排在一天,其他的排另一天,想著先過 ds/algo 再說。
...嗯,結果就是我沒再被安排另一天,
ds/algo 三場的 feedback 不夠好直接又被結束這回合。
onsite 第一場全英文對談,題組式的 medium 情境題,總共有三題在這題組中。
要思考他給你的某種要求實作出可以對應的資料結構。
我有記取了前一次面試的教訓,
在動手寫 code 前先跟面試官釐清可能的 input 與想做的方法,
第一題算是順利度過。
第二題是第一題的改條件,變得更難處理一點,
一樣先跟面試官討論可能的 input,結果不小心解鎖第三題 XD
當下打算寫個第二題跟第三題都可以處理的做法,
但是一直沒抓到好的解法,過程中有感覺到面試官一直想幫助我,
很可惜最後時間快不夠了只好退回來以一個沒那麼漂亮的解法來解第二題作結。
onsite 第二場是中文對談,總共被問了兩題,
第一題是 easy,聽完題目做法大概就有底了,
跟面試官討論後寫 code 都很順利。
第二題是 medium,聽完題目有個大概的想法,
也是跟面試官討論後請我開始寫 code,
但是有點可惜對於這個類型的題目我不是那麼熟悉,
所以修修改改了 code 後,最後的版本應該也有些 edge case 沒處理好。
onsite 第三場全英文對談,也是兩題,
第一題是 easy,也是聽完題目有底直接討論開始寫,
結果跑第一次 dry run 時自己跑錯 lol,重跑一次發現我寫的 code 是對的,
當下有點糗 XD
第二題是一題 medium,這題我花了很多時間跟面試官溝通一些 edge case,
但因為是全英文,感覺自己沒有很好地表達出自己在考慮的東西,
弄了很久才終於得到想要的解答,以至於最後只口述了可能的做法來不及寫 code。
其實這三場下來我自己覺得應該已經比第一次面更有機會了,
但自己也認知到面試當下犯了太多錯誤,像是:
- 不夠穩定,臨場怯場影響表現太多
- 想一蹴可幾,但穩穩一題一題解更重要
- 對某個題型不熟悉,想法若有似無比完全沒想法還更令人懊惱
- 對自己的 code 掌握度不夠,dry run 不應該跑錯
- 時間掌握度不夠,英文表達能力要再加強
嗯,最後不意外的以 feedback 強度不足,直接結束了這一回合。
也解決了我要另外準備 system design 面試的煩惱(?
但其實收到拒絕當下真的還滿灰心的,畢竟都請了這麼長的育嬰假,
感覺對家人很過意不去,經歷了一段調適後才終於又回到正軌。
(待續)