Nvidia 英伟达 US 面试经验(面经分享)成功拿到 Nvidia(美国)Offer 的面试经验分享

20次阅读
没有评论

成功上岸 Nvidia(US),这里分享一下我这次完整的面试经历,给正在准备英伟达或者类似公司面试的同学一个参考。

面试的第一轮是经理的电话面试。这一轮主要是围绕个人背景和基础能力展开。面试一开始会让我做一个比较完整的自我介绍,包括自己的专业背景、上过的核心课程,以及过往参与过的一些项目经历。随后会进入到 coding 相关的内容,既有对基础编程概念的提问,也会穿插具体的 coding 题目。最后,面试官会介绍他们组里目前正在做的工作方向,同时会问一些行为面试(BQ)相关的问题,整体节奏偏稳,但信息量不小。

第二轮是组内工程师的技术面试,一共三轮,形式是 on-site 风格的电话面试,整体强度明显上来了。这几轮面试以高密度的问答为主,覆盖的知识面比较广。过程中会涉及到容器和 DevOps 相关的知识,也会问到软件开发流程中各个阶段常用的工具。同时,面试官也很关注候选人对设计思想的理解,比如代码设计原则、命名规范等偏工程实践层面的内容。

在做题方面,整体会围绕编码能力展开,包含 C/C++ 语言基础、数据结构与算法,以及一定程度的 system design 设计题。准备过程中,我个人是从两个维度来准备的,一个是技术能力本身,另一个是通用的面试应对技巧。

Nvidia 对 coding 的考察重点主要集中在两个方向。第一个是 System Design,通常会让你设计一个类似 Uber 这样的平台型系统,考察你对整体系统架构、数据结构选择以及扩展性的理解。第二个是编程能力本身,Nvidia 非常看重候选人在 C、C++、Python 等语言上的基础功底,同时也会延伸到一些计算机底层相关的知识点,甚至会结合 Nvidia 自身开发的模型或业务场景来提问。

为了方便大家准备,我这边也整理了一份 Nvidia 常见考题的文档,如果有需要可以直接联系我们获取。

题目要求是:
Write an Efficient C Program to Reverse Bits of a Number

也就是说,实现一个高效的 C 程序,用来反转一个整数的二进制位。


C 语言示例代码

// C code to implement the approach
#include <stdio.h>

// Function to reverse bits of num
unsigned int reverseBits(unsigned int num)
{unsigned int NO_OF_BITS = sizeof(num) * 8;
    unsigned int reverse_num = 0;
    int i;

    for (i = 0; i < NO_OF_BITS; i++)
    {if ((num & (1 << i)))
            reverse_num |= 1 << ((NO_OF_BITS - 1) - i);
    }

    return reverse_num;
}

// Driver code
int main()
{
    unsigned int x = 2;
    printf("%u", reverseBits(x));
    getchar();}

面试中允许使用 C / C++ 等不同语言进行作答。Nvidia 在这类题目中并不只看结果是否正确,更关注候选人对位运算原理、循环边界以及代码严谨性的理解。

在具体的 coding 题目中,Nvidia 也会考察一些偏基础但要求实现非常严谨的题目。例如其中一道经典题是:用 C 语言实现一个高效的程序,用来反转一个整数的二进制位。这类题目看起来不复杂,但对位运算、边界处理以及代码严谨性要求都比较高。面试中也支持使用 C/C++ 等不同语言作答,重点不在语言本身,而在思路和实现质量。

整体来看,Nvidia 的面试非常强调基础扎实、对系统和底层原理有真实理解,同时也很看重候选人是否具备良好的工程思维,而不仅仅是刷题能力。

正文完
 0