【學長姊帶路】Appier/imToken/PicCollage/CakeResume/HackMD 等多間 全端工程師 面試分享

原標《2023 Web Full-Stack & FE Engineer 求職心得》

文/莫力全 Kyle Mo

兩年前剛出社會的時候也寫過面試心得文:2021 社會新鮮人軟體工程師求職心得分享,不知不覺兩年就過了,自己也不再是這個圈子裡最年輕的那批人,在新手的光環慢慢消失後,職涯的考驗似乎才真的開始。

而這段期間發生了一些事,讓自己也有了一些新的體悟。前陣子家人的健康狀況出了問題,事發突然且嚴重,讓我有一陣子幾乎無心上班,即便坐在辦公室,心裏也總是掛念著家人的狀況。最後我決定先離開職場,專心的陪病。原本自己覺得能不能遠端上班這件事好像並不重要,直到這次事件,我才發現在這樣的時刻,我希望自己能每分每刻守在重要的人身邊,也因為這樣,彈性遠端上班成為我未來選擇工作時的首要考量。提到這件事只是想分享生活上有太多突發狀況,當這些事件發生,那些原本自己覺得很重要的事情突然間都不重要了。但當然,我們不知道什麼時候會發生什麼事,所以就隨時做好準備,設立生活目標之餘保持點彈性,用心的生活吧!

即便暫時離開職場陪病,我知道將來無論家人的病況如何發展,為了生活,我還是得回到職場工作。其實單以職涯來說,我覺得也剛好到了自己想要做出轉換的時間點,因此趁這次陪病的空閒時間,自己也開始尋找下一份工作的機會。

首先先簡述一下自己的背景:

  • 正職工作經歷約 2 年三個月,有過帶領 3 人前端小組的經驗,雖然在離開上份工作的前一個月剛被升為 Senior Engineer,但我認為自己的軟硬實力應該在多數公司的 Mid Level Engineer 左右。
  • 第一份工作一半時間待在前端團隊一半時間在後端團隊,第二份工作雖然 Title 是掛前端,但因為加入 Web FE Infra 團隊,所以也做了很多非普遍認知的前端開發者應該要做的任務(參考文章),但整體來說我對於大型後端系統的開發經驗非常不足。
  • 如果要為自己的技能點打分數,我會給前端 70 分、後端 30 分。

接著是這次找尋新機會自己設下的標準:

  • 要能夠彈性遠端工作(原本接受部分遠端,但隨著家人病況的發展,我後來決定只找尋可以全遠端的工作機會)
  • 沒有加班文化
  • 有機會用英文溝通
  • 能夠讓我做我自己想做的事,例如允許我開設需付費的 Mentor Program(在前公司這是不被允許的)
  • 以 Full-Stack 職缺為主(雖然大家一定聽過「找全端的公司通常很操很卷」,「Title 是全端的工程師通常都很廢」…等等說法,但對我來說這些都不重要,我衡量過未來的職涯目標,認為現階段的自己需要更專注在培養後端系統的架構設計與開發經驗,但我同時對前端領域還是有極大的興趣與熱忱,也不想失去這個優勢,才選擇 Full-Stack 這條路)
  • 評估現有能力與薪資,我對下份工作的期望薪資是 1.7 M — 2 M/ yr (不含依據公司整體年度績效決定會不會拿到的 Bonus 與 RSU or Stock Option)

釐清自己的現有能力以及需求後,接下來就是透過各種平台與管道尋找職缺機會,這我想大家都很熟悉,就不多著墨了。

雖說是以找 Full-Stack 為主,但因為發現當時就業市場機會不多,所以還是有找一些前端為主但是產品或工作內容很吸引我的職缺:

Appier — Senior Frontend Engineer

因為過去有投遞過該公司且進行到最後面的關卡,所以與 HR 簡單聊過後,HR 表示不用再重新進行一次 2 個小時的技術面談,可以直接進入到 Team Match 階段。原本這個職缺的進度跟其他間是差不多的,結果後來收到 HR 的來信表示團隊決定還是要重新進行技術面談,也因為這樣進度直接落後其他間公司的 offer,所以只好婉拒後續面談。

imToken — 前端架構師

imToken 是一間新加坡商區塊鏈公司,前端架構師一直是自己夢想中的職位之ㄧ(職責介紹),然而以台灣市場來說真的沒什麼公司開類似的職位,當然我知道自己經驗還不夠格,所以投遞時有表明希望先以 mid-senior 的 level 應徵,但未來會期望能往架構師邁進。

跟 HR 簡單聊完後才發現需要做 take home exam,因為家人生病需要陪病的狀況,不太可能抽出一兩個禮拜的時間認真寫作業,所以後來果斷放棄這個機會。

PicCollage — Frontend Engineer

面試流程:第一關 Online Interview ➡ 第二關 Online Interview ➡ Take Home Project ➡ 第四關 Online Interview (討論 Project) ➡ Onsite Interview (據說需要整個下午的時間)
結果:Rejected

朋友幫忙內推,一間矽谷美商,產品主要是影音編輯相關服務,最近也積極整合與嘗試 AI,可以全遠端,但台灣有實體辦公室,台灣辦公室也有蠻多外國籍員工,基本上是需要全英文溝通的環境。

因為是朋友內推,第一關直接跟國外的 EM 聊,主要是聊 Culture Fit。

第一關結束後收到一個 codesandbox 連結,需要完成指定的功能(蠻簡單的,印象中是用 React 做一個讓滑鼠點擊都可以留下 emoji 的功能,這應該算是第 1.5 關吧)。

第二關是 Pair Programming,主要是針對上面的 codesandbox 做進一步的功能修改,例如讓點擊滑鼠顯示出的 emoji 可以依照時間間隔變換圖案,需求都不算太困難,對 React Hooks 有一定熟悉度就可以實作出來。

第二關結束後收到 Take Home Exam 邀約,需要做一個踩地雷遊戲,並且要確認符合題目規定的一些條件。完全不了解踩地雷規則也沒有開發過小遊戲經驗的我馬上惡補網路上各種資源,並在規定時間內壓線完成(Repo)。比較特別的是在開發作業期間,對方會創一個 Slack Channel 讓你跟面試官在裡面討論需求,自己覺得是在考驗開發時面對需求的溝通能力。

幾天後朋友告知團隊成員覺得我寫得不錯,不久後也真的收到四面邀約,四面是跟 CTO 以及另一個前端 Member 解釋自己的作業,需要使用英文解釋。

然後我就收到感謝信了😭(也許是哪邊的細節沒解釋好或是英文講太爛,我在 Slack Channel 發問想得知自己可以進步的地方,但是沒有收到回覆😅)

這關如果有通過的話,應該還會有需要到辦公室的最後一關,據說會需要佔用整個下午的時間,會考一些數學邏輯,也會有跟各團隊實際交流、跟開發團隊實體 Pair Programming 的機會。

CakeResume — Sr. Frontend Engineer

面試流程:第一關 Online Interview ➡ 第二關 Onsite Interview (需三個小時)
結果:Offer Get

這是今年比較早些時候的面試,並不是陪病時進行的,但還是依照印象寫出來與大家分享。

第一關是跟 CEO 線上面談,主要是聊過往的經驗與對工作的期待。

CakeResume 的面試流程算是比較特別,不同於多數公司需要跑很多關卡,他們的二面就是最後一面,但當天需要空出 3 個小時至辦公室面試,一次把所有流程關卡都跑完。

首先會先寫一份智力測驗考題,包含一些邏輯、數學、圖形…等等,接下來要寫三題 Coding 應用題,差不多都是 LeetCode Medium Level,當初因為沒有刷題,這裡是被慘電QQ(而且要用紙筆手寫,有點不習慣🤣)。接下來是與兩位前端工程師的技術問答,這邊比較不像是來回的討論,而是針對一個問題給予回答後就直接切到下一個問題(有點像快問快答的感覺),其中包含 Node.js Event Loop、React 運作原理…等都算蠻基礎的問題。

CEO 有在一開始說明如果前面的測驗沒有通過,面試就會在這邊結束,因為我的 LeetCode 表現真的很慘,想說應該要準備回家了,沒想到被告知有進到下一個階段🤔。

接下來是最後一關,需要跟產品團隊的成員(PM, BE, FE)介紹自己與做互動問答,這關應該會針對每個人的背景不同而問不同的問題,就不多著墨。

大概兩三天後收到來電通知有 offer,薪資有在 Senior 的區間,但是因為認為我的經歷仍然稍嫌不足,因此不會掛 Senior 的 Title。

接下來則是三間我有跑完面試流程的 Full-Stack 職位:

HackMD — Full-Stack Engineer

面試流程:第一關 Online Interview ➡ Take Home Project ➡ 第三關 Online Interview(作業檢討) ➡ 第四關 Online Interview(With Co-Founders)
結果:Offer Get

ㄧ樣是比較早些時間的面試,不是陪病期間進行。

面試心得:

第一關是跟 Co-Founder 其中一人面試,Co-Founder 本身是工程師出身,也是 HackMD 最早期的開發者之一,所以可以感覺得出技術能力很強。這一關先問了一些個人的經驗,再來是考一些用 JS 做字串處理的問題,回答之後面試官有解釋像 HackMD 這樣的文字編輯器會很常需要做類似的事情,並且寫出高效能的演算法也是很重要的,這是編輯器應用跟大多數 Content Based 的前端應用比較不太ㄧ樣的地方。

後來面試官也要求在 HackMD 平台打開 Chrome DevTool 看看 network requests,這邊主要考了一些 WebSocket 的概念,因為像 HackMD 這種 real time 的編輯器背後就是依賴 WebSocket 來達成的。

一面結束後收到了一份回家作業,作業要求是實作一個短網址系統,需要包含前端與後端。雖然網路上有很多基礎教學都在教怎麼做一個短網址系統,但想也知道直接交出那種最簡易的版本肯定會 GG,所以針對這個作業我自己記錄了一些需要特別注意的地方:

  • Load Balancing
  • Hash Collision
  • Cache Layer & Invalidation Policy
  • Data Analytic

總之最後我用 Next.js 13 Server Components (那時候 RSC 才剛推出還在 beta,我也不知道自己哪來的勇氣敢直接用🤣) 搭配 Prisma ORM、AWS RDS、Redis、Vercel Serverless Function 自己兜出一個簡單的專案出來就繳交了。

大約一週後收到三面邀約,收到邀約的同時也收到面試官對於作業的一些回饋,表示希望在三面時可以一起討論,可以感受到他真的非常認真且用心地看過作業,這點讓我覺得面試體驗非常良好。

三面主要是針對短網址作業的一些討論,也簡述了一下如果時間充足,會希望如何加強自己設計的應用。

最後第四面則是加入了另一位 Co-Founder 一起面談,主要是聊 Culture-Fit 的部分。

整體來說 HackMD 的面試體驗非常良好,也感受得出他們想找的是一位志同道合可以一起打拼的夥伴而不是僅僅是一名隨時可替換的員工,身為 HackMD 的忠實用戶,我個人非常期待這個平台未來的發展。

美商安佩科技 Mammoth Cyber — Full-Stack Engineer

面試流程:第一關 Coding Test (一小時內回傳) ➡ On Site 技術面試 ➡ 第三關 Online Interview(With CTO) ➡ 第四關 Online Interview(With CEO)
結果:Offer Get

一間矽谷的美商新創,研發團隊聚集在台灣,可以部分遠端工作(一週兩天),產品是企業級的資安瀏覽器,全中文面試。

面試心得:

第一關是 Coding Test,需要在開始測驗後一個小時內回傳,主要是考 OOP 設計 Cache Module。第二關是 On Site 的技術面談,一開始 HR 先介紹了公司產品與相關福利(感覺非常彈性且自由),接著是與兩位工程師面談,話題主要是圍繞履歷內容去延伸,當下暗暗感嘆還好我履歷都沒有亂寫,不然真的會被考倒。除了履歷上的內容,偶爾會穿插考一些基本的技術知識,例如 Node.js 的 Event Loop,OAuth 運作機制…等等。最後則是考了系統設計情境,如果今天要建立一個搶票平台會怎麼設計,再根據我的回答去討論可能會遇到的問題與解法。

三面是跟一位中國 CTO 面試(人感覺很好),也是著重在履歷內容與考一些雲端架構的基本概念。

最後一面則是跟人在美國矽谷的 CEO (人也感覺超好)談 Offer,並聊一些公司未來的願景與發展方向。

自己覺得這是一間非常有前景的公司,畢竟在做企業級資安瀏覽器的公司目前應該不多,而未來產業對資安的需求我相信是只會增多不會減少的。如果是很想培養不同技能樹的工程師應該會蠻適合這裡,因為他們鼓勵每個人去嘗試自己想嘗試的技術領域,不用侷限於自己的 Job Title。雖然是美商,但似乎只有 Daily Standup 需要用英文報告,其他時間都是以中文溝通為主(應該算是個可以練習英文又不會有太大壓力的工作環境)。

Netskope — Sr. Full-Stack UI Engineer

面試流程:第一關 HR Talk ➡ Online Coding Test (1) ➡ Online Coding Test (2) ➡ Online Coding Test (3) ➡ Subject Matter Expertise Interview ➡ System Design Interview ➡ Hiring Manager Interview — Team / Cultural Fit
結果:Offer Get

Netskope 是矽谷的一間資安科技公司,主要在做雲端的資安解決方案,真外商風格,可以全遠端工作,但在信義區也有實體辦公室可以辦公 (收購原先一間叫 Kloudless 的公司作為台灣分公司)。面試流程走的是標準的矽谷公司面試流程,我總共面了 7 關(據說不同團隊與職位會有所不同),全英文,因為要跟在印度以及美國的面試官面試,時間多安排在台灣時間的早上,總時長共花費一個半月左右:

面試心得:

第一關跟 HR 面試,HR 首先考了一些非常基本的前後端知識(應該只是確認一下面試者是不是來亂的),再接著說明公司的相關資訊。因為這個職位的 Title 其實有點特別「Sr. Full-Stack UI Engineer」,所以也有特別詢問一下 HR 那個 UI 是什麼意思,後來才知道這是一個叫 UI Team 的團隊在徵人,主要在做 Dashboard 系統,會碰到的技術與架構大概有 React、Micro Frontend、Nest.js、PHP、k8s、AWS…等等。

比較特別的是 HR 一開始就有跟我說依照我僅有 2 年多的工作經驗,就算最後拿到 offer 應該也沒辦法掛到 Senior 的 Level。(當然我覺得如果實力夠強的話年資多久根本不重要,我就看過一些怪物剛畢業就直接拿到 Senior Title 的 offer 的,但很可惜我不是那種強者😭)

我在面試前看了網路上許多關於 Netskope 的面試分享,自己原本預設 Coding Test 應該只會有 1–2 關,結果沒想到我前三關都是 Coding Test,考了一些 JS 的基礎概念,例如實作一些 Build-In Web API、Hoist、Object Shallow Copy、Currying…等等,也考了一些大概是 LeetCode Medium Level 的應用題,因為這個團隊的前端主要是用 React,所以其中的一次面試也考了 React 的 input 格式處理,整體難度不難,但連續三關還是挺累人的(因為時差問題,所以要分三天一大早爬起來考 Coding 真的好累😅)

第五關終於不再是 Coding Test 了,面試的主題是 Subject Matter Expertise Interview,只討論了兩題情境題,一題前端一題後端,前端的部分圍繞在效能優化這個主題做討論,後端則是討論 API 的設計,例如假設某個 API 背後會打多個不同的微服務,且有的服務 Response 很慢,有的有相依性,我會怎麼設計?這題我天馬行空的講了很多可能性,例如 Materialized View Pattern 或 CQRS,面試官人很 Nice 不會直接打槍我的想法,而是會跟我一起討論可能會遇到的問題,整體來說挺好玩的。

第六關是矽谷公司常見的 System Design Interview,這是我第一次面對全英文的系統設計面試,我的策略就是先 follow 我之前寫過的一篇關於基礎系統設計的文章提到的心法,先分析出 functional 與 non-functional 的需求,再估算系統預計面對的流量以及對應所需要的資源。運氣很好的被考的系統是短網址服務,因為這應該算是常見的系統設計題目裡比較簡單的系統,自己剛好也實作過簡易版本,因此是相對比較有把握的。面試官主要聚焦在 Scaleability 與 Availability 上做討論,後來也討論到 Database 的 Sharding 策略。過程中面試者需要透過網頁平台直接畫架構圖,這次終於感受到畫軟體架構圖是多麼重要的一個技能了😂 我畫的真的 超!級!醜!

第七關是最後一關,跟 Engineering Manager 聊 Team & Culture Fit,因為自己過去前端的經驗比較多,所以在這場面試反而聚焦在我過去開發過哪些後端的系統或服務。因為我後端經驗真的比較少,只能拿出第一份工作時幫忙開發 API、在 Web Infra Team 幫忙一條龍處理前後端與 CI/CD 開發的經驗,以及過去幫朋友 tune 過後端 side project Performance 的一次經驗…等等比較單純又不紮實的經驗來接招,後續也考了一些 SQL 的基礎概念,都是很經典的考題。聊完後端經驗後就聚焦在一些打造產品時會面對的情境題,例如團隊資源會如何分配、團隊目標如何聚焦、理想中團隊的運作模式…等等。

最後 HR 告知有拿到 Offer,不過如一開始所說,Title 是掛一般 SWE ,還不到 Senior Level,但是因為薪資仍然有達到我的期望,且加上額外的 RSU 與各種員工福利,總體來說我覺得是蠻有競爭力的 Offer。

這次家人生大病後,對自己的生活產生很大的影響,連帶的也影響到自己尋找工作機會的標準,例如當初家人病因還不明確時,我是接受部分遠端的工作的,但當得知家人確診十分罕見的自體免疫疾病後,一切都需要重新思考過,包括工作的地點與模式、未來買房的時機與地點…等等,因為疾病的癒後生活也非常重要,才能避免再次復發。所以最後衡量後我是決定要找能夠全遠端的工作機會,期望能更方便與彈性地照顧家人。

這次整個找工作的過程拉得很長,因為隨著事情的發生,自己對工作的需求也在不停地改變,所幸最終確定了適合自己現在與未來的工作模式,也找到滿意的機會。回過頭看整個過程會覺得自己有種被迫長大的感覺,已經不像當初剛出社會時不需要考慮太多面向,只需要找到一個可以磨練自己讓自己成長的工作機會就好,但我覺得這些過程也讓我變得更加成熟穩重,也更能把眼光放在遠一點的未來,而不是像以往只看得到當下、只看得見自己。

最後希望這些面試的過程與心得,可以幫助到其他也在這個領域奮鬥的朋友們!

最後的最後工商一下,我近期有經營一個分享 Web 技術與軟體工程師生活的 IG 帳號,有興趣的朋友可以追蹤看看喔!

本文由 莫力全 Kyle Mo 授權轉載, 原文: 《 2023 Web Full-Stack & FE Engineer 求職心得 》

___________

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

瀏覽 476 次

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

發佈留言

Back to top button