# 2025 新鮮人面試分享 (Synology, Nvidia, Qualcomm, 聯發科, Canonical)
## 背景
- **學歷**
- 四大電資學士,推甄同校電資碩士
- **實習經驗**
- 大三時於某小型外商公司實習一年,主要使用 Python 開發。
- **LeetCode 進度**
- Easy:60 題
- Medium:153 題
- Hard:24 題
- 總計:237 題
- **面試投遞**
- 每間公司看到適合的職缺就丟,大大小小也丟了3、40個職位
- **面試結果**
- 無聲卡:Meta、AMD、Dell、Amazon(內推)
- Refused:Synology、Nvidia
- Offer Get:聯發科、Qualcomm
- 本人婉拒:Appier、聯發科、Canonical(內推)
- **求職方向**
- 由於碩班研究與 Linux kernel 相關,不想碰 ML 方向
- 曾接觸過 compiler
- 大學實習主要使用 Python
- 因此投遞職缺聚焦於:
- Linux kernel / Embedded
- Compiler
- Python 開發
---
## 面試過程
### Nvidia - System Software Engineer, GPU Server Diag (New grad)
- **Online Assesment**
- 選擇與問答題
- 基礎程式邏輯與迴圈控制
- 資料結構操作(例如:串列反轉、節點合併)
- 運算式解析(前/中/後綴表達式評估)
- Big‑O 與優先級、結合性理論題
- 演算法題
- 顏色空間類別設計與參數驗證(Python 類別方法實作)
- 字串子操作最小化問題(C++ 刪除子串並最終長度最佳化)
- 子序列頻率平衡計算(C++ 大數取模運算)
- **結果**
- 最後一題來不及寫出來,一、兩個禮拜後感謝信
---
### Synology - Product Engineer, Linux Kernel
1. **第一輪(2 小時)**
- 自我介紹 + 核心概念問答(OS concurrency)
- C 語言鏈結串列增刪查改(double‑pointer)
- 中等難度樹結構走訪與棧/隊列操作
2. **第二輪(2 小時)**
- 自我介紹
- 進階樹演算法(層級遍歷、最深葉節點累加)
- 堆疊與最值結構實作
- **結果**
- 一個月後收到感謝信
- **心得**
- 回頭看這些題目並不算困難,但因為 Synology 是第一間面試的公司,加上當時 LeetCode 還沒刷熟也刷不夠多,面試過程中比較緊張,許多地方腦袋卡住
- 總體來說,Synology 的題目在我所有面試經驗中難度最高、問得最深入
---
### 聯發科 – Embedded / Linux Engineer
- **面試輪數:依 Team 而異(最少 3 輪)**
1. **第一輪**(實體面談、1個半小時):Team member與小主管面試,自我介紹 + 簡單OS概念
2. **第二輪**(實體面談、1個半小時):大主管面試,主要就自我介紹而已
3. **第三輪 (HR)**(線上面談、半個小時):行為面試問題
- **結果**
共面試三個embedded team
- Team 1(台北)
- 原本主管與我約面談,但後來發現我仍在處理免役事宜,主管需能立即到職,最終取消面談
- Team 2(台北)
- 一面主管提到月加班可能高達 40 小時,加上當時其他面試尚在進行中,且該職缺涉及硬體相關工作內容非我所好,於是提前婉拒該 Team offer,以便投入其他 Team 的面試
- Team 3(竹北)
- 面試官覺得怕我還需要另外找一天來二面,於是在面完一面後就把大主管call進來直接二面XD,結果大主管進來也沒問什麼問題就直接說OK,感覺起來是個很free的人哈哈哈,但由於得知這個team月加班時數也是要40個小時,因此最後跟HR婉拒接下來的面試流程
- **心得**
- **多 Team 招募優勢**:畢業前若有投遞到預聘/研替職缺,多 Team 同時開缺,一次就可面試多個 Team
- **單一職缺風險**:若僅投遞單一 Team,一旦進入面試流程,個人檔案將鎖定於該 Team,其他 Team 無法邀約面試,會導致延長整體流程時間並減少機會
- **投遞建議**:各 Team 自行開缺,不一定會同步更新於官方網站;JD年資要求亦可能被隨便填寫,因此看到有興趣的職缺就可以投投看,部分Team只在 LinkedIn 開放職缺,愈早投愈有利
- **兵役問題**:有些 Team 主管會希望先完成兵役再面試,但預聘/研替職缺通常不受此限制
---
### Qualcomm - GPU Compiler Engineer
- **面試輪數**
- 5 輪(不含HR關),4場中文面試、1場英文面試,每場45分鐘
- **面試內容**
- 自我介紹
- 演算法涵蓋Linklist、Graph、Tree,easy - medum Leetcode難度
- C++ container 時間複雜度與記憶體錯誤討論
- CPU vs. GPU 差異/GPU 架構與編譯優化概念
- 程式優化技巧
- **結果**:Offer Get
- **心得**
- 因為團隊成員跨國分布,有兩輪安排在台灣時間早上7點,因此在面試前兩天有調整作息、早上 6:00 起床刷 LeetCode 醒腦
- 其中一關涉及大量 C++ 進階用法與 LLVM/compiler optimizations,對我來說是最具挑戰的一關
---
### Canonical – Linux Kernel Engineer(內推) / Python Engineer
- **Assessment**
- **Written Interview**
- 2–3 頁 PDF 小作文,包含:
- 與職位相關技能與經驗
- 對 Canonical 的期待
- 高中、大學成績
- 自己做過的 project
- **Psychometric Assessment**
- Thomas GIA 智力測驗
- [範例題](https://applyre.com/resources/thomas-gia/gia/),建議先練習熟悉再去寫,速度跟準確度同樣重要
- **Technical Take‑Home**
- Linux Kernel Engineer
- Kernel module 開發與 backport,須1個禮拜內完成
- Python Engineer
- 單多選題(25 題)
- Python `unitest, class dunder method, PyPI, object, concurrency model, generators, collections`幾乎都有碰到一點
- 程式題2題,難度leetcode medium
- Python 語法與矩陣檢查程式
- 限時1個半小時,我寫的有點趕
- **線上技術面談**(若進入,後因 offer 已滿而取消)
- **結果**:婉拒後續面試邀請
- **心得**:Canonical 流程冗長Assessment都寫完才進到Technical interview(聽說後面還有至少4面),據說需 4 個月以上才能跑完整個流程
---
## 綜合心得
* **自我介紹準備**
* 準備一份簡潔的Google Slide,自我介紹內容涵蓋教育背景、實習與專案經驗,幾乎每一關面試都會用到。
* **LeetCode 刷題策略**
* 若投遞職缺方向與我類似,以 Linked List、Graph、Binary Tree 類型題目為主,難度集中在 Easy~Medium。
* Medium 題目掌握即可,重點是熟悉同一題的不同解法:BFS vs. DFS、遞迴 vs. 迴圈,並比較時間/空間複雜度。
* **核心技術與考古題**
* 精通 C / C++、Operating System 常見概念,並練習 Embedded 與 Linux Kernel 相關的面試題(參考社群或前輩提供的考古題)。
* **模擬面試**
* 若容易緊張,建議找朋友或前輩進行 mock interview,熟悉問答情境並減少現場壓力。
* **投遞時機**
* 建議**畢業前**就開始投遞履歷,就算可能會延畢也先丟(我自己延畢3個月,滿後悔沒有先丟),這樣比較好爭取到New Grad或預聘職缺,也能多選擇不同 team。
* **兵役規劃**
* 建議申請一般替代役(5–6 月申請)或研發替代役,這樣當替代役時可以順便刷題跟面試
* 若走免役路線,也要盡量**提前完成申請**(我個人花了5個多月才確定免役結果),以免延誤投遞/到職時程。
* **心態與時間規劃**
* 從開始找工作到最終拿到offer,一般平均需花費約 4 個月;且多家企業在面上後往往期望一個月內能到職,因此不必過度焦慮(我就是焦慮怪)。
## Reference
- [碩畢新鮮人 2024 年面試分享(群暉 Synology)](https://hackmd.io/@JJJJJJ/By_Ipn5y0)(此文寶藏很多)
- [新人豬屎屋排名](https://www.dcard.tw/f/tech_job/p/258718964)