背景
台大機械(B06)畢業,UCSD MS ECE Robotics track 2024/3月畢業。主要投Self-driving、Robotics、CV/ML方面的職缺。由於2023年summer intern找得特別辛苦,投了600+封履歷,面試 20 間上下,最後拿到1個offer(做 3D body tracking),因此在找正職方面就提早準備,基本上邊實習邊投履歷和面試。
以下主要著重在我申請的經驗和遇到的題目類型,面試技巧和如何寫履歷,相信網路上已經有很多詳細的文章了。
粗略Timeline
2023 8月初:開始準備履歷,把 intern 做的部分先大概寫進去,整理 project
2023 8月中:陸續投職缺,new grad 缺也差不多陸續釋出
2023 8月中 — 2024 3月初:面試、被拒、投履歷、面試、被拒、有 offer、繼續面其他公司 (進面試環節會少丟履歷,專心準備面試)
申請結果
先講結果,大概投了 300+ 封履歷,收到 13 家公司 HR reach out,8 家進入technical round,6 家進到 final round,最後拿到 2 個 offer
Tesla, Simulation Software Engineer Intern, Tesla Bot team
Kargo, Computer Vision Engineer, CV team
▲offer letters
以下是我進面試的公司:
- Pony AI (海投):2023/8/29 收到 perception team 面試,總共面了phone screen 1 輪 + on-site 4 輪,至今無下文。
- Gecko Robotics (海投):2023/8/30 收到 Localization team 面試,這間 HR 問蠻多 BQ,可能答不好也不會 proceed。第一輪 Hiring Manager 面SLAM 的 system design 直接掛,甚至連 LiDAR 要用哪個牌子的都問,可能想找實務經驗非常多的人,儘管這是new grad 缺。
- Tesla (海投):2023/9/7 收到 motion planning team 的 HR reach out,但由於背景不合,被轉到 Simulation。總共面 phone screen 2 輪 + on-site 5 輪。面完過一週只給 6 month intern offer (可轉正)。But,由於他們希望能2024 1月就上工,也不給延到我3月畢業後,就 rescind offer :),我甚至連 background check 都做完了。
- TikTok (海投):2023/8/27 收到OA,2023/9/13 收到 recommendation team 的 new grad MLE 面試。總共3輪,面完後被養魚,他們內部還在審核 Headcount。後來被轉到 senior 缺和 HM 加面一輪後說 position on hold 就沒下文了。
- MediaTek (朋友內推):2023/11/30 收到 5G Modem 組面試,總共面5輪,但我幾乎沒有 network 相關的知識,後來另一個朋友上了xD。
- Kargo (海投):2023/11/30 收到 Computer Vision team 面試,總共面phone screen 2 輪 + on-site 3 輪,面完兩三週拿到 offer。
- WeRide (海投):2023/8/17 收到免洗 OA,但他們家 OA 非常難,我寫了3次都沒全過(對,我投了3次)。2024/2/6 HR reach out 讓我不用寫 OA 進面試,面 perception team 的 new grad 缺,總共面 phone screen 2 輪 + on-site 3 輪,面完兩週後收到拒信。
- Applied Intuition (海投):2024/2/6 收到 perception team 面試,和 Gecko 一樣 HR call 滿滿的 BQ,一畝上看過蠻多 HR call 就掛的。結果我也是第一輪就面掛了,coding 做了個大概,但可能寫得有點倉促沒和面試官討論太多。
面試題目
以下皆為我本身 intern / full-time 面試20幾家公司的經驗,以 Self-driving / Robotics / ML 職缺為主:
Coding
一般公司不會特別要求語言,但有些 Robotics 缺會 prefer 或強制使用 C++ (比如Tesla, Zoox, Cruise),所以想走這方面的建議刷題就用C++。題目方面比起其他缺會多注重 C++ 方面的設計,所以基本上 Leetcode 跟 C++ 都要好好準備。
- C++ 物件設計:手刻演算法像是 RANSAC (from Cruise) 或是資料結構比如 doubly-linked list, circular queue。也會被考系統設計,比如設計一個飛機訂票系統,會用到 factory design pattern (from Zoox);或是設計一個 memory allocator (from Tesla)。
- Leetcode:如果是面中資公司比如 WeRide、Pony AI,可以預設就是考Hard,少數會有medium,其他大多數落在medium左右。個人感覺 graph, tree, dp, heap 的題目出現比較多。
- Geometry:有些公司會考幾何相關的題目,比如在2D平面上有許多圓形障礙物和一台在原點的機器人,給定障礙物座標和半徑,算出機器人被遮擋的視角 (from WeRide);在3D空間中給定船(假定為球體)的球心、半徑和orientation,算出在3D空間中其他位置上的敵人朝著球心發射子彈會打在船的右半邊或是左半邊 (from Tesla)。
推薦文章>>資工新手如何有效率的準備面試 (coding篇)?
Background knowledge
通常會從履歷去延伸,但 general 來說可以分為 Robotics / ML / C++ 做討論,以下是我被考過的 topics 關鍵字 (粗體是常被問的,可能和我過去經歷有關)
- Robotics:transformation matrix, intrinsic/extrinsic matrix, kinematics, RANSAC, ICP, Kalman filter, EKF, UKF, quaternion
- ML:overfitting, data imbalance, ResNet, gradient vanish, self-attention, multi-head attention, transformer decoder, batch norm, CNN kernel design, …
- C++:polymorphism, virtual function, smart pointers, template, move semantics, some modern C++ features
- Others:os (multi-threading, race condition, memory allocation), linear algebra, 3D geometry
System Design
面試官會給你個情境,很可能是公司會遇到的問題,主要就是一起討論出個solution。常見的是討論ML end-to-end pipeline,比方在廠房中監控貨物運輸過程要怎麼判斷貨物受損,基本上就是典型的 anomaly detection (如果大多數情況沒有受損) (from Kargo)。主要會討論 pipeline input/output,data format and pre-processing, model architecture, loss function, evaluation metrics,比較吃你對 application 方面的理解。
心得
- 心態方面:近幾年 new grad 缺少了很多,對 new grad 的標準也提高很多,在自駕車領域更是如此,甚至蠻多自駕公司只招 senior 以上,競爭不免會更激烈。在美國找工作基本上實力佔第二,大環境佔主要部分,環境夠好,猴子都能找到好工作;環境太差,你面的再好,公司都能找到比你更好的人選。基本上心態要調整好,不要把機會 all in 在某幾家公司,或是想著要早點上岸。收到拒信不見得是你面的不好,被拒的理由千百種,心態調整好、即時 move on 比較重要。
- 投履歷方面:從上面可以看出我大部分拿到的面試都還是海投居多,內推固然有他的效用,但效用多大不得而知,試想大多數人都透過內推申請,那內推基本上也沒辦法讓你脫穎而出,把履歷寫得好看點比較重要。有時間可以找內推,但不要因為找內推拖到投職缺的時間,寧願早點海投也不要花太多時間問內推,有些缺甚至收到一定數量的履歷就會關缺。
- 準備面試方面:多mock,善用一畝三分地找面經,剩下各憑本事和聽天命了。