摩尔线程 graphic架构师 一面

社招哈,发现牛客上都是校招的小伙伴多,但是其他的职场平台感觉学习氛围不够浓厚,所以还是分享到牛客上。

个人感觉对于一两年工作经验的同学来说,社招面试还是偏向八股和算法

面试官上来先介绍工作内容

  1. 了解GPU的渲染架构吗,IMR和TBDR?

不了解😭

  1. 那就说说你简历上的项目吧

说在公司做了HDR相关的,但是明显面试官不感兴趣

  1. 你项目中是如何用OpenGL减少渲染时间

说了一些减少draw call 之类的常见优化方案

  1. 那你说下一次draw call 的流程吧

  2. 光栅化渲染方面八股:光栅化流程

这里提到了深度测试,埋坑了

  1. early z优化

这里答的不好,把减少渲染的图元像素搞混了

  1. 图元和像素的关系?光栅化中图元和像素分别在什么阶段?

  2. 什么情况下不可以earlyz

  3. deferred render有了解过吗

  4. c++ 调用被c编译器编译过的函数 需要加什么,为什么

  5. c++ 析构函数:析构函数是虚函数怎么办

  6. c++ 虚函数如何实现的

  7. 纯虚函数有什么作用

  8. 浅拷贝的风险

  9. 除了深拷贝,还有其他方法可以解决浅拷贝的问题吗

  10. 说一下各个智能指针

  11. 为什么shared_ptr需要注意线程安全

  12. 说一下循环引用

  13. 用模板实现一个整数的阶乘,在编译的时候实现

考点是模版的展开和特化

  1. 构建一个单链表,函数输入单链表的头节点,输入n,删除倒数第n个节点,返回删除后的头节点

  2. 给你一个2^n边长的矩阵,其中矩阵排列如下图,现在给出元素的坐标xy和矩阵边长n,计算坐标对应处的编号

0 1 4 5
2 3 6 7
8 9 12 13
10 11 14 15

其实用递归写起来并不算难,但是我一开始没想到

面试官引导我使用硬件的思维,按位运算去实现

0 01 100 101
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);

已挂

#牛客创作赏金赛##你觉得哪一届的校招最难?##实习进度记录#
全部评论
好详细的面经呀,姐妹一生平安
点赞 回复 分享
发布于 05-13 15:46 上海

相关推荐

评论
3
4
分享

创作者周榜

更多
牛客网
牛客企业服务