【學長姊帶路】軟體公司 (Circle, Google, NVIDIA, TermStructure, Kronos, ByteDance)面試分享
文/Eugene Yu-Chun Hsu
長期受益於 PTT、Medium 各路好手分享,這次也來分享一些自己今年求職的過程,順便記錄在此次科技業寒冬面試半年以來的心路路程。
前情提要:我的背景是 NTU EE → NTU CS 碩,有四年多後端正職經驗,實際接觸 Web 開發超過十年,多數是在純軟新創環境,使用的工具以 Python/Go 為主,略懂 RDBMS/Container/DevOps/AIML/Data Pipeline…,也有在 GCP/AWS/Azure 上設計過後端架構的經驗。
這次找工作的起點,是今年四月底離開與朋友共同創辦的新創之後,渴望回到純 IC (Individual Contributor) 的角色,希望加入有一定規模 or 產品市場明確 (PMF) 的公司,提升自己在技術/架構/團隊上的經驗。
面試準備:
1. Coding 部分,以 LeetCode — Blind Curated 75 為主,刷了大約 100 題,easy:medium:hard 比例約為 4:5:1。此外也有看 Cracking the Code Interview 一書準備。
2. 系統設計的部分,主要看 System Design Interview 一書搭配 medium 上各路神人文章準備。
3. 為了準備英文面試,我有在 Pramp 上面進行過幾次英文 mock interview,與老外輪流練習 think out loud 解題與互評。
不得不說,平常刷題相比實際面對考官解題,還是有一定差異,非常推薦在上戰場前先找朋友或線上平台練習個幾遍,在正式面試時會更得心應手一些。
Circle
長期接觸 Blockchain 與 Crypto,我有注意到去年台灣新創 Cybavo 被 Circle 併購的新聞,因此知道台灣有一個 Circle 團隊。
給不知道 Circle 的朋友:Circle 是推出 USDC 的金融科技公司,目前是全球第二大穩定幣發行商,也是加密行業獲得最多許可和監管的公司之一。
今年三月收到 Circle Recruiter 的信件,詢問是否對 Circle 感興趣,職缺是 Senior Backend Engineer。當時我還沒離開前一間新創,不過有保持通信,來回幾次後敲定在四月下旬第一次視訊聊聊。
Timeline
- D0: Recruiter call。Recruiter 非常友善,提供了詳細的職缺資訊,也讓我了解 Cybavo 在併入 Circle 之後的協作情況。Circle 全球大約一千人,原 Cybavo 員工有近八十人,主要負責企業用等級的安全金庫。由於我五月初有旅行計劃,約定好一個月後進行下一階段 — CodeSignal online assessment。
- D28: 進行 CodeSignal 線上程式測驗。90 分鐘 4 題,題目之間有連貫性,比較特別是限定用 Go 語言,應該是我這幾輪面試下來看過設計最完善的線上測驗 (不是單純考演算法,而且因為前後連貫,需要考量實作上的設計)。但由於我對 Go 的熟練度沒有 Python 高,時限內只解出其中 3 題。
- D29: Recruiter 告知沒有通過他們 minimum bar,結束此輪面試。
心得
雖然沒有通過程式測驗,但整體面試體驗良好,加上穩定幣產業前景看好,未來還是會持續關注 Circle 的發展與相關機會。
2021 與 2022 時 Google Taiwan 的 Recruiter 有透過 LinkedIn 聯繫上我,但我當時還沒有轉職的打算。2023 四月我重新聯繫同一位 Recruiter,正式開啟 2023 的 Google 面試。但是這次很有感 Google 並不像前兩年一樣大舉招人。Recruiter 告訴我需要先確認公司是否有 head count,加上我個人休假因素,來回多次信件與訊息後,終於在六月中敲定第一輪面試時間。
Timeline (1st try)
- D0: 技術一面。面試官先出了一題 easy,順利解出,接著再出一題 2D Matrix 相關的 DP 問題,難度大概是 medium。在考官提示之下,我有寫出正確的解法,但複雜度分析出了錯,結束時就大概知道結果了。
- D5: Recruiter 口頭告知 Not Passed,但面試官認為有足夠潛力,可以讓我準備一陣子後再嘗試一次。
Timeline (2nd try)
八月底再次傳訊給 Recruiter,開始安排第二次嘗試。Recruiter 告知目前只有 embedded 相關的缺 (與我方向較不相符),但可以等面試通過以後 team match 再看有沒有適合我的職位。九月初敲定第一輪面試時間。
- D0: 技術一面。只問了一題難度 medium 的 two pointers 相關問題,我花費 30-40 分鐘,逐步優化出最佳解法與複雜度,後面再給我 5–10 分鐘問問題+聊天。這次面試就順暢許多,結束後覺得很有希望。
- D7: Recruiter 信件告知 Passed,同時轉介另一位負責 GCP 相關職缺的 Recruiter。這位 Recruiter 說明可以先約個時間聊聊雙方需求與期待。
- D26: 度過中秋與國慶連假。與二號 Recruiter 聊聊,得知該 position 隸屬於 Team Infrastructure,地點在新店,面試會以 C/C++/Python 為主,一共有四關 (全部遠端),其中三關為技術面試,一關主管面試。安排 2~3 週後進行二輪的三場技術面試。
- D38: 告知 Recruiter 已接受其他 offer,結束此輪面試。
心得
面 Google 時我犯了一個錯,就是把面試排在太前面,導致第一次挑戰時沒有最佳的表現。不過一路上觀察台灣職缺多數偏向韌體/硬體,加上後續出現海外的機會,讓我萌生不同的想法,才婉拒後續二面。整體來說,Google 的面試體驗還是十分良好,若未來有合適的機會,我還是願意再次踏上挑戰 Google 的道路。
NVIDIA
去年底由 ChatGPT 引領的 Generative AI 大爆發,NVIDIA 如同上了火箭,在台灣也開始大力徵才。五月底我聯繫一位在 NVIDIA 做研究的學長,詢問可否幫忙內推,學長很阿莎力直接說可以,請我列出想嘗試的職缺。
觀察 NVIDIA 可能擴張快速、徵才需求強烈,所以不像 Google 有一個統一的 assessment → team match 流程,而是要每個職缺獨立投遞進行面試。我主要選擇幾個與 Omniverse 相關的純軟職缺(同時發現大部分職缺都跟 GPU、3D 相關),六月中學長內推後開始了 NV Taiwan的面試。
Timeline
- D0: 送出四份內推申請。
- D8: 收到其中一份 Reject。
- D38: 接到 Recruiter 電話,說明 Omniverse 要找 3D 背景的人,確認與我背景不符後,請我推薦認識的工程師。隨後又打一通電話來,告知有一位 SRE (Site Reliability Engineering) 主管對我背景感興趣,詢問我是否對 SRE 感興趣,可以改 position 後進行面試,我請 Recruiter 提供 JD (Job Description)。同一天稍晚我收到 SRE 的 JD mail,回信感興趣後,開始進行面試。
- D43: 一面 (Hiring Manager)。面試官是某個 SRE 部門的 team lead,非常友善,先介紹了部門,說明部門的職責以及業務,其中一部分幫公司把 monthly cost 節省了好幾 M,是人均效益非常高的一個部門。其餘時間是主管 go through 我的履歷,詢問技術問題,沒有考 coding 或 system design。雖然我的經歷與 SRE 不算很相符,但主管看來很願意培育人才,因此愉快的結束此次面試。
- D44: Recruiter 來電,告知主管面試 Passed,接下來會有三關技術面試。
- D52: 寫 follow-up mail 詢問 Recruiter,一直沒有收到預約下一輪技術面試時間的 email,並提供我未來兩週可以的時間。
- D57: Recruiter 來電,安排下週進行三場面試。
- D64: 三場技術面試同時進行 (一對三)。同樣做了部門簡短介紹,然後 go through 我的履歷,沒有考 coding 與 system design,主要詢問履歷細節,與一些情境題。如聊天一般的面試過程,但感覺跟三位考官頻率沒有非常對上 (可能我的 skillset 不符合他們所需)。
- D74: Recruiter 告知技術面試 Not Passed。
心得
我認為 NVIDIA 是下個世代最重要的科技公司之一,因此被 Reject 時還是感到蠻可惜的。無法加入 NV 當員工,至少可以買點 NV 股票壓壓驚。
TermStructure
TermStructure.com 是我去年底參加 DeFi Summit 認識的一間公司,雖然與我一開始想找的中大型公司不符合,但創辦人 Jerry 有著深厚的金融界經驗,做的產品我認為也是相當有潛力的,因此七月中在 LinkedIn 上看到 Python Backend Developer 職缺後,就上傳履歷送出了申請。
Timeline
- D0: LinkedIn 上填寫送出職缺申請。
- D1: Hiring Manager 回信,約一面對談時間。
- D3: 一面 (Hiring Manager)。主要介紹公司正在做的產品以及 go through 履歷,針對一些技術問題作討論。同一天稍晚主管 email 告知 Passed。
- D9: 二面 (技術顧問 + Engineers)。主要針對他們該 position 需求、以及正在解決的題目做討論。技術顧問有根據我的回答追問一些技術問題:例如分散式處理 service nodes 如何平均分配 workloads,我提出 Consistent Hashing Ring Algorithm。過程中沒有考 coding 能力,主要針對技術做 high-level 討論,整體來說聊的愉快。
- D10: Hiring Manager 來信,告知通過技術面試。
- D15: 三面 (CEO)。跟 CEO 進行最後面試,BQ 為主,整體對談愉快。
- D16: Hiring Manager 來電,告知 offer get 與 package 細節。同一天稍晚,Manager 提供 offer contract,要求一週內 sign contract,並希望兩週後 on-board。
- D18: 考量之後,我針對 offer 內容進行第一次 negotiation,主要針對 package 內容以及 on-board 時限做爭取。
- D20: Manager 回覆公司條件難以更改,將另作安排。
- D21: 回覆祝福公司找到合適人才。
心得
除了最後的 offer negotiation,整體面試體驗還是很順暢,且新創有他運作快速的好處,在三週內完成了所有流程。雖然是新創公司但資源充足,推薦給對區塊鏈、金融科技感興趣的朋友們嘗試。
Kronos
長期接觸 Blockchain 與 Crypto,經常聽到 Kronos Research 的大名,也知道他們在量化交易領域排名世界前段班,因此在七月底收到他們 Recruiter 信件時還蠻開心,也開始了面試過程。
Timeline
- D0: 收到 Recruiter 在 LinkedIn 上來訊,詢問是否對 Senior Software Engineer (Backend) 職缺感興趣。
- D5: Recruiter call。與 Recruiter 聊聊 Kronos 的團隊架構、面試流程,以及職缺細節,得知這個 position 隸屬於 Application Team,任務是優化、改進內部 traders 使用的金流系統。
- D19: 完成 Codility online assessment。120 分鐘考 3 題,難度大概是 easy/medium/medium。
- D27: 一面 (Technical)。有兩位工程師輪流考了 coding 題目以及 System Design,總共兩個多小時的技術面,非常紮實。
- D39: 二面 (Hiring Manager)。針對履歷提問以及考 system design。
- D41: 三面 (HR)。主要是 BQ 問題,雙方提問。
- D55: HR call。告知 Company structure 異動,hiring manager 換人,需要一次新的面試。
- D57: 四面 (New Hiring Manager)。這次是 onsite interview,我到了 Kronos 的辦公室進行面試,面試官考了一題與最佳路徑有關的題目,提問十分犀利,但也感覺得出考官對此題目有深厚的了解。結束後 Recruiter 帶 office tour,不得不說 Kronos 的辦公室真的豪華,座落內湖高樓層,遠眺信義區 101 風景,零食區、休息區、會議室應有盡有,甚至還有圖書館與冥想的空間,看得出來很注重員工的工作環境品質。
- D61: 收到 offer get 信件,開始 Background Screening 流程。
- D69: HR call,告知 package 細節。
- D82: 告知 HR 與 Recruiter 最終決定接受其他 offer,結束此輪面試。
心得
Kronos 的面試是我經歷最紮實的其中一場,歷時兩個多月雙方都對彼此有深入的認識,也是我覺得很不錯的一間公司,HR 與 Recruiter 也非常專業、友善。不過在職涯的考量下,我選擇了讓我有機會到國外發展的 offer。仍然感謝 Kronos 在過程中的安排,讓面試者有良好的面試體驗,我也會推薦身邊所有優秀的工程師挑戰。
ByteDance Singapore
感謝每一位看到這裡的人。
我一開始只有找台灣的職缺,直到六月底在 LinkedIn 上與 head hunter 聯繫上,才開啟海外工作的思考與對談。
這個職缺是 ByteDance Singapore 的 Software Engineer,屬於 Cloud Infrastructure 部門,負責公司內的私有雲 / App Engine / PaaS 開發。
Timeline
- D0: 在 LinkedIn 上看到 head hunter 關於海內外後端職缺的 post,主動聯繫該獵頭,並提供 resume。
- D1: 獵頭主動來電,詢問求職狀況、求職偏好以及技能樹等細節。同一天寄給我海內外職缺資訊。
- D8: 告知獵頭對其中四間 (兩間國內、兩間國外) 職缺感興趣。
- D30: 獵頭告知 ByteDance 有興趣往下一階段進行。
- D37: 一面 (技術)。考專業知識與程式題。
- D42: 收到一面通過的通知,準備二面。
- D51: 二面 (技術)。考系統設計與程式題。
- D52: 收到二面通過的通知,準備三面。
- D57: 三面 (技術 + Hiring Manager)。系統設計與 BQ (Behavioral Question) 為主。
- D62: 收到三面通過的通知,準備四面。
- D66: 獵頭安排與一位在 ByteDance Singapore 的資深台灣工程師聊天,破除了一些迷思,也獲得很多有益的資訊 (ByteDance / Singapore)。
- D71: 四面 (HR),英文進行,主要是背景查核、期望薪資與 BQ。
- D76: 收到四面通過的通知,開始 Background Screening 流程。
- D90: 主動詢問 application 狀態,HR 說明正在收集七個 approvals from compensation team (很像在收集七龍珠😂)。
- D98: HR call。告知 offer get,說明 TC (Total Compensation) 細節。
- D104: 接受 offer。開始收集工作簽證所需文件。
- D119: 送出工作簽證 EP (Employment Pass) 申請。(預計 6–8 週)
- D166: EP Approved — 工作簽證通過申請。
- D181: Onboarding Date。
心得
歷時將近半年,從一開始僅僅只是想看看自己能走到哪,到後來隨著面試進行,出國工作的畫面也越來越清晰,才開始思考出國生活的可能性、優劣分析,並且與另一半討論出國的種種安排。
此外,也要感謝 Spring 的 head hunter Lydia,沒有過程的幫忙,很可能這個求職故事會有不同的結局。如果你正在求職或渴望轉職,非常推薦與專業獵頭討論你的需求,或許會有意想不到的機會與發展。
同時也在過程中更加了解 ByteDance 這間公司,作為全球最具價值的獨角獸,用戶、流量與技術難題都是不同的層級。雖然企業文化有負面評價 (感謝很多朋友給我的建議與提醒 XD),但過程中也有聽到好的案例。權衡收穫與挑戰之後,我決定接下這個機會。
結語
裸辭後原本預計三個月可以找到工作,沒想到待業了半年。這段期間為了補貼生計,我有去接了案,結果過程中發生令人哭笑不得的鳥事。我只想說,每個在我困難時期提供協助的朋友,我都會銘記在心。
此外大家可以看到,我前半段面試過程並不順遂,當時是十分焦慮的,我最要感謝的是我的家人,以及我的另一半,在求職期間提供我許多情緒價值,我才有辦法支撐到最後。
希望這篇文章可以幫助到需要的人,作為面試參考,也提供我未來回顧的一個基準點。如果你有不同的體驗,歡迎在底下分享,或是提出問題討論。
因為有簽 NDA,部分面試資訊無法完全透露,有興趣了解的朋友歡迎私訊我的 LinkedIn,我會盡我所能提供協助。
本篇心得為主觀感受,不代表公司客觀立場與流程,若需修改請來信討論。
※本文由 Eugene Yu-Chun Hsu 授權勿任意轉載,原文《2023 純軟求職心得 (Circle, Google, NVIDIA, TermStructure, Kronos, ByteDance)》
___________
你也有經驗想分享嗎?快來投稿賺稿費吧!
瀏覽 1,009 次