2022 轉職前端的海外求職與面試心得 (Amazon 與 ByteDance/TikTok 等)

Amazon

Amazon 我這次是海投數個不同辦公室,結果唯一兩個拿到 OA 與面試的,都在英國,一個是在愛丁堡辦公室,另一個是倫敦辦公室。有趣的是,一個是先 OA 後,沒有 Phone Screen 直接 virtual onsite,另一個則是先 Phone Screen 後,沒有 OA 直接進 virtual onsite。virtual onsite 都是五輪的車輪戰,可以選一天面完,或分成兩個半天。因為我先前有連續面試經驗,所以我很清楚一天三場面試是我的極限,所以我都選分兩天。

特別備註,我投的都是前端工程師 (Front End Engineer 簡稱 FEE),而不是常見的軟體開發工程師 (Software Development Engineer 簡稱 SDE)。 我在倫敦辦公室的 Phone Screen 輪有稍微跟面試官聊到,他說 SDE 基本上是全端,而 FEE 就是專注在前端。在 Amazon 這兩者是有機會在內部申請轉換的,那個面試官當初就是 SDE 進到 Amazon,但做了幾年後想專注在前端,就轉成 FEE。

面試的部分 SDE 跟 FEE 有些部分一樣,但另一些地方不同。同樣的地方是每輪都有一半是會問他們的 Leadership Principles 問題,也都會考資料結構與演算法。不同的地方是,FEE 可能會針對前端的知識點與實作來考。舉例來說,在網路上有找到別人的面經是要當場實作一個元件。另外就是系統設計的部分,SDE 會考設計一個 Twitter,但是 FEE 則會是設計一個 Twitter 的前端 (想了解更多的話,非常推薦這篇談論前端系統設計的概覽)。

愛丁堡辦公室 OA

這次遇到的 OA 是兩題 LeetCode Medium 難度的題。第一題我是用 Quick Select 來解;另一題是二維陣列題目,這題可以 BFS 也可以 DFS,我是用 BFS 解。有趣的是,這個 OA 除了解題,還要妳用文字寫下思路,以及分析時間與空間複雜度。

話說在 LeetCode 的討論區中,很多人會回報自己 OA 遇到的題目,舉例來說,在討論區搜尋 Amazon Online Assessment 可以看到我遇到的這兩題,過去都有人回報有遇到。假如妳有拿到 Amazon 的 OA,推薦先去練習 LeetCode 討論區被回報的題目,很可能會有一樣的。特別注意,Amazon OA 是用 HackerRank,所以題目描述都很長,因此蠻推薦做之前先到 HackerRank 熟悉一下它們的題目描述方式以及平台的操作 。

倫敦辦公室 Phone Screen

剛剛結束 Amazon 倫敦的 Phone Screen 輪,前面先是兩題 Leadership Principles (LP) 題 (Amazon 的模式似乎都是這樣),然後面試官都會一直追問。我先前就有在網路看到說,面 Amazon 在這部分一定要做足準備。實際面完的經驗是覺得,不能只練習網路上找得到的題目,還需要練習後面的追問。

接著是兩題白板題,大概都是 LeetCode Easy 到 Medium 的程度。之前在網路上看到 Google 面試是直接用 Google doc (而不是線上 IDE),Amazon 的 Phone Screen 也是蠻類似的,就是一個類似記事本的,然後沒有任何功能。這兩題都沒有實際跑結果,感覺是以看思考過程為主 (先前面 ByteDance,因為就是實際在一個線上 IDE 所以都會實際跑面試官給的測試案例)。因為兩題白板都沒有太難,我都有順利寫出來 (起碼面試官說邏輯沒問題)。

這場 Phone Screen 讓我意識到我之前太依賴 IDE 的方便了 (因為我 LeetCode 有買 Premium,所以變得平常刷題也像是在 IDE 上寫),所以這場之後在為實際面試準備時,我都先練習在 Google doc 上面。

Virtual Onsite

在分別通過前面輪次後,我申請的兩個團隊的招募協調員 (Recruitment Coordinator) 分別跟我約時間。但在喬時間的過程,他們內部似乎發現我同時在面兩個團隊,所以後來就來信跟我說其中一個的最後一輪會取消,不用面兩次,而是假如沒取消的那個有面過的話,最後會再分別跟兩個團隊的 Hiring Manager 談要選擇進哪個團隊。必須說 Amazon 的招募員真的蠻雷的,敲定好面試的日期後,到面試前一天晚上才來信告知確切時間……。不過 Amazon 的每個面試官都非常專業,面試體驗非常之好。

雖說我是面 FEE,但面試只有一關是由 Amazon 的 FEE 面,兩關是 SDE,一關是 SDM 來面。因為有簽面試的保密條款,不能分享詳細遇到的題目,以下僅分享每一關的經驗。

一面

面試官是 SDE,但他說他現在有約一半時間會做前端的東西,所以也會幫忙面 FEE。如同網路上看到幾乎所有 Amazon 的 onsite 面試經驗,果不其然一開始就來了兩題 LP 題。接著進到前端實作,要做某個元件,可以用任何技術或框架 (我用 React)。雖然不能說實際做什麼元件,不過假如網路上找的元件類題目都練過 (例如 Menu、Carousel、Accordion 等等等),這關就不會是太大問題。

我特別喜歡這關面試的地方在於,實作完後接著有一連串的追問,讓前端面試變得很有脈絡。雖然不能說被追問了什麼題目,但假如上面我提到準備 ByteDance 的前端知識點都夠熟,這些問題一定回答得出來。不過 ByteDance 在問的時候都是很獨立的問題,例如上面提到我在 ByteDance 面試有被問「一般物件跟 Map 有什麼差別」,假如只是這樣獨立問,我覺得在準備上就會有點像在背誦。但假如是寫了某個元件,然後用到了物件,這時被問為什麼不用 Map,然後兩者間有什麼區別,我覺得就會有脈絡許多。

二面

面試官是 FEE。也是一開始就兩題 LP 題,然後進到前端白板題。跟上一關不同,這關是比較偏向寫演算法,但不是傳統 LeetCode 那類的,而是像要寫出某個框架提供的 API (某個函式),算是我過去沒碰過的題型。如果要具體準備這類問題,可能可以多去看一些套件或框架的原始碼,看看那些平常很常用到的 API 背後是如何實作的。我這關表現的沒第一關好,雖然最後有寫出來,但上一關有被問到如何優化程式碼,這關則是寫完後時間就到,沒有時間去優化解法。

三面

面試官是 SDE,他說他很喜歡 React 所以工作上也會去做前端的東西,但因為想讓自己比較有彈性,所以沒有轉成 FEE,而是持續做 SDE。這關是很傳統的資料結構與演算法題。當然前面也是先來個兩題 LP 題,講完後就進到算法的題目。一開始第一題是蠻中規中矩,用 DFS 或 BFS 就可以解的題目。解完後被問延伸問題,是要用 topological sort 來解。剛好我在面試前兩週有刷了 LeetCode 上面的 Course Schedule 系列題,所以被問到延伸題時,就覺得題型很熟悉。只能說 Blind 75 這類經典題一定要每個題型都刷,對於各種類型與模式有概念,起碼在面試時能有個底來面對變化題。

另外,因為不會執行程式,所以寫完後,面試官都有請我用測試資料口頭走過一次我的演算法。在這種類型的面試,對自己寫的邏輯一定要夠清楚,不能像平常寫程式會依賴 debugger。面完後覺得好險前面有 Phone Screen 輪,讓我意識到要練習用這種形式。

四面

面試官是 SDM,也是用人主管 (hiring manager)。這關是唯一沒有寫程式的,但有類似前端系統設計的題目 (只是不是傳統類型的)。一開始面試官先連續三題 LP 題 (將近三十分鐘)。接著是問類似系統設計的問題,會說是類似,是因為跟在網路上看到的題不太一樣,但某些部分又一樣。

因為不能提細節,只能說如果要準備這關,我會推薦多了解千萬日活用戶級別的產品,在前端的部分要怎麼確保低延遲 (low latenecy)、高可用 (high availability)、高可靠 (high reliability)、安全性 (security),以及在千萬日活用戶級別的產品上一個前端的功能,要怎麼規劃整個流程等等。

這邊蠻推薦大家可以平常多去看各家大廠是如何做事的,因為我這個 Loop Interview 是面 Amazon 的倫敦辦公室,我在面試前有用平常吃飯時間爬他們的各種東西,然後就看到 YouTube 上的這個介紹倫敦辦公室的影片。影片中有提到為了確保高可用性,Amazon 在上一個功能前,前端會測試幾百種不同裝置,確保都是可用的。因為看過那個影片,我在回答可用性的部分,有提了一個類似的作法,從反應上來看,面試官似乎對我的回答很滿意,那時我心裡暗自竊喜「畢竟這就是你們的作法呀 XDD」

面試後也是約一週左右收到結果,聽到招募員說恭喜時,真的是又驚又喜;跟 ByteDance 不同,Amazon 的招募員說沒辦法給每關的具體反饋,不過有說每關的面試官反饋都很正面。以前都是看別人轉職後進到 FAANG 公司的分享文,沒想到轉職兩年半後,我也能聽到 FAANG 公司的招募員跟我說恭喜錄取。如上面提到,因為我本來是同時有拿到兩個組的 onsite,所以後續還分別跟不同的用人主管聊,聊完後選完組,招募員才會發正式的 offer,然後談薪水。在跟 Amazon 談薪水時,有成功爭取到提高 offer,相關經驗都記錄在《拿到 offer 後談薪水 — 讓我多談 35% 的談薪筆記》

瀏覽 6,178 次

覺得不錯的話就分享出去吧!
上一頁 1 2 3 4下一頁

發佈留言

Back to top button