版上各位先進大家好,
最近轉職面試告一段落準備上工,
趁還有記憶的時候分享一下幾間公司的面試心得。
關鍵字:後端、全端、backend、fullstack、Seasalt、GoFreight、Line、Google、Arc
=============================分隔線=================================
0、個人背景
116數學學士,119資科碩,軟體開發相關總年資在4~5年間。
碩班是工作後才回去唸,差不多同時決定發展方向為「略懂深度學習的後端開發者」。
主要技能:Python3、Docker、Kubernetes(有拿CKAD)
語言:TOEIC 920 (應該已經過期了QQ)、JLPT N1
由於疫情關係,面試皆為遠端視訊。
期望待遇部分都是開年薪130萬新台幣。
1、事前準備
有過兩年前被Line Fukuoka轟炸的經驗,這次作了以下準備:
- 複習OS (Thread/Process/Lock/CPU排程)
- 看一些網路相關知識,TCP、UDP、OSI layers等
- Leetcode 大約 Easy/Medium/Hard 50/250/40 (每日任務+時間夠的話寫相關題目),
去年九月開始。
- 複習Python3的基本知識,Thread/Process的用途含GIL的機制、GC、基本型態、
內建資料結構的時間複雜度、Mutable vs Immutable等
2、面試心得
==============================
A. Seasalt.ai 海研科技
職缺: Python Backend Engineer
管道: CakeResume顧問
==============================
一間美國的新創,總部在西雅圖。兩位創辦人的的學經歷非常、非常、非常地厲害。
這是他們第二次創業,上一間已經被百度收購了。主要產品是AI語音對話、TTS跟STT。
面試流程:
- 線上測驗
Python基本語法跟一些後端知識,選擇題。
- 一面(CEO)
主要問過去工作經驗及轉職動機。技術方面的問題問了一些基本Python語法,
最後則是介紹產品走向、美國團隊跟台灣團隊的分工、未來商業走向等。
結束後兩小時通知通過進二面,很快@@。
- 二面(台灣backend lead)
這一關的技術問比較多,問了幾種Python非同步機制的比較(thread/process/asyncio等)
以及SQL相關的知識(偏理論如ACID跟BASE的比較,語法沒問)
之後就閒聊台灣團隊的組成跟現況、開發流程,以及跨國合作的部分。
- 三面(CTO)
自我介紹&問過過去開發過的東西之後,進入白板題環節。考了一題資料排序的實作(不限
哪一種,但要能解釋複雜度並說明跟其它排序演算法的比較,需考慮資料本身正確性)。
結束後換我提問,問了CTO在NLP模型-->商業系統的開發過程中遇過比較印象深刻的技術
難題。可惜我對語言模型沒什麼研究,不然應該可以聊更深QQ
- 四面(CEO)
這關沒有技術。CEO再次介紹公司組成、合作模式、金流狀況,接著便發出口頭offer。
由於組成中有stock option,聽到我沒概念也有花時間介紹選擇權跟怎麼兌現的知識。
真的很謝謝他!
結果:口頭offer。不過組成中stock option占比偏高(15~20%)且要綁4年,基於目前
年紀跟經濟狀況無法接受偏高的風險,最後婉拒機會。再年輕個2~3歲應該就衝了。
==============================
B. GoFreight 聖學科技
職缺: Fullstack engineer
管道: CakeResume顧問
==============================
一間台灣本土新創,主要產品是開發整個貨運承攬業所需要的系統,將傳統繁複的流程
數位化。雖說是新創,但規模已經來到90人且持續擴編中。目前主要市場是歐美這樣。
面試流程:
- 線上測驗
5題HackerRank,體感Easy/Medium/Hard = 1/3/1
- 一面
持續4個半小時的車輪戰,細分成三關:
- RD
白板題,直接開shared doc寫,Medium左右的難度+follow-up。需要討論輸入資料的
範圍跟確認edge case,也要說明作法造成的時間、空間複雜度。
- 兩位技術主管
一樣是白板,只是變成情境模擬題,非常有趣!會以非技術人員(業務行銷)的角度開
需求,先討論訂出技術規格、資料型態、unit test怎麼訂測項等。之後才是實作
這些功能。更好玩的是最後會搞一個需求變更,測試程式架構的擴充性,也要考慮
可讀性。最後運氣很好有想出一套還算通用的架構並實作出來。
- CTO
自我介紹後,先問一些Python跟OS相關的知識(Python的thread vs process、OS lock
、deadlock跟發生情境等),後來也有問一些網頁開發知識例如session vs cookie
以及對瀏覽器輸入網址後會發生的事情。
之後會從履歷中提過的經驗問開發時遇到的問題跟解決過程,及討論設計上的取捨。
這個部分會問得非常細,所以請盡可能深入準備履歷上寫過的東西。
最後會介紹目前團隊的組成、分工、開發流程、目前的系統架構跟tech stack等。
- 二面
這關是同時面CEO+COO兩位,比較偏向確認人格特質跟文化適性。自我介紹後問了過去的
經驗、轉職原因、職涯規劃、還有個比較有趣的是「如果你完全不缺錢,會想做什麼?」
最後則是介紹公司團隊、產品、現在在做的事跟未來計畫。我提問的階段則是問了商業
模式、競品,以及創業緣由。CEO說他知道台灣的高薪工作大多在半導體業(他創業前
是GG的主任工程師),但並沒有幾間國際級的純軟公司,因此找幾位老夥伴想創一間。
以他們給得出的pay range來看,我覺得他並不是在開玩笑。
結果:CTO親自打電話發offer並說明薪資結構。口頭一天後電子offer。
==============================
C. Line台灣
職缺: LINE Clova Product Engineer
管道: 官網投遞 (https://tinyurl.com/59sn5uzf)
==============================
Clova product team是Line台灣新成立的團隊,目標是以Line自身有的AI工具為基礎,
依據台灣客戶的需求開發應用系統。
面試流程:
- 線上測驗
寫到這份題目的時候,我當下的心得是「乾,我是不是投錯缺了??」
與上次投Line Fukuoka的題目方向完全不一樣,程式題部分應該連Easy都不到。
但是後端知識題守備範圍之廣,當下整個傻掉@@...誇張一點的講法是,整個
backend developer roadmap (https://roadmap.sh/backend) 上有的東西幾乎
都摸到了...本來考完之後覺得「嗯,GG了,一年以後又是一條好漢」但竟然過了@@
- 一面
技術關,由CTO (後來才知道)、Data team lead跟負責AI的TPM進行。
本來會分成兩關但因為面試官們敲不定時間分兩次所以最後變成一票玩到底。
自我介紹後,會延續線上測驗的考卷問深。其中我印象最深刻的是網路相關的問題,
從之前用過的web server開始問,然後問說有沒有想過它們是怎麼運作的?request從
client端發出後到你的code中間發生了什麼事?然後再問TCP連線會發生的各種狀態及
成因(包括為什麼在HTTP協定下,TIME_WAIT會發生在server端),最後則是底層到kernel
有哪些跟socket、連線相關的設定可以喬。當時最後那兩段已經是CTO笑著開文件跟
流程圖在跟我上課了,真的很謝謝他,知識增加了QQ
其實還有其它工具、協定相關的問題,這邊不贅述。簡單說,「你對自己摸過的技術
要求甚解」。
- 二面
HR關,主要問過去背景跟經歷,以及對這個職缺的理解。之後會說明公司文化、薪資組成
跟後續的流程。如果面試本身有過,之後會進核薪階段,要提供學歷證明、工作證明、
現職薪資資料、退伍令等一干文件。
結果:二面結束一週後HR通知面試通過進核薪流程。思考了好幾天之後,覺得現在的自己
並不適合這個職務,因此非常不捨地婉拒了後續的流程。
備註:Line的時間會拉比較長,投遞-->測驗-->面試大約各兩週,有打算應徵建議提早。
==============================
D. Google台灣
職缺: Software Engineer, Camera 3A, Android (不過似乎過了才會決定去哪個team)
管道: 官網投遞 (https://tinyurl.com/z8zn35w6)
==============================
人生總要有幾次衝動,挑戰Google就是其中一次。
在官網翻了有找,發現這個JD跟我過去經驗頗為符合,就衝了。
面試流程:
- recruiter訪談
投遞約莫一週後recruiter來信約訪談時間。主要聊過去開發經驗、在團隊中的角色、
轉職原因跟有興趣的領域。之後會說明後續的面試流程並問說需要多少時間準備。
結束後會寄大量準備資料給你,範圍涵蓋大學CS的全部基本科目+系統設計。真的很
重視應徵者。需要特別注意的是,Google的面試會明確指出題目是機密不可公開。
- 一面
面試官是台灣的軟體工程師,hello講完就開始用中文了,之後直接進白板題。
會先討論資料內容跟預計的解法,也要說明時間複雜度。有更好的解法時面試官
會給一些提示,最後有成功想出最佳解。然而在實作的時候,不知道是太緊張還怎樣,
題目本身有medium的部分跟easy的部分,結果medium的部分順利弄出來,但是另一半卻
卡死在一個index的問題。最後就這樣GG惹...
事實證明,心理的準備跟技術的準備一樣重要QQ
結果:一面結束隔天recruiter打來告知沒過,但面試官給出的comment是有潛力,所以問
我要不要再挑戰一次。可惜當Google再次來信時我已經確定offer了,因此婉拒了第二次
機會。真的非常感謝!
==============================
E. Arc
職缺: 資深後端工程師
管道: 本板(https://tinyurl.com/3hr3h9kn)
==============================
其實蠻對不起這間公司的,因為徵才文寫了Arc/Codementor,我直接當成他們是同一間。
直到跟HR聊才知道Codementor是關於線上程式教學的平台、Arc則是遠端人才平台。
完全不同產品。而在其他平台的職缺說明有一篇網誌說明常見問題,但是PTT沒有結果
跟HR問問題的時候一陣尷尬...建議想投這間的板友去Yourator看職缺說明會比較精準。
面試流程:
- HR面試
主要問過去工作經驗、轉職原因跟期望待遇。因為我一開始就搞錯團隊的關係,問問題
環節我直接道歉然後說會去看那份常見問題的文件。
- 作業關
會先開一個Github給你,裡面有完整的需求。問題疑義跟溝通部分則是會邀你進一個暫時
的Slack先討論預期的做法跟目標工時,之後就是實作。語言工具不限,但要注意幾點:
- 程式的架構
- DB schema
- 品質與穩定性
最後很遺憾我並沒有通過這個關卡。強烈建議若在職中,請一天假在最好的工作狀態寫。
加班到九點回家寫這個寫到兩點真的很痛苦...
結果:作業關沒過。
=============================我是分隔線===========================
寫著寫著就變流水帳惹QQ
補充:
履歷無聲:群暉、ByteDance (LinkedIn有HR跟我要履歷,然後就沒有然後了)
另外有參加Meet.jobs Grab那場15分鐘快速面試,聊完就知道個性不會合惹。
這是第一次嘗試在不開104的情況下找工作,很感謝一路上幫忙我的大大們。
希望能給要轉職的板友們一些參考。
另外關於從一開始誤打誤撞進軟體產業到現在的過程,以及這次的策略跟心理建設
不在這篇的討論範圍,如果大大們有興趣我再多寫一篇,謝謝大家!
--