2021 年後端工程師面試心得
文/Jack Yu
背景介紹
全職工作經驗大約 4 年, 之前的工作內容包含前後端以及 AWS 系統架構設計等等
技能樹: Node.js, Vue.js, JavaScript, Java, AWS, Security
對資訊安全有一些涉獵
包含打過幾場 CTF, 再加上之前有去 HITCON 分享在 HITCON ZeroDay 找到的漏洞
就是大概了解這個領域, 沒有說很強 XD
LeetCode 大概寫個 90 題附近就去找了
基本上我的策略就是摸清 LeetCode 的概念題
例如說以 DP 的題目來說, 差別差在存的東西和運用的邏輯不太一樣, 但概念上是一樣的
不過這次面試沒遇到太難的 LeetCode 題目,算是蠻幸運的
投遞大綱
職位都是資深後端工程師, 只有 Pickupp 比較特別是全端工程師
除了 Linker Network 是疫情前(三月)在辦公室面試之外, 其他都是遠端面試
- Linker Network – 經朋友介紹, offer get
- Knowtions Research – COO Linkedin 私訊問是否要面試, offer get
- Pickupp – hunter 投遞, offer get
- Dcard – hunter 投遞, 感謝信
- AmazingTalker – hunter 投遞, offer get
- 趨勢 – 個人投遞, 感謝信
- Glasnostic – hunter 投遞, 作業關後被拒
- OneDegree – 個人投遞, 因決定 offer 所以拒絕 online coding test
那因為 Dcard 沒進面試, 所以就沒寫太詳細了
Linker Network
這間面試都是同一天面試, 並沒有分成好幾天
所以不用擔心這麼多關會拆成很多天, 一次到底的感覺其實還不錯
第一關 – engineer
主要是考 node.js event loop 和 js 原型鏈 和 hoisting 等等概念
以及 leetcode easy 三題選一題
- two sum (相減版)
- binary search
- link list merged
難度個人覺得偏易, 對 js 和 nodejs 原理有了解的話很快就可以答出來
整份大概寫了 10 分鐘左右
這裡覺得不錯地方是, 不是用手寫, 而是用 Notion 共筆打字
第二關 – backend lead + engineer
主要是針對工作經驗和個人自身詢問
那因為之前做過架構和程式開發, 他們就針對做過的部分去回答
就看他好奇哪部分就講給他聽, 像是還有問一些行爲問題
- 做過有挑戰性的專案
- 下一份工作期望和想做什麼
- 離職原因
第三關 – backend lead + engineers
主要針對他們公司介和和產品的說明, 以及其他行為問題
所以也會知道他們內部實際是做什麼, 有哪些組別等等問題, 行為問題有像是
- 有沒有無法忍受的事情,忍無可忍那種
- 職涯規劃
那因為個人對他們做的東西有點興趣, 所以這階段問了蠻多問題
導致後面時間拖得有點長 XD
第四關 – backend lead
這關原本應該是 CTO 來面試
但 CTO 還在開會, 所以 backend lead 就代替他先繼續問一些行為問題
- 如何跟前端合作
- 有當過 mentor 嗎? 你的方式是什麼
問題分類, 看起來是著重在團隊合作的部分
第五關 – CTO
CTO 開完會就過來了, 個人感覺偏向閒聊
那因為履歷上面我有寫 stackoverflow 回答問題
才發現 CTO 其實也有在上面回答問題, 就有針對這個經歷稍微聊一下
第六關 – CEO
這關偏向閒聊
大概就是 CEO 會跟你講公司的願景和他以前做過的事情, 以及未來想做的事情
第七關 – HR
這關是談 offer 的部分
那因為個人關係加上這間比後面都早兩三個月面, 所以實際能到職時間是三個月後
所以這邊他就是保留我的 offer 但沒給我數字, 而是時間快到了再跟他們說
因為他們也知道我一定會去面試其他家公司 XD
結果: Offer Get
Knowtions Research
前兩關都是英文, 最後一關主要是中文
這間面試時間蠻彈性的, 早上晚上都可以
也是因為這個外商時間剛好跟台灣差 12 小時
所以面試時間都是在台灣的 19: 00 ~ 22:00 這之間
總計三關, 都是不同時間面試
第一關 – co-founder
技術題目
- event loop 是什麼
- v8 是什麼
- DB index type
- fork spawn 差異
- mysql index order
行為問題
- 問覺得好的 manager 和壞的 manager 差別
- 如果你在開發的時候, manager 跟你來說規格要修改你要怎麼做
最後來有一個 Coding Test, 比較像是 co-work 的感覺
題目難度大概在 leetcode easy
第二關 – CTO
談論組織架構如何運行以及介紹他們的公司
比較特別的是他也有問到『好的 manager 和壞的 manager 差別』
這關大多都比較像是在聊工作經歷, 沒什麼太深的技術問題
第三關 – COO
有問到能否接受快速變化, 以及介紹產品實際上在做什麼
以及談論薪水, 這關也比較像是在聊天
結果: Offer Get
這邊稍微補充一些額外的東西
雖然看起來是新創, 但在職位上定義還蠻清楚的
當時 COO 就邊解釋邊開他們的 Confluence 給我看 XD
就看到他們工程師有分 6 個 level, 看起來是公開的, 也有去定義每一個 level 是做什麼
再來因為是新創, 所以也有 Options 可以拿
在講 Options 時, 他們內部有一份特地的 ppt 告訴你詳細細節
包含如果公司上市你拿多少, 公司被買走你可以拿多少, 外面投資人對公司估值是多少
當下就都有分享給我, 面對一個還沒進去的人甚至還沒答應 Offer 的人
願意提供那麼多資訊, 是很有好感的
不過因為他們公司總部在多倫多
晚上會需要跟他們開會, 但他有說下午你就可以去做其他事情
變成要開會那天的時間安排, 就會更彈性
Pickupp
這間是港商, 但面試都是全英文面試
總計四關, 每關都是不同天去面試的
第一關 – CPO
自我介紹和針對人生和工作經歷去問問題
第二關 – 作業
主要是四個小題目, leetcode 等級的話大概在 easy
這裡不會有時間限制, 寫完之後, 跟他們說寫完了
整個過程都是線上, 所以他們也會同時看到你在寫
他們就會 review 一下, 請你改成他們建議的方式
你改完他們有空就會再繼續看, 直到都沒有問題
這整個過程取決於雙方有空的時間, 長的話可能會來回 1~2 天
第三關 – CPO & Engineer
來面試除了原本 CPO 還有另一位工程師
主要針對工作經歷的內容問, 也問得非常詳細
接著有提問一些問題, 我記憶力不太好只想到這幾個 XD
- FP v.s OOP
- 列出 data structure
- 當資料量太多要處理的時候, 要怎麼配合開多台伺服器去處理
第四關 – Live Coding
人員一樣是前面兩位
題目主要是他們產品的一些商業邏輯
像是前 10km 固定收費 5 USD, 接下來 20 km 收費模式變成 3 USD/km
然後去計算多少 km 應該收多少錢的問題
一開始我不是用 FP 的方式去寫
後來他們希望用 FP 寫, 所以就慢慢改成 FP
不過他們並不是堅持一定要 FP, 而是剛好這題型很適合用 FP 去寫
後來問過他們是不是偏好 FP, 但他們是看情況決定怎麼去使用的
結果: Offer Get
AmazingTalker
雖然在 ptt 面試心得中有些爭議, 但感覺是有心想改善
且對技術好像有一定的把關, 就試試看
面試流程總計四關
那因為時間剛好有對到, 所以二三關是一起面試
但第四關就是額外約時間面試
第一關 – 作業
回家作業關, 總計有 8 小時可以寫
內容大致上為實作兩支 API 、快取機制、Unit Test 和 Concurrent 問題
有直接提供 MySQL的 Table Schema 讓你可以去建立
我是用 express + mysql + redis 去寫出這個專案
那為了讓作業可以順利起起來, 最後有預留一個小時弄 docker-composer
第二關 – Tech Lead
如果作業審查通過的話, 就會進入到此關
此關內容主要圍繞在第一關作業的內容和工作經歷, 作業問題會問以下幾個問題
- 你這樣設計的理由是?
- 你拿到這個專案是怎麼下手?
過程中會開螢幕分享, 直接互相對話, 說明哪邊可能需要改以及解釋你這樣設計的理由
第三關 – HR
主要就是看公司文化和特質有沒有符合, 所以會問很多問題
HR 也會解釋公司一些特別的文化
在解釋的同時, 他們也會問你對於這件事情的看法是什麼?
也會問你對未來的規劃是什麼, 為何想當工程師等等行為問題
面試下來覺得互動感覺非常好
第四關 – HR Manager
類型跟第三關很像
那時候我有直接問他為什麼還有這關
我記得是說希望藉由多一個人面試, 去增加對於這個候選人不同角度的看法
這邊也有聊到未來退休想做什麼, 有沒有什麼樣的規劃
結果: Offer Get, 實際體驗比想像中好很多 XD
趨勢
主要有兩個組別面試, 分別是 WRS 和 Group1, 總計四關
除了第一關是寫程式之外
剩下的每一關都是額外約時間面試, 也就是說分了三天去面試
第一關 – Online Coding Test
主要是寫 leetcode 題目, 平台是用 codility
題目共四題, 難度我覺得是 easy 2 + medium 2
第二關 – WRS & Group1
主要是先 WRS 先面試, 再來是 Group1
WRS
因為我熟悉的語言是 js, 所以就會問一些關於 js 的東西
像是 promise 有什麼好處之類的
那因為我也有寫過 java, 所以他們也有問有沒有處理過 multi-thread 問題
再來就是 thread v.s process 問題
但在後續個人經歷分享上
我分享比較多在 infra 上面, 但我面的職缺是後端, 所以就沒第三面了
Group1
此組是趨勢大刀改革下的其中一個組別
裡面專案都是用 GoLang
大致上問題都是圍繞在行為問題, 沒有太多技術問題
以及解釋他們內部產品運作流程
第三關 – Group1
Group1
後來收到 Group1 第三面
跟第二面其實挺像的
但細節部分就講比較多, 像是產品運作流程中, PM 是提出問題的, 由 RD 去想解法
然後他們是 run Scrum, 除了 Scrum 固定會有的幾個會議之外, 他們還有 Group Design 的環節
再來就是所有後端工程師都會輪流接一些從客服來的技術問題 (不是第一線接問題的人)
當時面試是說每一次 sprint 會有兩個人輪流
第四關 – HR
這裡不知道為啥我的人資轉到變成 Alice 了
主要也是行為問題, 有沒有跟同事起過爭執啊等等問題
最後就在我開了一個薪資範圍結束面試
不過在這關面試過程中, 只有我開著視訊鏡頭在面試
感覺蠻奇特的 XD
結果: 面試完隔幾天後主動寄信, 獲得感謝信
glasnostic
第一關 – 作業
如果書面審查過的話, 會收到一個作業
作業詳細內容不能說, 但主要是需要用 Go 寫一個 CLI Tool
但如果沒寫過 Go 沒關係, 他們開放讓候選人回去複習再回來寫
結果: 第一關沒過, 後來有請 hunter 去追問有得到原因
OneDegree
第一關 – Online Coding Test
因決定 offer 所以拒絕 online coding test
但我覺得他們 HR 還不錯
投遞履歷後一個禮拜左右, HR 就有打電話來跟我安排面試
而且把每一個階段要做的事情都講得很詳細
後記
時隔四年後的面試還是有點緊張
不過以後還是會固定把面試的一些題目每隔半年到一年拿出來反思
有些問題很適合一直思考, 透過不斷地深入去問
也會對自己的人生走向越來越明確
至於有哪些題目, 其實網路上都找到的
- 期待下一份工作帶給你什麼?
- 想要什麼樣的工作環境?
- 3 ~ 5 年後想做什麼? 退休想做什麼?
- 想像中團隊互動應該是要什麼樣子?
- 成就感來源是什麼?
- 離開上一份工作原因?
- 有跟同事或主管意見不合過嗎? 如何解決?
- 等等 … 很多很多很多 XD
這些問題其實在平常互動都會出現, 只是我們可能不習慣故意去思考而已
假設已經身處在一個團隊之中, 感受到團隊合作不順暢也不願成長
如果只是一直習慣性擺爛不思考, 不去思考如何變順暢, 覺得都是別人的錯的話, 就變成抱怨了
抱怨是不會解決問題, 但偶爾的抱怨宣洩還是要的, 但只會抱怨就是把人生主控權交給別人了
這樣的話對於『想像中團隊互動應該是要什麼樣子?』這問題可能就永遠都答不好
透過不斷去思考如何去改善
可以慢慢找到自己實際上在意的點是什麼
有些人覺得要有 mentor 才可以幫助團隊互相合作和成長
有些人覺得制定嚴謹的工作流程才有幫助
但這些都是以不同面向得到的結果
想要 mentor 的人
-> 可能是習慣性有問題都會找別人求助找速解, 而不是靠自己思考得到自己的解答
想要嚴謹的工作流程的人
-> 可能是不喜歡掌控不住的感覺, 也許這樣就不適合新創公司
而這些思考都不應該只有第一層次, 它是可以不斷思考下去
以上面的 mentor 例子來說
-> 那為何不喜歡靠自己思考找到解答? 怕浪費時間?
-> 為何怕浪費時間?
大概是以這樣的感覺可以一直深入問下去, 問久了對自己了解和在意的點就越深了
當然這種方式可以應用在任何地方, 上面只是一種很隨意的舉例
以上廢話有點長, 謝謝看到這邊 XD
瀏覽 3,812 次