北美科技公司的軟體工程師面試出了名的難,堪比關羽的過五關斬六將。
以FAANG公司為目標的話,預期最少要過以下幾關:
現場程式解題(Live Coding)
系統設計(System Design)
行為問題(Behavioral Questions)
我在2024年找在加拿大的第一份軟體工程師工作時,為面試準備了大概2個月,期間每天刷1-2題Leetcode、看YouTube影片學習系統設計、重新溫習資料結構和演算法(Data Structure and Algorithms),為的就是在面試中爭取更好的表現。
2個月的準備相比起其他在北美職場上打滾的軟體工程師只能說是九牛一毛,聽說過不少人為了進大廠,要準備半年、一年,甚至更長時間。
然而,市場上對FAANG公司的技術面試內容一直有所詬病,認為他們的面試只為方便篩選應徵者,而非找到適合該職位的人選。其中一個理由就是:
面試的內容在日常工作中根本用不到
2025年更有一篇新聞報導說北美一位工程師為了證明Leetcode類型的面試已經不合時宜,製作了一個AI工具來協助在面試時解題,他通過了TikTok、Meta和Amazon的面試並獲得錄用信(Offer),其後更將他Amazon的面試過程上載到YouTube,分享他如何利用AI工具來通過面試。
此新聞在業界曾引起轟動,雖然他的舉動被批評是為他的AI工具炒作,但無可置疑大模型的普及化正在撼動科技公司採用多年的面試模式的價值。
Leetcode類型的題目是否能證明工程師在AI世代的工作能力?
工程師工作時要用到為準備面試而溫習的知識嗎?
這種面試模式還適合現今職場嗎?
我在加拿大的面試經歷
我在加拿大面試的經歷不算多,在找到現時工作前總共花了3個月,7次初次面試,其中3次進入到最後一輪。
我想拿其中兩家公司的面試來說說。
願意給予我機會的第一家公司就是Amazon,那次是我遇過最繁複、最高規格的面試。整體面試流程如下:
線上測試(包括限時內解題、系統設計相關題目、行為問卷)
招聘人員對話
4輪現場程式解題、系統設計和行為問題
雖然跟招聘人員的對話並不像會使人落選,但嚴格來說面試共有6輪。現場程式解題及系統設計需要長時間的操練、溫習資料結構和演算法,而行為問題則需要針對Amazon的領導原則解釋過往的工作經驗。
那次是我7年工程師職涯中準備得最多的面試。
而另一家值得說的就是我現在身處的公司。
我應徵過2個部門的軟體工程師,都能夠進入最後一輪面試,而以下是各自的面試流程。
部門A:
主管對話(主要包括行為問題)
現場程式解題、團隊對話(主要包括履歷表及過去工作經驗)
部門B:
主管對話(主要包括行為問題)
線上功課(重構及基於原有程式碼新增功能)
團隊對話(主要包括履歷表及過去工作經驗)
Leetcode比重沒FAANG公司那麼高,但依然是面試的其中一項考核。
身為軟體工程師的我每天做什麼及需要什麼技術?
我知道就算同樣是軟體工程師,在不同公司不同部門工作內容會不一樣,用到的技術亦然。我在一個名為Development Enablement的部門擔任軟體工程師,部門主責為開發及維護其他工程師會用到的工具,例如管道、硬體模擬器、測試環境部署等。
以上職責主要用到的技術包括:
GitHub Workflow
Azure Pipeline
Bamboo Plan
Docker
.NET C#
PowerShell
Bash
另一方面Enablement這個詞的定義很廣泛,所以有時候有些工具或功能未能清晰地劃分到其他部門時,該項工作就會落到我們頭上,所以我們也需要一點軟體開發上的技術,例如:
.NET C#
C++
Web Development (VueJs、ReactJs)
所以嚴格來說,我部門偏向招聘通才,即什麼都會一點,才能更有效率地應付日常工作需要。
工作的內容跟我當初的面試內容有關嗎?
Keep reading with a 7-day free trial
Subscribe to 北美Tech職場日記:打工仔也想升職 to keep reading this post and get 7 days of free access to the full post archives.