回复: 9
收起左侧

今天的英伟达面试

本楼:   👍  2
100%
0%
0   👎
全局:   2
100%
0%
0

2025(1-3月) 码农类General 硕士 全职@NVIDIA - 网上海投 - 视频面试  | 😐 Neutral 😐 AverageOther | 应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

岗位:Software Engineer, Virtualization - New College Grad


面试我的是个德国人,人挺好的
上来面试官先自我介绍了下,然后轮到我介绍自己的项目
我讲了下我操作系统相关的经历。讲完后他会问一些相关的问题
简历部分就这样结束


面试官准备了两道题目
第一题:秒了
问:一个多线程的16核心处理器,这些核心都会去访问一个handler。该handler的调用非常频繁,你可以假设他一分钟至少会被调用1m次以上。现在我们想要去统计每个核心分别都运行了多少次handler。于是代码变成如下:int counter[16];
void handler() {
        /* do something */
        counter[CURRENT_CORE]++;
}
在应用该修改以后,运行速度变慢了很多。这是为什么?
答:由于counter这个数据结构全部在同一个cache line里面,而每个核心都有它自己的cache,每次有不同的核心去访问这个数据的时候cache都会需要同步(flush)。频繁的缓存同步导致性能下降严重
问:怎么修改代码避免这个问题
答:把每个核心的cache都放到不同的cache line里面。假设cache line是64byte的话就让他们的内存地址隔开至少这么多(代码就自己想吧哈哈)


第二题:慢慢写写出来的
问:写个scheduling算法。task有四个priority,且可能处于block或ready状态。有个reschedule函数返回最早会被运行的task。如果有同样priority的task的话,优先运行先来的task(fifo)
代码如下。#include <linux/list.h>

#define NUM_PRIO 4

/* ready/blocked */
struct task;

static struct task *current = NULL;

struct task *task_create(int prio);

/* if blocked -> ready */
void task_notify(struct task *);
/* if ready -> blocked */
void task_wait(struct task *);

/* -> current = current task */
/* list_next(head[0]) -> head */
/* 0 - lowest; 3 - highest */
void reschedule();

// [0] -> [A]
// [3] -> [B]

// []
// task_notify(A), task_notify(B); reschedule() -> current=A
// task_notify(B), task_notify(A); reschedule() -> current=B

// A(ready), B(ready); current = A
//   task_wait(A); reschedule() -> current = B
//   task_notify(A); reschedule() -> current = B



代码部分就这样结束


最后面试官和我说我是第一个他面试过的new grad


希望对你们有帮助!

评分

参与人数 3大米 +7 收起 理由
yxie1971 + 1 给你点个赞!
crazybadboy + 1 欢迎分享你知道的情况,会给更多积分奖励!
清道神君 + 5 欢迎分享你知道的情况,会给更多大米奖励!

查看全部评分


上一篇:Fortinet 温哥华全套分享
下一篇:paypal intern vo
地里匿名用户
匿名用户-KC5SW  2025-1-16 09:25:18
本楼:   👍  0
0%
0%
0   👎
多线程,楼主很牛
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   0
0%
0%
0
感谢分享,请问这是第一轮phone screen吗
扫码关注一亩三分地求职移民公众号
更多干货内容等你发现
回复

使用道具 举报

 楼主| Loriland 2025-1-16 11:52:42 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   2
100%
0%
0
微信用户_3fa47fe 发表于 2025-01-15 19:00:07
感谢分享,请问这是第一轮phone screen吗
这是第一轮视频面试
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   0
0%
0%
0
Loriland 发表于 2025-01-15 19:52:42
这是第一轮视频面试
所以已经到vo阶段了吗还是,楼主之前有单独跟hm面试吗?非常感谢解答
回复

使用道具 举报

地里匿名用户
匿名用户-NKSSB  2025-1-17 08:45:48
本楼:   👍  0
0%
0%
0   👎
请问下楼主,是怎么学会这些多线程的知识的然后可以面试中回答这样的问题?
回复

使用道具 举报

iwlam525 2025-1-20 03:34:06 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   195
98%
2%
4
第一个的follow up为啥答案不是绑核?
回复

使用道具 举报

 楼主| Loriland 2025-1-28 14:15:47 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   2
100%
0%
0
iwlam525 发表于 2025-01-19 11:34:06
第一个的follow up为啥答案不是绑核?
因为本来的代码没有性能问题,加了这个数据记录才变慢,所以是false sharing
回复

使用道具 举报

 楼主| Loriland 2025-1-28 14:16:15 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   2
100%
0%
0
微信用户_3fa47fe 发表于 2025-01-15 20:09:21
所以已经到vo阶段了吗还是,楼主之前有单独跟hm面试吗?非常感谢解答
没有单独面试,第一轮上来就是vo
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   0
0%
0%
0
Loriland 发表于 2025-01-27 22:16:15
没有单独面试,第一轮上来就是vo
感谢楼主解答!请问楼主有进行后续的面试吗,大概流程是否可以分享下,马上也要面一个nv的ng岗位,可惜地里信息太少,再次感谢楼主!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

Advertisement
>
快速回复 返回顶部 返回列表