游戏引擎/图形 一点面经分享
前言
在牛客上看了很多面经,因此想回馈一下社区。尤其是iphelf大佬的总结,非常全面,我是看了他的帖子之后才开始认真准备面试的。
投的很少,而且可能遇到的大部分都是比较常见的知识(不清楚答案的话,知乎上应该都能搜到),但还是希望有所帮助。
免责声明:仅知识总结,不涉及面试中的具体问题。不会出现任何与要求保密的面试相关的题目或内容。
C++
- 数据结构:vector扩容;map底层,一般不涉及红黑树细节
- 多态:重载、重写、重定义;虚函数的实现
- 构造函数和析构函数:能否为虚函数;顺序:基类、成员、派生类
- move和右值
- 智能指针
计组和操作系统
- 从源代码到可执行文件的全过程
- 函数调用的底层原理,如calling convention
- 进程和线程的各种经典八股,例如两者的区别,以及如何同步
图形学
渲染
- 光栅化管线,以及一点点对于几何着色器的了解
- 光线追踪的实现:重要性采样;BVH的实现,对比八叉树的优缺点
- Render Path:前向和延迟的区别以及各自优缺点;如何处理多光源,知道forward+和cluster就最好了
- 半透明物体的渲染
- 抗锯齿:MSAA的实现;TAA的实现,如何减少残影
- Draw Call剔除算法:PVS,八叉树,occlusion query, Hi-Z
- 阴影:shadow acne的处理,CSM
- 环境光照:IBL的split sum
纹理和材质
- Mipmap,以及各向异性采样
- 纹理压缩的方法
- PBR:对Cook-Torrance的理解;为什么要用PBR
学习资源推荐
C++
- 强烈推荐effective modern C++,有一定基础就可以看
- 之后可以参考各种面经去深入思考,善用cppreference
图形学
- GAMES 101,把作业框架从零实现一遍是很有意义的
- 渲染方向的引擎需要GAMES 202和104;不过后者学习路线有点陡峭,可以作为一个目录,自己去找资料学
- 知乎
计组、操作系统等
- 《游戏引擎架构》第一章(基础)
- 《程序员的自我修养:链接、装载与库》