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

Twitch

我是在找新加坡的職缺時看到的,不是一般的前端職缺,職位的名稱是叫 Software Development Engineer, Customer Success。雖然是申請新加坡的職缺,但時面試都是跟美國那邊的人面。同樣是在亞洲區的缺,比起前面提到 ByteDance 的神速,Twitch 的動作就慢了不少,每一輪幾乎都是等一到兩週才通知結果。

一面 (人資)

這關基本上都是問求職動機、過去經歷。人資也有更詳細介紹這職位,我聽下來感覺是介於 Software Development Engineer 與 Customer Sucess Engineer 之間的工作。工作內容以前端為重,但也會有牽涉到後端的部分,所以職位還是歸在 SDE。在更深入瞭解後,人資有再向我確認有想申請,然後說後續會再聯繫。

二面 (資深工程師)

二面一開始也是問過去經歷,問題包含過去做過最讓自己引以為傲的專案、解決溝通衝突的經驗等等。特別注意,因為這個職位不是純開發,而是有部分時間要直接跟客戶合作,協助客戶整合 Amazon IVS 的服務 (這個職位在 Twitch,但產品是 Amazon IVS)。

接著問了不同程式語言的使用經驗 (直譯語言、編譯語言),也問了不同瀏覽器的差異 (例如不同瀏覽器的引擎之間的差異),然後也問了前端效能優化問題。最後以一題白板題收尾,easy 到 medium,搭配 Stack 這個資料結構就可以蠻容易解掉。

二面後一週收到沒有進到下一輪的通知,不確定原因是什麼,畢竟二面不論在行為面試或技術面試,我覺得表現的都還不錯,不會比我面 ByteDance 或 Amazon 還差,特別是效能優化題我覺得講得夠深夠廣、白板題解得很順。但面試就是這樣,總有各種原因導致沒辦法往下一階段邁進。

Shopee

假如你有讀過我去年的面試經驗文,應該會看到去年我在 Shopee 二面的時候,在一題設計 LRU Cache 的資料結構題炸掉。今年想說再挑戰一次,投了履歷後也順利拿到面試。跟去年一樣先從 OA 開始,然後三輪技術面。我順利的通過前兩關,只是面到一半時,Shopee 似乎就大裁員,雖然感覺他們最近不太會招人,不過還是分享一下我前兩關被問到的題目。

OA

字串長度要如何取得

  • 這題是單選題,選項中有各種語言的語法,要選出 JavaScript 的
  • 相信寫 JavaScript 的人應該不會選錯,這邊附上 MDN 的文件當參考

考 JavaScript 的物件觀念 (題目中的值不一樣,但概念一樣)

考陣列基礎概念 (題目中的值不一樣,但概念一樣)

考字串基礎概念 (題目中的值不一樣,但概念一樣)

手寫題一:寫一個函式轉換以下資料格式 (題目中的值不一樣,但概念一樣)

最後一題跟我去年蝦皮 OA 被問到的一模一樣,是網路上找得到的 Maximum sum of non-leaf nodes among all levels of the given binary tree

一面

一開始先請我介紹自己,接著就針對我的履歷開始問問題。因為我在上一間公司與上上一間公司,分別有用過 React Query 跟 Redux,就被問了這兩個工具做狀態管理的差異相關問題,有被追問這兩個工具要如何做選擇。回答完後被接著追問 React Query 是如何實作的。這邊要感謝先前在前端版看到有版大分享的《了解 SWR 的運作機制,How this async state manager works》一文,先前在理解這類套件的背後的實作時,這篇算是很清楚好懂的入門。

然後面試官接著問說「既然我們都聊到 cache,不如就來實作一個吧」。然後就開啟線上編輯器,進到手寫題的部分。這次的手寫題第一題,是我去年 Shopee 一面的 cache 題進化版。簡單來說,需要寫出一個 cached 的函式,下面這個是我去年面試時寫出來的,而去年的題目也就停在這邊。

上面這個寫法會有個問題,就是假如今天傳進來的引數是有函式的,用這個方法就會出錯。今年這一題的其中一個測試案例,就是有函式作為引數的 (但去年沒有)。那要怎麼解決這問題呢? 我當時提說可以透過深比較 (deep equal) 來解決。面試官說,的確是一個解法,那不如你就寫一個深比較吧。於是我又繼續往下寫了一個深比較的函式,才順利通過這一題 (有興趣了解怎麼寫的人,蠻推薦這個影片的)。只能說,lodash 有提供的效用函式,手寫題真的是前端面試必練的。

接著進到第二題,是要寫一個改良版的 Promise.all 。 Promise.all 會要等到所有的實現,因此它的瓶頸會是最晚回來的那個,如果最慢那個拖很久,其他的也會要跟著等。但是這個改良版想做到的,是不要等全部實現,但又要做到有順序性的回傳結果。因為我先前練習過 Promise.all 與 Promise.race 等題目的手寫,所以遇到這個變化題時,還算有辦法應付。只能說許多 JavaScript 提供的方便東西,平時還是需要懂背後如何實踐,不然面試被問時,我在想如果我先前沒練習過相似的東西,應該很難在二十分鐘想出來又寫出來。

二面

去年我 Shopee 掛在二面,今年還想說把去年沒寫出來的 LRU cache 寫個五遍,把 Doubly Linked List 的操作與題目都練很熟。結果一面之後 Shopee 新加坡就裁員。必須說,去年跟今年面試起來 Shopee 新加坡的面試算蠻有鑑別度的。不過現實世界就是只有技術沒有用,如果沒有永續的商業模式,最終還是撐不起一家企業。

瀏覽 6,177 次

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

發佈留言

Back to top button