NVIDIA软件工程师面试经验
1. 基本信息
- 公司信息:NVIDIA
- 面试日期:近期
- 面试职位:软件工程师 (具体职位链接暂缺)
2. 面试详情
面试过程的详细描述
本轮为技术电话面试,是整个招聘流程(电面/视频面 → 技术电话面 → 现场面)中的一环。
面试官信息:一位在NVIDIA工作了10年、拥有12年经验的工程师,来自IR优化团队,有印度口音。
面试环节:
- 相互介绍 (约5分钟):面试官介绍了其所在团队(IR optimization)的工作,双方进行了初步了解。
- 行为面试:
- In your employment experience, what suggestions have you proposed for your supervisor?
- Do you have any coding experience with assembly code?
- What is your most challenging project experience?
- 编程测试:
- Q1:给定一个数组,可以交换相邻元素,求通过交换后,能使
各元素值乘其下标之和达到最大的结果。 - Q2:给定一个字符解码值数组和一个字符串,可以任意重排字符串中的字符,求重排后,字符串中相邻字符解码值之差的绝对值总和的最小值。
- Q1:给定一个数组,可以交换相邻元素,求通过交换后,能使
解决方法
对于行为面试:针对项目经验、向主管提建议等问题,准备了具体的实例,并清晰地进行了阐述。
对于编程题 Q1:
- 核心思路:使用动态规划。
- 解决步骤:
- 定义状态
dp[i]为考虑前i个元素时能获得的最大和。 - 考虑每个元素可以被左移0次或1次(即与左侧相邻元素交换)。
- 状态转移时,枚举当前元素是否与左侧元素交换,比较交换与不交换两种情况的收益,从而更新状态。
- 确保在状态转移过程中,每个元素最多只被交换一次。
- 定义状态
对于编程题 Q2:
- 核心思路:利用排序最小化相邻差值之和。
- 解决步骤:
- 根据给定的字符串,将其中每个字符对应的解码值提取出来,组成一个数值数组。
- 将该数值数组进行升序排序。因为当数组有序时,相邻元素差的绝对值之和最小。
- 最后,直接计算排序后数组中所有相邻元素差的绝对值之和,即为所求的最小总和。
- 时间复杂度为 O(n log n),主要由排序操作决定。
面试流程
根据本次经验及公司通用流程,NVIDIA的面试主要分为以下环节:
- 初步电面/视频面
- 技术电话面试(本轮)
- 现场面试
和面试官沟通细节
- 本轮面试官:IR优化团队的资深工程师(在司10年)。
- 沟通情况:面试开头有友好的相互介绍。在编程环节,详细注释了代码,并向面试官清晰地解释了思路。面试官对解决方案表示满意。
面试结果反馈
- 最终结果:从面试过程看,本轮技术电话面试顺利通过。
- 个人总结与建议:
- 面试难度偏大,强度很高。
- 充分的准备是关键:通过模拟面试来熟悉流程和压力,提前详细准备代码的思路和注释,并对行为面试问题进行了演练,这些是顺利通过的重要因素。
原文链接
- 本文经验总结自小红书用户分享的面试经历,点击查看原文。
Jack
Radongas
Colton