【學長姊帶路】加拿大 前端工程師 求職心路歷程
原標《加拿大前端工程師面試經驗分享》
文/e_in_ca
從今年一月初投出第一份履歷開始,經過了將近三個月的瘋狂面試,終於拿到一些可以接受的offer,以下都是我的個人經驗及觀點,如果你有不同的想法或問題,歡迎留言討論 :)
背景
台灣的碩士學歷
台灣工作經驗:2年
加拿大工作經驗:2.5年,很小的公司,10人以下的團隊
職位:前端工程師
熟悉的技術:React/Redux
已成為PR
流程
會經過的流程不外乎以下幾關,然後再根據公司的規模大小,可能有些排列組合
Phonescreen:大多是30分鐘,通常是由Recruiter/HR進行,在這階段會先簡單聊一下彼此的狀況,常問的問題有
自我介紹,目前公司的規模大小,負責怎樣的工作內容
知道這間公司在做什麼嗎
為什麼會對這職位有興趣
為什麼想換工作
薪資期望
將來會需要公司幫忙工作簽證嗎
然後介紹一下之後整個招聘的流程,最後留一些時間可以問問題
有些公司會讓HR在這一階段問一些基本的技術問題,例如解釋一下 javascript 的 closure,hoisting 之類的,我是覺得蠻無聊的,因為HR也不懂你在說什麼,他們就只是把你的回答抄下來帶回去給其他人,所以過程中不會有討論
Online Assignment(OA):和真人面試前的線上作業,時間 1–3小時不等,常用到的平台包括Codility,Codesignal 等等,有些單純考 ds/algo,有些會考 react 實作,可能是 call 一下 api,把拿回來的資料做個 pagination,或是做個 modal 之類的。曾經在不同公司的OA遇到一樣的題目,而且還是前一天剛做完而已記憶猶新, 還要刻意發呆一下以避免做太快
OA通常不會到太困難,我有收到OA的公司大多都有進到下一關,目前覺得最困難的是Dropbox的OA,難度在於時間很短又要做到很多功能。如果是稍有規模的公司發的OA,可以善用 leetcode 的討論區,或是一畝三分地找一下資料
1hr interview:在這一關,大概能分成兩種,有些公司會是由hiring manager來跟你聊聊,比之前更深入的聊一下熟悉的技術,目前參與的專案等等,可能稍微帶一些技術的問題但不會真的實際寫code
另一種就是利用這一小時進行 pair programming,透過解題來觀察 candidate 的 problem solving 技巧以及溝通合作的能力
Virtual Onsite(VO):因應疫情,現在所有 onsite 面試都是線上進行,到了這關,3個小時是基本,最多會到5個小時
如果是三小時,基本就是 Coding interview * 2 + Behavioral(Culture fit) interview * 1
如果是4個小時,通常就是會再加入一輪的 System design or Code review,5個小時就是吃一個全餐啦
VO結束後就是等待結果,收offer或是被拒絕,有些公司比較好,在我被拒絕後HR會給我一個 quick call,然後分享面試官給我的 feedback,雖然對結果沒任何幫助,拒絕就是拒絕了,但至少能知道我在哪邊表現的可以,哪邊沒有符合面試官的期望,需要再加強。都走到VO這一步,在整個面試流程上也花了不少時間,如果公司願意做到這點,我覺得這會大大影響了面試者對於一家公司的觀感
準備過程
以下全都一樣,我不是專家,也還有太多可以改進的地方,僅提供個人準備方法供參考
準備履歷
1. Single page:大多數人應該都可以把過去經歷濃縮在一頁,除非真的太多豐功偉業
2. 格式因地制宜:每個國家一定都有當地接受的格式,這個稍微搜尋一下,參考幾個模板應該就能有個概念。例如在加拿大(軟體工程師),你在履歷上放照片,放年紀性別等等,就是在跟公司說,我還沒做好準備,我不了解這邊的就業市場
3. 排版整齊乾淨:關於排版,word真的難用,我也曾嘗試 LaTeX,但反而花掉好多時間在嘗試弄懂LaTeX,最後放棄。有天突然想到,我好像是前端工程師耶,我幹麻不寫一下程式,讓履歷變成一個頁面,然後右鍵 print -> save as PDF 就好,簡單的 css 就能讓 pixel,indention,padding,margin 全都由我掌控,一下就弄出自己滿意的排版,真是舒服
這樣做的另一個好處是,“前端工程師”,用中文講沒問題,但換成英文,是Front-end,Frontend,還是 Front end?是 Developer 還是 Engineer?然後再排列組合下去,有幾種可能?雖然只是一個小細節,但我可以透過程式,很容易的產生根據上面排列組合,微調過後的版本,然後根據不同的 job description,投出我準備好的對應的履歷
4. 凸顯優勢,隱藏劣勢:把你和該職缺最相關的經歷擺在對的位置(最上面 or 最顯眼 or 粗體 等等),相對不重要的就想辦法縮小,不用佔太多版面。以我的例子來說,我沒在加拿大念過書,我不認為這邊公司會去在意我在台灣的大學讀哪,研究所讀哪,所以關於學歷就只要列出資工碩士,然後用一小行擺在名字下面就好,不用特別開一區 Education
5. 絕對不能有錯字:這應該沒什麼好說的
延伸閱讀>>【外商履歷進階篇 I 】STAR原則 3 大狠招,點燃履歷爆點,人資想不看都難!
準備 Behavioral question
- 以 Amazon 的 BQ 為標準開始準備:Amazon 是出了名的看重 bq,他們有 16 條 leadership principle 需熟記,然後每個回答要以 STAR (Situation / Task / Action / Result) 扣緊主題,有幾個 Amazon 的前人資在 youtube 上開頻道靠這個薛一筆,可以參考參考例如 https://www.youtube.com/channel/UCHFxsulW0os1LQh3wsQZG4g
General 的 interview tips 我覺得這個人講得蠻好的,對於英語不是母語的我們,可以學一些比較道地專業的用法 https://www.youtube.com/watch?v=NcoDmHt5RmI
在以 Amazon 作為標準去準備,有了自己的一套回答庫之後,大部分公司的 bq 應該也都能夠派上用場 - 練習:我這次是直接以大量實戰來當作練習,一開始真的是講得結結巴巴不知所云,如果不想要浪費機會,提前做好準備,這邊有個 mock interview 的網站 https://www.pramp.com/#/,可以在上面找人配對練習,對於正式上場一定有幫助
準備 Leetcode
準備 System design
對於這兩項,網路上有太多資源,搜尋一下一定可以找到有用的資訊,剩下的就是花時間練習了。而我這幾個月下來的感覺是,如果目標不是知名大廠和熱門 pre-IPO 的公司,對於其他中廠或小公司,在intermediate/mid-level 這階段,偏難的 easy + medium 基本上就足夠應付 coding interview,如果真的出到 hard,也會是最經典的 hard 原題,因此過度鑽研難題,投資報酬率可能不太高
準備一個 Side project (Optional)
這一項是因人而異,如果你平常在公司就經常領導整個案子(或是至少高度參與並能做有影響力的決策),對於案子的走向能夠清楚的說出為什麼這麼做,為什麼不那麼做,那 side project 對你來說可能就不是必須的。
而我的情況,平常就是把東西做出來,也沒有 senior 的帶領就是自己胡搞瞎搞,如果真的 dive deep 的話,很快就被問倒了。
基本上 “告訴我一個 你proud of 的 project / interesting project / difficult problem you have solved”,這類問題是一定會問到,這時我在去年花一點點時間做的 Side project (台灣圖書館電子書搜尋)就派上用場了,我能夠用這個例子來佐證,我具有發現問題並解決的能力,我透過實作一個網站,替人們解決問題,也提得出數據證明這是個有人在使用的服務 (例如 4,000+ visits/mo),然後對自己的作品有熱誠,有想法要如何持續地精進改良,願意用自己的時間來維護這個服務
雖然只是一個很簡單的網站,沒有用到什麼高深的技術,但至少讓我在回答上述那些問題時,能夠比較踏實一些
結果
這次我主動投遞了大約120間公司,Recruiter邀請的約10間。這130間公司中,比較大的幾間包括 Amazon / Coursera / Dropbox / Cisco / Scotiabank / Capital one
最後約有30+間Phone screen,10+間1hr interview,然後10間的 virtual onsite,3hr * 3 / 4hr * 4 / 5hr * 3
拿到了5個offer
心得感想
面試真的是一個很累人的過程,尤其是在花了那麼多時間後,歷經5小時的 onsite 摧殘,最後還是收到一封拒絕信,真的會開始懷疑自己,懷疑人生,這時只能想辦法調整心態再站起來,幸好最後的結果是還能接受的
回想起三年前找工作時,有聽過名字的公司幾乎不會給我面試機會,即使拿到了小公司的面試,問到我的簽證問題時,還要費力的解釋,現在只要一句 I’m a PR 就能輕鬆帶過,現在也有辦法能夠拿到叫得出名字的公司的面試,有些甚至也走到了最後的 onsite,比起三年前,已經向前跨一大步了,薪水也有超過一倍的漲幅,雖然離朋友拿到或是網路上看到的各種大包裹還有一大段的距離,不過相信持續努力,會有機會的
我覺得現在是面試的好時機,因為這種 virtual 的面試模式應該還會再持續一陣子,如果你現在的公司也還在remote,或是 hybrid,就可以有一些時間來面試,在過去這三個月裡面試排滿滿的情況下,我可以不用跟老闆請任何假,不用被懷疑我是不是在面試,這在過去是不可能的事情
Virtual 的面試模式還有一個好處是,相信有些人聽過所謂的”白板題“,就是在面試時用手拿著筆在白板上寫程式解題,這和我們平常用鍵盤寫code相當的不一樣,所以過去在準備面試時最好還能練習用紙筆寫code。但現在可以先不用擔心這部分,這段時間的面試裡,只有 1~2 家公司要求在非 IDE 裡寫code(google doc 之類的),其餘的全部都能夠在像 codesandbox,或是你自己的 vs code 裡寫然後share screen就好
另一個感想是,真的要 Negotiate。手上如果能夠同時有 > 1個 offer,而且都是你意願接受的offer是最好的,這大大增加了談判的籌碼,也讓你更有底氣跟公司談。但如果只有一個offer也還是可以談,我有一段時間在只有一個offer的情況下,還是讓公司加了將近10%,但當然過程中就免不了一些心驚膽顫
最後祝大家都能收到滿意的offer!
本文由 e_in_ca 授權轉載, 原文: 《加拿大前端工程師面試經驗分享》
___________
你也有經驗想分享嗎?快來投稿賺稿費吧!
瀏覽 421 次