# 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)