当前位置: 华文问答 > 职场

如何能够去英伟达( Nvidia )公司做实习生?

2013-04-03职场

大厂不仅提供较高的薪资水平和优厚的福利待遇,还有较好的职业发展平台和国际化的工作环境。如果进入的是微软、谷歌、亚马逊这样的互联网巨头,那我们接触的就会是最前沿的技术。最近一位同学同时拿下了微软和英伟达这两家业界当红炸子鸡的Offer,最后学员选择去了英伟达。以下是他第一视角的战报:

国际惯例,先说个人背景:

USC本硕CS,硕士刚入学报名的23夏季保Offer学员,目前手上拿到了微软和英伟达的offer,最后权衡之下选择了更有潜力的英伟达。保offer是一个全流程的班,包括项目补充+算法+简历+面试辅导+mock interview+以及谈薪技巧等,最后Justin老师还特地给我讲了该怎么礼貌地拒绝offer而不得罪人,真是送佛送到西了。

(已经成功在英伟达报道!)

据说今年Justin老师保offer班要爆了,而且我之前还漏看了老师的朋友圈招生信息,这个CS大环境想想心里就慌得一批,感觉自己已经凉了。和家人沟通之后,我们决定大出血6万刀 (T^T) 让Justin老师和我1v1辅导,所以我其实上的是一个特制版的保Offer,也感谢USC大神学姐Cindy给的referral

先总结一下我面试过的两家大厂基本的面试流程,流程上还是非常接近的( 经过助教提醒,好像老师之前写过这方面的科普 )。首先是简历筛选,简历中突出自己的项目经验和实习经历非常重要。例如,在大学期间我参与了多个开源项目,并在一家国内某BAT互联网公司实习过,这些经历都为我的简历增色不少。如果没有做过项目也没有互联网公司实习怎么办?

大家可以参考老师这个帖子关于无实习的解决方案:

简历通过后是在线笔试,一般会考算法、编程。之后就是电话初面,主要考察沟通能力和基础知识掌握情况,简单聊聊简历上的项目。之后就是重头戏,技术面试,通常会有两到三轮,每轮持续一小时左右。面试内容包括算法和数据结构、系统设计、编程能力等。面试官会给出一些现场编程题,要求在限定时间内完成,或者给出解题思路。期间还会考察对行业的理解和技术趋势的敏感度,以及沟通力、领导力和团队管理能力等。最后一关就是部门大boss经理面试,主要评估候选人的职业素养、团队合作能力和职业发展意向,通常会问一些BQ问题。下面为大家逐一讲解我面试通过的两个大厂:微软和英伟达。

微软

我参加微软的面试总共有6面。除了HM终面没有算法题,前五面都有算法题。面试中主要以项目经历和算法题为主,几乎没有八股文,考察知识点也会结合实际应用场景,算法题难度中等,写代码之前会先讨论,如果思路不是最佳,面试官会引导我。技术面重要的是解题思路、编码速度、代码风格和异常输入的处理,当然还有解题思维和沟通能力也很重要。

Phone Screen,首先英文自我介绍,然后HR问了我简历上的相关项目,会根据我所做的工作评估在系统整体中发挥的作用。问了一个string相关的题,具体记不清了,难度较简单。一面问了我做过的项目细节。项目在每一轮都会问, 所以简历上的项目要能自圆其说 ,而且要注意用英文的用词和表达。做了一个算法题,合并两个有序链表,用迭代方法写完的。然后follow up问我递归怎么写。最后问了一个假如一个服务,突然访问量增加,如何设计可以解决这个。

二面到四面是同一天面试的,每轮面试官基本上都是以后组里的同事。每一面都是自我介绍+项目+算法+系统设计,算法一般1-2题,然后follow up,这里建议大家多刷精刷LeetCode,虽然出原题的概率很小,但是可以通过做题锻炼思维。刷题过程中总结规律,举一反三。关注LeetCode讨论区,高赞的做法和讨论。每周竞赛尽量参加,考验我们在限时压力下做出题目的能力,很大程度上模拟了面试场景。我记得问到的算法题有有序数组二分法搜索、删除排序链表中的重复元素、二叉树等。

我考的系统设计题是设计一个在线文档协作系统。其中涉及到了系统概述、用户接口、数据存储、并发控制、性能优化、可扩展性、安全性、容错和恢复等。面试官还给了我很多提示。

最后一面是HM面,介绍了自己最具挑战性的项目。基本上是经典的BQ问题。如何处理同事或上级意见不合等。

英伟达

面的是深度学习算法相关岗位。NV对coding能力要求挺高的 ,需要短时间bug free写出来 。面试6轮,1hr电话面试,4技术面,1BQ面。电话面试先英文自我介绍,然后介绍项目,问了我项目经历的细节。在线共享文档做了比特位操作的算法题,用O(1)时间复杂度实现阶乘。问了深度学习相关经验。

第一轮免了比特位操作相关算法题,问了我之前的项目经验。第二轮讲项目经验,sift特征要点,cuda编程基础,cuda基础知识。内存结构(比如各级内存的特点,shared memory使用技巧,如何定位和避免bank conflict,解释local memory),线程模型(比如grid block尺寸如何确定,SM如何调度线程执行,线程如何处理条件分支,有哪些同步操作,等等)。第三轮面试,项目经验,C++ lambda。第四轮C++关键字用法,二叉树算法题。最后一轮是行为面试,由HR和团队负责人主持,主要评估软技能和团队适应性。

问题包括:描述一次你在团队中解决冲突的经历。你如何处理高压力和紧迫的项目?你如何不断提升自己的技能和知识?