NVIDIA 的實習招聘從來不「輕」——即便是 SWE Intern,也常被拉去做 CUDA 入門題、C++ 記憶體模型題、甚至 DL 框架數值題。社群裡有一種誤解:「實習面 = 簡化版 full-time 面」,這在 NVIDIA 不成立。NVIDIA 把實習當作直轉 full-time 的預篩選,Hiring Bar 幾乎和正職一致。
這篇文章把一位通過 NVIDIA SWE Intern Final 的同學的 5 輪 VO 真題完整還原,從 Recruiter 到 Hiring Manager 逐輪給出真題、解法骨架與考察重點。讀完你會知道每一輪該花多少時間在演算法 / 專案 / 行為題,以及哪些題目是「看似演算法實則系統」的偽裝題。
五輪總覽:時間軸 + 題型 + 通過率
| 輪次 | 時長 | 題型 | 通過率 |
|---|---|---|---|
| Round 0:Recruiter Screen | 30 min | 行為 + 專案 + Why NVIDIA | 70% |
| Round 1:Tech Phone | 60 min | CUDA 入門 + C++ 中等 | 50% |
| Round 2:Onsite 1 | 60 min | C++ 記憶體模型 | 60% |
| Round 3:Onsite 2 | 60 min | DL / 數值題 | 60% |
| Round 4:Onsite 3 | 60 min | 系統題 + 履歷深挖 | 65% |
| Round 5:Hiring Manager | 45 min | 行為 + 團隊匹配 | 80% |
累積通過率:70% × 50% × 60% × 60% × 65% × 80% ≈ 6.5%。1/15 的轉化率。
Round 0:Recruiter Screen 真實問答
問題 1(5 分鐘):"Walk me through your resume."
回答骨架:用倒序時間軸,3 個專案,每個 1 分鐘:
- 最近的研究專案:CUDA 優化或 DL 系統經驗
- 一個開源貢獻:PyTorch / TensorFlow / cuBLAS
- 一個 hackathon / 課程專案:體現工程交付能力
問題 2(10 分鐘):"Tell me about a project you're most proud of."
關鍵考察點:你能否用 Why / What / How / Result 四步把專案講清楚。
- Why:為什麼這個問題值得做
- What:具體範圍
- How:技術選型 + tradeoff
- Result:可量化指標(kernel 加速 5x / pass rate 提升 30%)
問題 3(5 分鐘):"Why NVIDIA?"
避免空話。具體引用:
- 你用過的 NVIDIA 產品:CUDA / cuDNN / TensorRT / Omniverse
- 你想加入的具體團隊:DL Frameworks / Driver / Compiler
- 一個具體的 NVIDIA 論文或部落格
Round 1:Tech Phone 真題
真題:實作 GPU-friendly 的 prefix sum (scan)
給一個 float 陣列,實作平行前綴和(exclusive scan)。先寫 CPU 版,再口頭描述 GPU 版。
CPU 版:
def exclusive_scan(arr):
out = [0] * len(arr)
s = 0
for i, x in enumerate(arr):
out[i] = s
s += x
return out
GPU 版口頭思路(關鍵考點):
- upsweep:樹形向上 reduce,O(log N) 步
- downsweep:把 root 設為 0,向下傳播
- bank conflict 優化:shared memory 加 padding 避免衝突
陷阱:面試官會追問「如果陣列超過 1 個 block 怎麼辦」——答案是分級 scan:先 block 內 scan,每個 block 總和再做一次全域 scan,最後回寫。
Round 2:C++ 記憶體模型真題
真題:實作一個 atomic shared_ptr
不能用
std::shared_ptr<T>自帶的std::atomic_*函式,要求自己實作一個支援多執行緒讀寫的AtomicSharedPtr。
核心考點:
- 引用計數的記憶體序
- ABA 問題(多執行緒同時 swap)
- 銷毀時機
簡化版骨架:
template <typename T>
class AtomicSharedPtr {
public:
void store(std::shared_ptr<T> p) {
std::atomic_store(&ptr_, p);
}
std::shared_ptr<T> load() const {
return std::atomic_load(&ptr_);
}
private:
std::shared_ptr<T> ptr_;
};
追問:面試官會要求你用 std::atomic<std::shared_ptr<T>>(C++20)替換上面的實作,並討論與裸指標 + ref count 手寫版的效能差異。
Round 3:DL / 數值題真題
真題:實作一個 stable softmax + 反向傳播
import math
def softmax_forward(xs):
m = max(xs)
exps = [math.exp(x - m) for x in xs]
s = sum(exps)
return [e / s for e in exps]
def softmax_backward(probs, dy):
n = len(probs)
dx = [0.0] * n
for i in range(n):
for j in range(n):
if i == j:
dx[i] += dy[j] * probs[i] * (1 - probs[i])
else:
dx[i] += dy[j] * (-probs[i] * probs[j])
return dx
面試官追問:
- 反向能否 O(n)?答案:合併 cross-entropy 後是 O(n)
- fp16 下怎麼避免 underflow?答案:用 fp32 累加,再 cast 回去
- batch 維度怎麼平行?答案:每個 sample 獨立計算
Round 4:系統題 + 履歷深挖
真題:設計一個 GPU 記憶體池
要求:
- 支援 alloc / free,配置粒度按 256 bytes
- 多執行緒安全
- 碎片率低
回答骨架(P-S-T-F 模型:Pool / Strategy / Threading / Fragmentation):
- Pool:每個 size class 一個 free list,size class 按 2 的冪或 slab
- Strategy:alloc 走 first-fit 或 best-fit;free 時 coalesce
- Threading:每個 thread 一個 thread-local cache(類似 tcmalloc),全域池作為 fallback
- Fragmentation:定期做 defrag,或用 buddy system 自然合併
履歷深挖:面試官會隨機抽你履歷上一個專案,問「如果讓你重做一遍,會改什麼」——這是觀察你的 self-reflection 能力。
Round 5:Hiring Manager
行為題套餐
5-6 個行為問題,每個 5 分鐘:
- "Tell me about a time you disagreed with your manager."
- "Tell me about a time you failed."
- "How do you prioritize when everything is urgent?"
- "Walk me through a debugging story you're proud of."
- "What kind of team / mentor are you looking for?"
STAR 模板:Situation / Task / Action / Result,每個故事 4 句話內說完。
反向問題
至少準備 3 個:
- "What does success look like for an intern in the first 3 months on your team?"
- "How does the team balance research vs production work?"
- "What's the team's biggest technical challenge right now?"
FAQ
Q1:實習 VO 真的和 full-time 一樣難嗎? 演算法題難度 略低(更多 medium,少 hard),但廣度 一致——CUDA / C++ / 系統題都會問。
Q2:沒有 CUDA 經驗能過 Tech Phone 嗎? 能,但需要在 phone 之前至少寫過 reduce / scan / matmul 三個 kernel 並理解。否則會被秒掛。
Q3:Onsite 是遠端還是 onsite? 絕大多數 Intern Onsite 是遠端(Zoom + CoderPad)。如果是 PhD 實習,可能要求到 Santa Clara onsite。
Q4:Hiring Manager 這一輪真的有 80% 通過率嗎? 前提是前 4 輪都拿到 lean hire 以上。HM 主要看 team match,技術問題已經在前面驗證過了。
Q5:從面試到收到 offer 多久? 平均 4-6 週。最快 2 週 是因為 HM 急招,最慢 8-10 週 是因為 visa / budget 審批。
正在準備 NVIDIA 實習 VO?
如果你想做 CUDA 入門題逐題 walkthrough、Hiring Manager 反向問題打磨,或希望面試日有真人 VO代面 / VO輔助 全程陪跑,可以聊聊看完整的 OA代面 / VO輔助 方案。
聯絡方式
需要面試真題與客製備戰計畫?立刻聯絡微信 Coding0201,獲取真題。
Email: [email protected] Telegram: @OAVOProxy