面试过程中问题记录不太详细,而且各个厂之间也有重叠问题,所以最终面经整理直接按模块来回忆了。主要面了字节阿里百度中望广联达完美世界。
图形学
(个人的图形学基本就靠GAMES101这门课及learnopengl网站
基本渲染管线
顶点着色器坐标变换(XX空间、矩阵)
齐次空间作用、齐次位 向量和点
点乘叉乘意义
法线矩阵:当模型进行非等比收缩时,法线向量是模型矩阵的逆矩阵的转置
裁剪空间做了什么 正交透视的区别 视锥体定义参数
光栅化作用
深度测试过程、透明非透明物体渲染顺序
阴影图的生成 软阴影生成方法
抗锯齿方法(SSAA和MSAA区别)
MIPMAP实现、作用,如何选取合适的大小
各式贴图:法线贴图(法线空间、作用、纹理复用、纹理映射)位移贴图(实现,与凹凸区别)
HDR 色调映射 gamma校正
布林冯光照模型:环境光、漫反射、镜面反射(半角向量 优点)方程
PBR:微表面 能量守恒 BRDF 菲涅尔项 渲染方程 radiance/irradiance
延时渲染、离屏渲染
提高渲染效率的方法 如何保证稳定帧率
故障检测:花屏 撕裂 黑屏
opengl相关
glfw存在目的
上下文是什么
帧缓冲有什么 分别作用是什么
bufferdata作用
glfinish()glflush()区别
C++
数据类型(基本类型:整形浮点型字符型布尔型,复合类型:结构体联合体数组字符串)
static const
强制类型转换
模板声明与实现如何能不在同一个头文件
智能指针底层原理 什么时候构造什么时候释放 shared循环引用 weak不会增加引用计数
野指针及产生原因解决
多态 虚函数 类内存
局部变量的vector的堆栈存储形式
inline与普通函数区别 与宏区别
深拷贝浅拷贝(什么时候会发生浅拷贝,怎么实现深拷贝)
设计模式
知道哪些 用过哪些 应用场景 实现
数据结构与算法
STL的各种底层实现 时间负责度
Vector push_back 一万次时间复杂度
哈希表如何实现O(1) 哈希值
堆实现 优先队列
图 存储方式
排序 复杂度 logn如何得出的(1/2∧n)
LRU实现 (哈希➕双向链表)
vector做底层实现queue
数组模拟哈希找数组重复次数最多的小写字母
反转链表
k个一组链表反转
二维数组查找目标值
交换两个数字得到能得到的最大数字
目标值和的数组对
约瑟夫环
cv中值滤波实现
两矩形面积包围面积
多边形面积(叉乘
空间点到空间三角形的最近距离
判断射线过不过球体 优化方法
两空间直线距离
已知法线向量和入射向量求反射向量
操作系统(因为我说只自学了一点面试官没咋难为这个)
进程线程区别
进程通信(内存共享 通道 消息)
线程同步(多任务并发处理 按输出输出)
每个知识点要吃透,面试官会一层层问的,比如虚函数和智能指针这种非常高频的cpp必考问题
虚函数一般从多态入手,cpp多态通过什么实现,虚函数如何实现多态的,构造函数和析构函数能不能是虚函数为什么,虚表指针是什么时候产生的,虚函数表是怎么生成的,是和类绑定还是类实例,在编译器还是运行器,重载重写的区别,子类重写了虚函数会对虚函数表有什么影响,类实例的内存存储形式是什么样子的,final和override。现场读代码说结果。
智能指针有什么类型,有什么区别,shared_ptr怎么实现多指针指向同一个地址,引用计数如何保证不同类实例的指针之间共享同步,循环引用会在什么情况下产生,如何解决,解决原理,shared_ptr的代码实现(主要是构造、赋值和析构)。
全部评论
(3) 回帖