摩尔线程 graphic架构师 一面
社招哈,发现牛客上都是校招的小伙伴多,但是其他的职场平台感觉学习氛围不够浓厚,所以还是分享到牛客上。
个人感觉对于一两年工作经验的同学来说,社招面试还是偏向八股和算法
面试官上来先介绍工作内容
- 了解GPU的渲染架构吗,IMR和TBDR?
不了解😭
- 那就说说你简历上的项目吧
说在公司做了HDR相关的,但是明显面试官不感兴趣
- 你项目中是如何用OpenGL减少渲染时间
说了一些减少draw call 之类的常见优化方案
-
那你说下一次draw call 的流程吧
-
光栅化渲染方面八股:光栅化流程
这里提到了深度测试,埋坑了
- early z优化
这里答的不好,把减少渲染的图元像素搞混了
-
图元和像素的关系?光栅化中图元和像素分别在什么阶段?
-
什么情况下不可以earlyz
-
deferred render有了解过吗
-
c++ 调用被c编译器编译过的函数 需要加什么,为什么
-
c++ 析构函数:析构函数是虚函数怎么办
-
c++ 虚函数如何实现的
-
纯虚函数有什么作用
-
浅拷贝的风险
-
除了深拷贝,还有其他方法可以解决浅拷贝的问题吗
-
说一下各个智能指针
-
为什么shared_ptr需要注意线程安全
-
说一下循环引用
-
用模板实现一个整数的阶乘,在编译的时候实现
考点是模版的展开和特化
-
构建一个单链表,函数输入单链表的头节点,输入n,删除倒数第n个节点,返回删除后的头节点
-
给你一个2^n边长的矩阵,其中矩阵排列如下图,现在给出元素的坐标xy和矩阵边长n,计算坐标对应处的编号
2 | 3 | 6 | 7 |
8 | 9 | 12 | 13 |
10 | 11 | 14 | 15 |
其实用递归写起来并不算难,但是我一开始没想到
面试官引导我使用硬件的思维,按位运算去实现
10 | 11 | 110 | 111 |
1000 | 1001 | 12 | 13 |
1010 | 1011 | 14 | 15 |
都转换成二进制其实就很显而易见了
(x=2, y=3):
- x =
10
- y =
11
y1 x1 y0 x0 = 1 1 1 0
→ 14
对于block为2的情况
blockId = ((y >> 1) << 1) | (x >> 1); offsetId = ((y & 1) << 1) | (x & 1);
已挂
#牛客创作赏金赛##你觉得哪一届的校招最难?##实习进度记录#