《前言》
雖然之前有在 Oversea_Job 版分享過類似的心得文,
但由於那篇比較像是雜談,所以想說稍微整理一下內容再分享到這個版上。
希望能夠幫助到那些以後想要應徵的人~
《背景介紹》
113電資學士班(已停招),目前以交換學生的身份在東京讀書。
大學時期除了當了一學期的TA跟在中研院實習之外,並沒有特別的經歷。
由於暫時沒有升研究所的打算,加上從以前就一直很嚮往在海外工作,
於是我就趁在日本交換的期間試著找看看這裡的工作。
《準備》
由於我鎖定的都是SWE的職缺,
我從下定決心要找工作開始每天都會用閒暇的時間刷Leetcode,
兩個多月以來大概刷了130題(27% Easy、60% Medium、13% Hard)。
不得不說勤刷Leetcode對於大部分公司的coding test確實有很大幫助,
我也是在刷題時順便複習Data Structure跟Algorithm。
在收到Google onsite interview的邀約之前其實我有被不少公司在
coding test的關卡刷掉。雖然不知道是因為自己本身coding能力不足,
還是自己的背景跟公司不符,我依然抱著全力以赴的精神去面對每個機會。
《流程》
0. 投履歷(3/22)
某天無意間看到日本Google有在徵SWE new grad後,
我就請在台灣的朋友幫我掃描大學的成績單,然後連同履歷一併寄出去。
1. Online Assessment(4/18)
履歷寄出去隔了一週後recruiter聯絡了我,
並且邀請我在指定的時間參加online assessment。
測驗的內容出乎意料的容易,一共考了兩題難度Leetcode Easy-Medium的題目
(Optimization Problem跟All Pairs Shortest Path)。
一共有120分鐘的時間可以完成。
2. Phone Interview(5/13)
隔了一週recruiter來信告知通過OA,
同時Recruiting Coordinator A聯絡我並跟我約好phone interview的時間。
在phone interview時interviewer一共問了三個題組,時間大約為45分鐘。
一題字串處理題、一題Pre-order Traversal實作題跟一個觀念題
- Why should we increase the capacity of a dynamic array exponentially ?
- Why not linearly?
前兩題因為勤刷題的關係我很快地就解出來,
第三題雖然當下我沒有立即回答出來,
但在interviewer的引導下我完成了基本的數學推導,並給了差強人意的答案。
3. Onsite Interviews(5/24)
phone interview完隔天我收到了onsite interviews的邀請。
由於我目前就住在日本,我跟recruiter要求想在Tokyo office進行onsite。
Recruiter答應了要求,並透過Recruiting Coordinator B跟我約了onsite的日期。
onsite當天遇到第一個interviewer時,
我很好奇的問了他一下是不是要簽NDA之類的文件,
結果他表示「我從來沒有聽說過有這東西耶!」。
雖然想在這裡透露面試題目的細節,不過為了公平起見我還是點到為止就好。
- Interviewer A 考了Parenthesis Matching相關的題目
- Interviewer B 要我實作出一個能在graph(2D Array)上畫直線的Function
- Interviewer C 考了一個Breadth-First-Search on 2D Array的應用題
- Interviewer D 考了Greedy Algorithm裡經典的Scheduling Problem
當天一共有四場45分鐘的interview,全程都是以英文進行。
而在第二場跟第三場之間有一個短暫的lunch meeting讓你跟現役googler聊天。
每場interview的一開始interviewer會先跟你講一下題目的specification,
接著會有一段時間讓你跟interviewer討論你解題的思維。
如果interviewer認為你的解法可行(儘管不一定是最佳解),
他會請你先把code打在Chromebook上或寫在白板上,接著跟你討論你寫的code。
以下是幾個常被問到的問題:
- Time Complexity?
- Space Complexity?
- 你覺得你的code可以處理 edge cases嗎?
- 你覺得有哪些input可能會讓你程式crash?
(例如return (y/x) 而使用者輸入x = 0, y=5)
- 你覺得有更好的解法嗎?
如果你的答案已經是最佳解的話,
interviewer這時可能會出一些follow-up question考驗你;
如果你的答案還有改善的空間的話,interviewer會適時地引導你走向更好的解法,
然後要求你把不同的解法寫下來並且比較兩者。
這次面試題目的難度大致都在Leetcode Medium-Hard,
其中第四題我因為很快就提出最佳解,
follow-up的難度一口氣被提升到Hard,當場直接被考倒。
綜合我在onsite的心得,
我認為比起卯起來自己解題目,更重要的是把你的想法傳達給interviewer,
並且適時的跟interviewer交流想法。
大部分的interviewer都會積極的跟你溝通,但不幸的我還是有遇到
愛理不理的interviewer把場面搞得很冷,只能說溝通真的很重要。
4. Hiring Committee(6/7)
Onsite完隔了幾天,我主動寫信給recruiter想詢問onsite的結果。
結果得知我的feedback是positeve的,而他也決定把我的申請轉到HC。
同時recruiter也要求我提供最新的履歷、成績單、competing offer等,
並詢問我有沒有對哪個team特別有興趣。
在lunch meeting時陪我吃飯的人有提到一點他們team的資訊,
而剛好他們在做的東西跟我的背景有一些關聯,所以我就表示想加入那個team。
由於我有跟recruiter說明我已經有拿到其他公司的offer,
他答應他會盡快處理我的申請。
recruiter在6/3通知我他已經把我的package寄出去,並在6/7通知我通過HC。
5. Team Match(6/19)
在Team Match的階段我原本以為recruiter會幫我安排跟team manager聊天的機會,
沒想到recruiter隔了一週告訴我我想進的team對我的也有興趣,
所以就把我的申請推向了最後一關。
我有聽說不同的office在team match時有時會有不同的流程,
也有可能是因為我competing offer的deadline快到了,
recruiter幫我省略了一些部分(?
雖然team match的階段跟我想像的有些出入,
不過能match到自己想進的team真的是還蠻開心的。
6. Offer Review(6/28)
最後的offer review真的就是漫長的等待啊~
雖然recruiter答應我會在我competing offer的deadline前把一切處理完,
沒想到居然剛好壓在deadline前5小時通知我的offer被approved...
當然offer review的階段因為是北美的team在負責,會有一些delay也是難免的。
感謝recruiter能在時間內把一切都處理好,
也很感謝另一間給我offer的公司前願意等待我一個多月(我大概延了3次deadline)。
《總結與心得》
能走到這裡完全是意料之外(感謝主!)
在被很多公司刷掉拿到第一個offer時,我其實已經決定要去那間公司。
沒想到結局居然來個大逆轉,只能說不到最後千萬不要放棄!
與其他的SWE求職者相比我的履歷其實還蠻平庸的,
沒參加過任何競賽、也沒有企業實習的經驗,
大學時我幾乎都專注在課業上跟大三時當助教。
能挺過這麼多面試真的要感謝那些熱心栽培我們的教授!
這次的求職經驗也讓我體會到即使沒有很豐富的背景,
只要能把基礎學問顧好(特別是Data Structure跟Algorithm!)
以及擁有無比的熱誠,終究是能找到自己的天下。
當然進到公司只是個開始,日後還有很多要學習的地方,
我也期許自己在進到公司前能夠持續精進自己。
「人生有夢,築夢踏實」
與大家共勉之