我走了两次 NVIDIA senior SWE loop:一次是 Santa Clara 的 networking infra 岗(2024,没 offer),一次是今年早些时候支持 DGX platform 的 distributed systems 岗(拿到 offer 并接受)。他们的 system design 轮次跟我在其他大厂准备的那套真的不一样。
先说结论:NVIDIA 不完全是 LeetCode 的地盘。system design 很重也很长。两次都是 onsite 里有两场独立的 design session,每场 60 分钟,每场不同面试官。第一次 loop 是一个 senior SWE 和一个 principal;第二次 loop 是两个 principal。这些都是 senior 级别、很看深度的人。
他们真正会追问的: 分布式存储,以及你在 GPU 集群规模下怎么 shard 数据。不是理论题。他们会问训练跑到一半节点掉线会怎样。 网络拓扑。NVIDIA 做网络硬件(InfiniBand、NVLink),所以面试官会拉你在带宽、延迟、拥塞控制方面的知识。我被问到设计 parameter server 和 all-reduce 训练架构的对比。区别要非常熟。 Failure modes。几乎每个 follow-up 都是「先坏的是哪儿,以及你怎么发现」。要有具体的 observability 方案,不要只说「加监控」。 Trade-offs,而不只是方案。他们会很用力地追问我为什么选某个一致性模型。答对不如能在压力下把理由讲圆。
我遇到的面试官专业到你随口糊弄会立刻露馅。有个 principal 甚至在我说到一半打断我,问「eventual consistency」在某个具体故障场景下到底意味着什么。挺快乐的。
对 senior / L5 这个级别,他们要的是端到端的 ownership:你设计它,你也会 debug 它,你还得懂成本。如果你来自那种 SWE 只写代码、SRE 管基础设施的公司,这个落差会显出来。
我推荐的准备:高层读一下 InfiniBand 和 NVLink 的白皮书,熟悉 ML 训练架构(data parallelism、model parallelism、pipeline parallelism),并且准备好在时间压力下从零画完整系统。
如果你正在准备,欢迎问具体细节。