英伟达 SDE VO第一轮面经分享
BQ:
1. 说说你在GPU或并行计算方面的项目经验。
2. 当你需要优化一个CUDA内核时,通常会从哪些方面入手?
3. 描述一个你在资源受限的嵌入式环境中解决性能瓶颈的经历。
Coding:
第一题:时钟指针夹角计算
给定一个时间字符串(如"3:45"),计算时针和分针之间的最小夹角。
思路:这道题关键在于理解钟表指针的运动规律,先分别算出两个指针从12点方向开始的偏移角度,然后相减取绝对值。如果结果大于180度,就用360度减去它,得到的就是最小夹角。
第二题:多线程顺序打印
题目要求是设计一个多线程程序,让三个线程按顺序循环打印数字,比如线程A打1,线程B打2,线程C打3,然后线程A再打4...
思路:这是经典的线程同步问题,选择用信号量(Semaphore)来实现,先为每个线程创建专属的信号量,初始化时只让第一个线程可以执行, 然后每个线程完成后触发下一个线程的信号量,最后用锁保证计数器的原子性操作, 这样就能确保严格的执行顺序,避免竞态条件。
Follow-up:
1. 如果时钟要支持毫秒级精度,算法该如何调整?
2. 在多线程方案中,如果某个线程异常退出,如何保证整个系统不卡死?
1. 说说你在GPU或并行计算方面的项目经验。
2. 当你需要优化一个CUDA内核时,通常会从哪些方面入手?
3. 描述一个你在资源受限的嵌入式环境中解决性能瓶颈的经历。
Coding:
第一题:时钟指针夹角计算
给定一个时间字符串(如"3:45"),计算时针和分针之间的最小夹角。
思路:这道题关键在于理解钟表指针的运动规律,先分别算出两个指针从12点方向开始的偏移角度,然后相减取绝对值。如果结果大于180度,就用360度减去它,得到的就是最小夹角。
第二题:多线程顺序打印
题目要求是设计一个多线程程序,让三个线程按顺序循环打印数字,比如线程A打1,线程B打2,线程C打3,然后线程A再打4...
思路:这是经典的线程同步问题,选择用信号量(Semaphore)来实现,先为每个线程创建专属的信号量,初始化时只让第一个线程可以执行, 然后每个线程完成后触发下一个线程的信号量,最后用锁保证计数器的原子性操作, 这样就能确保严格的执行顺序,避免竞态条件。
Follow-up:
1. 如果时钟要支持毫秒级精度,算法该如何调整?
2. 在多线程方案中,如果某个线程异常退出,如何保证整个系统不卡死?
全部评论
相关推荐
10-17 10:34
上海大学 算法工程师
双尔:秋招至此我拿到了三个offer,这几天拿到了秋招最快的一个offer。我之前一直陷在纠结里,感觉像站在分岔路口,不知道往哪走才对。
最终在美团饿了么和京东里面选了美团,毕竟是外卖的老大哥,虽然会比较累,但是一切都是值得的,不说了,我的外卖衣服头盔到了 点赞 评论 收藏
分享
查看5道真题和解析