《前言》
背景:113電資學士班(已停招),目前以交換學生的身份在東京讀書。
由於暫時沒有升研究所的打算,加上從以前就一直很嚮往在海外工作,
於是我就趁在日本交換的期間順便搭上了他們的就活(求職潮)。
順帶一提,日本的大學生一般都會在大三的春假到大四上這期間(2~6月)找工作,
拿到內定(offer)的話隔年4月一畢業後就立刻到公司報到。
由於我結束交換後還得先回台灣當兵,我找的都是隔年4月就職的職缺(20卒)。
《準備》
由於我主要鎖定的是Software Engineer的職缺,
我從下定決心要找工作開始每天都會用閒暇的時間刷Leetcode,
兩個多月以來大概刷了130題(27% Easy、60% Medium、13% Hard)。
不得不說勤刷Leetcode對於大部分公司的coding test確實有很大幫助,
我也是在刷題時順便複習Data Structure跟Algorithm。
《面試過程》
● 日本Google(Software Engineer)
Entry Sheet→Online Assessment(120 mins)→Phone Interview(45 mins)→
Onsite Interviews(45 mins * 4)→Hiring Committee→Team Match→Offer Review→Offer Get
在我寄出履歷後我本來已經做好被刷掉的準備,
畢竟都被日本微軟發了無聲卡了,剩下的應該好不到哪裡去。
沒想到隔了一週後recruiter聯絡了我,並且要我在指定的時間參加online assessment。
測驗的內容出乎意料的容易,考了兩題難度Leetcode Easy-Medium的題目
(Optimization Problem、All Pairs Shortest Path)。
在我通過online assessment後recruiter便跟我約好phone interview的時間。
在phone interview時interviewer一共問了三個題組。
一題字串處理題、一題Pre-order Traversal實作題,跟一個觀念題
- Why should we increase the capacity of a dynamic array exponentially ? Why not linearly?
前兩題因為勤刷題的關係我很快地就解出來,第三題雖然當下我沒有立即回答出來,
但在interviewer的引導下我完成了基本的數學推導,並給了差強人意的答案。
phone interview完隔天我收到了recruiter的邀請
到日本Google office進行onsite interviews。
Onsite interview當天遇到第一個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
每場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,當場直接被考倒。
綜合我在日本Google onsite的心得,
我認為比起卯起來自己解題目,更重要的是把你的想法傳達給interviewer,
並且適時的跟interviewer交流想法。
大部分的interviewer都會積極的跟你溝通,但不幸的我還是有遇到
愛理不理的interviewer把場面搞得很冷,只能說溝通真的很重要。
雖然四場interview的題目跟大部分的follow-up我都有解完,
但因為自己的一些小失誤,我對onsite的結果沒有抱太大的期待。
其實Google能走到onsite對我來說已經是一種鼓勵了,
只能期許自己幾年後再戰Google。
● 日本趨勢科技(製品開発職 R&D)
Entry Sheet→Coding Test(60 mins)→一次面試(60 mins)→
二次面試(60 mins)→Web Test→三次面試(40 mins)→
最終面試(90 mins)→内々定
一開始我其實就有注意到日本趨勢科技,
但在我了解到他們主要都是招營業職後,我便打消了念頭。
之後偶然間再次點開他們網頁時,我才驚覺他們
原來有在招Software Engineer,只可惜申請時間已經過了。
一個月後,趨勢科技某天寄了通知信表示R&D部門又有在徵人,
我心想「不能再錯過了第三次了!」於是就鼓起勇氣繳交entry sheet。
繳完entry sheet後趨勢科技便寄給我coding test(codility),
雖然只有一題但難度大概有Leetcode Medium-Hard。
由於那陣子才在Leetcode上遇過Two Pointer的問題,
於是我就用類似的概念把這題解決掉。
coding test後隔幾天我就收到了一面試的通知。
在參加趨勢的面試前我有事先準備了一下日本企業面試時常被問到的問題。
一面是由人事部的一個職員負責在面試我,題目類型以behavioral questions居多。
二面時是由R&D部門的兩個社員負責面試,
他們除了問我一些我有參與過的project的細節,
還把我coding test時寫的code印出來要我解釋
(看到test report上的100分真的有股莫名的成就感,感謝Leetcode讚嘆Leetcode!)
大概是因為二面時大家都是engineer,談話的氣氛非常輕鬆自在,
隔天我就收到了三面的通知了。
在收到面試通知時,HR姊姊告訴我我得在下次面試前
完成線上測驗(日文、數學跟人格測驗),
順便預告我三面時會由R&D的部長跟人事部的部長親自面試。
由於在那之前我沒有碰過線上測驗,為此我還特別買了模擬試題事先練習,
結果當我打開測驗系統準備考試才發現
「しまった~他們用的線上測驗是另一個系統的!!」
無奈為時已晚,我只好硬著頭皮完成測驗。
至於當週的第三次面試,我本來以為面試官會是個很嚴肅的人,
進了會議室才發現原來R&D的部長是個很慈祥的阿姨,面試時的氣氛也很輕鬆。
結束面試在回家的路上時,HR姊姊突然打給我說恭喜通過三面,
並邀請我參加最終面試前一天的社內活動。
在最終面試的前一天, 我如期地前往參加社內活動。
原本我以為這是給公司的員工參加的,
結果到場之後才發現這個活動是給所有已經拿到內定的學生。
我當下才意識到「啊…我大概是被內定了吧…」
離開前HR姊姊還對我微微笑說「明天最終面試加油喔!」
讓我心情瞬間輕鬆了不少
最終面試跟前面的面試最大的不同在於
「面試者除了我之外還有兩個應徵營業職的女生也參與了其中」。
由於已經沒有人跟我競爭相同職缺了,
於是我就抱著去聊天、交朋友的心情輕鬆赴會。
至於負責面試的副社長—大三川先生本身也是個很健談的人,
與其說是面試倒不如說像面談。
最終面試完隔天下午我便收到了内々定,
不過由於當週五還有google的onsite interview,
我請HR姊姊再給我一點時間考慮。
綜合來說雖然我申請的是R&D職缺,申請流程卻跟其他日企一樣繁複,
從我寄出entry sheet到我拿到offer之間也過了兩個月。
這當中雖然所有的面試都是用日文,而我的日文其實也蠻弱的,
但可能是因為R&D部門會常常需要跟其他國家(台灣、美國等)的team合作,
除了日文跟專業之外英文能力也很重要,我才被日本趨勢科技相中。
能夠拿到他們的offer真的還蠻幸運的。
● 其他
除了以上兩個公司外,我其實還有申請不少公司,
不過因為大部分都沒有進到面試我就省略心得了
-《無聲卡》日本微軟(Software Engineer)
-《提出Entry Sheet後被拒絕》日本Yahoo(Engineer)
-《Technical Test後被拒絕》Mercari(Software Engineering)、
LINE(Software Engineer)、日本Amazon(SDE)
-《一次面試後被拒絕》Cookpad(Software Engineer)
之所以會在Technical Test被刷掉我認為應該不是因為
自己coding能力不足(題目基本上都有解出來),
可能因為自己的背景跟公司要找的不服(沒什麼後端經驗),
或者是近年來這幾間公司太熱門導致篩選門檻變高。
《總結》
由於目前就只有日本趨勢科技的offer,
考慮到未來的發展我應該會先去那邊蹲個幾年。
當然如果Google的recruiter決定把我的申請轉到HC,那可能又會是另一個結局了
(不過大概1400萬個結局裡只有一個是被hire的)
這次就活最大的感想大概就是:曾經我以為離我很近的公司原來這麼遙遠,
而我認為難如登天的公司原來就近在眼前!
「人生有夢,築夢踏實」
與大家共勉之
《6/28更新》
沒想到過了一個月後,那個所謂的另一個結局真的發生了...
在那之後的流程大概如下:
- 5/29 recruiter告知通過onsite interview,同時跟我要了一些document
- 6/7 通過hiring committee
- 6/19 完成team match
- 6/28 recruiter告知北美的team已經完成offer review,恭喜加入Google!
只能說不到最後千萬不要放棄啊!
感謝底下推文的各位,能夠得到這麼多迴響真的是我的榮幸~