【學長姊帶路】Bytedance 前端工程師 求職心得

原標《Bytedance(TikTok) 前端工程師面試心得》

文/Kenneth Cheung

最近面試了兩家公司的前端

  • Bytedance 新加坡
  • Run the world (以下簡稱 RTW):這是一家矽谷的新創,在台灣找全遠端的前端工程師
【學長姊帶路】Bytedance 前端工程師 求職心得
面試了兩家公司的前端

來跟大家分享一下整個過程!

  • 動機
  • 準備
  • 過程、結果
  • 收穫、結語

動機

其實目前我沒有特別在找工作,目前待的公司、工作內容和待遇其實也沒有什麼不滿,但 LinkedIn 平常還是會關心就業市場的動態,在今年(2020) 11月中的時候有收到新加坡 TikTok recruiter 在 LinkedIn 上的職缺邀請,這算是在過去近一年以來我比較興趣的一個機會了,稍微考慮過後,基於以下的考量,決定來試試水溫!

  1. 在面試聖經 CTCI 中有提到,就算你沒有想要換工作,還是建議每年都可以面試一下,一方面是保持自己的競爭力,另一方面也可以了解自己的市場價值,跟不同公司建立連結,說不定在未來也有機會到這些公司工作
  2. Tiktok 目前成長的速度非常快,如果能在這個時間點加入的話,或許有蠻多發展機會的
  3. 參考了 PTT 跟 levels.fyi 覺得新加坡的軟體工程師薪資蠻吸引人的,如果真的給到了會想要衝。另外,新加坡 Tier 1的軟體工程師機會也相對台灣多,有更多成長、挑戰的機會

RTW 也是 LinkedIn hunter approach,應徵動機則是

  1. 對於他們家的視訊 Event 產品是有興趣的
  2. 之前設定的職涯目標之一,是希望在台灣可以遠端國外的公司,領國外薪水住在台灣,然後 RTW 提供的待遇的確有一點這種感覺
  3. 都要準備面 Bytedance 了,只面一間好像有點浪費…

於是更新了一下履歷後送出,兩家公司的流程也就各自開始了。

準備

自己在前端面試的準備方向大致分成四個部份,但這次沒有這麼多時間來準備這些,因為算是突然的機會,也沒有請他們排比較遠的時間,重點複習一下就提槍上陣了!

1. 演算法

  • 熟悉基本的資料結構、複雜度分析、排序等,可以參考這個 git gist
  • 做 Leetcode,不要背題目,要求自己能解釋每一步,前端的話,Medium 難度的題目如果能 8、9成做出來並且能解釋我覺得就還蠻夠用的了

2. 前端知識

  • 熟悉 Javascript,如果能熟讀 Javascript info 我覺得就很強了
  • 熟悉自己常用的框架,把官網的文件,弄熟就差不多了
  • 熟悉其他主題如: Network, Security, Performance, Testing 等,每個主題其實都可以談到很深入,但至少都要有概觀的了解,web.dev 有蠻多前端知識可以參考的,尤其是 Performance

3. 專案經驗

能說明自己過去的專案經驗,可以用 CTCI 裡的 SAR 或 SOAR框架:

  • Situation: 專案的背景、情況
  • Obstacle: 專案中遇到的困難、障礙
  • Action: 你採取了什麼行動
  • Result: 最後的結果、成果

4. 行為問題 (Behavior questions)

這邊會問到的範圍其實蠻廣的,但有一些題目跟方向還是可以事先準備,剩下的就看臨場反應跟口語組織能力了,平常的累積還是很重要的。

  • 自己的優點、缺點
  • 最大的成就、失敗
  • 短、中、長期目標
  • 過去所有任職的公司,工作內容,為什麼離職

面試過程、結果

Bytedance: offer get

Bytedance 的流程是:

  • 3 輪技術面試
  • 1 輪 HR 面試

每輪的時間約 45 分鐘

第 1 輪技術面試

面試官聽起來是中國人,是別 team 的前端工程師,面試以中文進行

面試內容主要偏向演算法,使用 coderpad,總共考了三題:

1. JS 觀念:讀 JS 程式碼,答 console log 會印出什麼東西

自己沒有全答對,有一個地方我不確定,但我有把我不確定的部份跟面試觀溝通,先做一個假設,但事後去查證,我做的假設是錯的…

2. 演算法題:在 Leetcode 有原題,難度 Easy

確認問題需求後,邊解釋邊寫出來,有一些 bug,再邊解釋自己的觀察,邊修正,最後有修正完成。

3. 演算法題:接近一題 Leetcode 上的 hard 原題,有些變形

一開始說了一些大概想用什麼思路去解,面試官同意後就開始邊解釋邊寫,中間有遇到一些 bug 小卡一下,最後大概完成 8 成,Normal test cases 都有過,但有一些 special cases 因為時間關係沒有實作,但有解釋有哪些需要做的事,最後再聊一下有沒有其他解法。

雖然沒有一題的過程是完美的,但跟面試官溝通討論過程還蠻順暢的,面試官的回饋也很正面。

Recruiter 回饋:Positive

第 2 輪技術面試

面試官聽起來是中國人,是別 team 的前端工程師,面試以中文進行

前半段針對我履歷上的經驗,問了蠻多相對應的技術問題,像是我在 Github 有一個 react 的 HOC 專案,他會問我一些對 react 生命週期、Render flow 的認識等等…

但老實說,自認沒有答得很順,有好幾題也都不確定,但不知道的問題至少自己有提出一種假設,並且根據這種假設會有什麼結果,但從面試官的表情也看不出來他有沒有買單我的說法。

後半段是 Javascript 的 Coding ,給定程式的介面和行為,來實作出對應的程式。

這邊是用視訊分享我的螢幕,在 codepen 上做給他看,算做的順,也是邊解釋邊寫,中間有討論到一點實作細節、不同的實作方法的優缺點跟可能發生的問題(memory leak 等)。

Recruiter 回饋:Positive

第 3 輪技術面試

面試官聽起來是中國人,是該職缺團隊的主管,面試以中文進行

這關的面試內容就完全沒有 Coding 了,都是環繞在過去的專案經驗,跟對專案、產品的 Sense。

我覺得自己的表現沒有什麼特別突出的地方,敍事邏輯架構有的時候有點跳躍,也沒有那種厲害的專案經驗可以拿出來講很多很深的東西。但就是中規中矩沒有出什麼大錯這樣。

Recruiter 回饋:Positive

第 4 輪 HR 面試

面試官是一個在 Facebook 待過的新加坡 local HR,面試以英文進行

這關就問了比較多 Behavior questions,當中也包含期望薪資的部份,覺得做錯了一件事,就是還是敵不過 HR 的懇切詢問,還是不小心透露了我現在的薪水,不曉得是不是因為這樣,導致 offer 的 package 相較於研究的行情偏低,

Offer get

技術 3 輪關面下來雖然從 Recruiter 得到的回饋都是 Positive,但自己覺得面試表現在 第 1 輪 > 第 2輪 > 第 3 輪,演算法 和 JS coding 的表現是自己相對比較有自信的。三關既然都是 Positive 而且目前 Bytedance 新加坡是比較大規模的招募,心理覺得應該是有 offer 了,只是條件好不好而已。

大概在一週後收到 offer 通知,從 LinkedIn 上收到邀約到收到 offer 大概是一個月,Package 比心理預期的下界還低了一些,當時有問他們是否能再高一點,他們就回說這是他們經過審慎市場評估的 fair package,然後球又回到我這裡了,認真想了幾天,覺得還是先捥拒這個 offer,主要是因為:

  • 目前公司待得不錯,也有成長空間,現階段沒有非要跳槽不可
  • 個人家庭因素,如果去新加坡,小孩沒有後援,老婆可能會需要當全職家庭主婦,考量老婆目前的工作也還不錯,沒有給到期待誘因真的不夠

在回覆拒絕以及原因後,大概過了一週多,Bytedance 表示願意再談,最後有給到期望,也就接受了。

Run the world: no offer

RTW 這邊的流程是:

  • 線上作業
  • 2 輪技術面試
  • 1 輪 前端主管 Behavior interview
  • 1 輪 CTO 1-on-1

線上作業

這個作業是要用串流服務供應商的 API 來做一個視訊通話的前端專案,當時收到作業其實有點猶豫要不要終止面試流程,主要是因為:

  • 自己沒做過相關的應用,應該會花不少時間。我相信就算有相關經驗的工程師,整個專案加上研究第三方服務串接方式、API、細節,也不是三兩下可以完成的
  • 當時 Bytedance 已經在進行了,在其他條件相同的情況下 Bytedance 也是自己比較想要去的公司,這個作業其實擠壓自己蠻多可以準備面試的時間的

但想想這也是個不錯的練習,自己對於串流技術也有興趣,就設了一個目標,在一個週六的下午把作業作出來。

第一版因為時間有限,完成度其實蠻低的,程式也沒有太多整理,不過我還是交出去了,然後說了一下因為時間有限 blah blah blah…

但對方表示你可以慢慢來做到一版你自己可以接受的再交上來,於是我接下來幾天再花了一些時間把細節修一修再交一版。

第 1, 2 輪技術面試

面試官是 RTW 的前端工程師、前端 Lead,以中文進行面試

主要是聊 Javascript, React, Performance, 過去專案經驗,我的表現跟 Bytedance 第 2 輪 聊技術的部份有點像,有些不確定的問題,自行假設後給出一個回答。

第 3 輪技術面試

面試官是 RTW 的前端主管,以中文進行面試

這關則是聊專案經驗跟一些 Behavior Questions,跟 Bytedance 的 第 3 輪也差不多,覺得自己的經驗好像少了一些亮點,還有陳述的部份可以再加強!

Rejected

進行完上述的面試之後,過幾天Hunter 告知 Run the world 不會跟你繼續最後一輪跟 CTO 的 1-on-1, 從收到作業邀請到最後收到將不會繼續面試的通知,整個過程也是大概一個月。

面完這幾輪雖然一直有下一關,其實沒有覺得自己很可能會拿到 offer,因為在 bytedance 的面試中,我覺得自己演算法 和 coding 部份表現得比較好,雖然其他地方有缺點,但至少是有亮點的。

反觀在 RTW 其實表現平平:

  • 對 React 的認識或許足夠開發,但沒有特別深
  • 對 JS 的認識或許足夠開發,但沒有特別深
  • 也沒有特別亮眼的專案經驗

RTW 的待遇、福利在台灣算不錯的,有很多管道在招人,看起來也有很多技術挑戰,如果這樣的表現能拿到 offer ,我也會覺得蠻奇怪的。  

收穫

在這次的面試過程中,我自己也有蠻多收穫的,雖然有些東西在讀文章或別人的經驗多少也都有看過,但發生在自己身上會有更深刻的了解。

溝通思路 大於 正確答案

在以前我有過一場演算法面試,我雖然把題目解完了,整個實作的過程我都沒有什麼溝通,只有在寫 code,可想而之那場面試就沒過關了。

但是在這次面試中的演算法面試中,雖然沒有一題完美完成,但過程即使是做答卡住了,我也會說出目前卡住的點是什麼,可能有什麼做法,遇到 bug 也有溝通自己覺得哪裡可能出問題了,打算用什麼方式來驗證自己的假設,反而得到不錯的結果!

專案經驗的累積

在專案經驗的面試過程中,覺得過去沒有說來會讓人眼睛為之一亮的經驗,讓我反思,其實認真做好日常的工作就是對未來最後的準備。

如果平時能主動發掘專案中可以做得更好的部份,也主動承擔具有挑戰性的任務,我相信對自身能力的成長和未來職涯的發展性都會有很正面的影響。

找到自己的亮點

如果說自己的學習哲學不是要把所有技術面向都摸的很深,就把自己覺得有價值、會有興趣的部份,礸研深入一些。再盡量把履歷跟面試的話題引導到你擅長的部份。

我想不只是技術的部份,如果有很厲害的開源專案、技術部落格等等,我覺得也會是一個很突出的部份,這次的面試經驗讓我相信亮點的重要性!

希望以上經驗分享能幫助各位!

本文由 Kenneth Cheung 授權轉載, 原文: 《Bytedance(TikTok) 前端工程師面試心得》

___________

你也有經驗想分享嗎?快來投稿賺稿費吧!

瀏覽 417 次

覺得不錯的話就分享出去吧!

發佈留言

Back to top button