本文仅总结面试中遇到的高频/对实际开发有启发性意义的问题
C++
- 虚函数实现原理
- 析构函数声明为虚函数的原因
- 分析构造函数中能否调用虚函数,并与C#中类似的情况对比
- 虚表指针初始化时机
- 对象的内存布局
- 派生类指针转换为基类指针时,所指向地址的变化
- 菱形继承
- 右值引用
- 智能指针
unordered_map
的实现- 对于较大规模的数据,优化哈希表的方法
vector
的实现- 扩容实现原理
- 扩容因子的选择
- 扩容实现原理
C#
- 装箱拆箱
- 如何避免装箱拆箱
- GC
- 标记清除算法中,标记的机制
- 分代算法
- 委托与事件
Unity
- MonoBehaviour的生命周期
- FixedUpdate的机制
- 整个程序卡住,FixedUpdate还能否正常调用?
- FixedUpdate的机制
- 协程
- 使用协程而非多线程的原因
- 协程实现机制
- editor中的坐标系
- 左手系
- 欧拉角
图形学
PS:由于本人是图形学新手,所以面试官问的都比较简单
- 点乘叉乘
- 如何判断两条线段是否相交?
- 为什么二维空间下的叉乘结果是标量?
- 如何判断一个点是否在三角形内?
- 绘制三角形
- 描线法(不知道是不是叫这个名字)
- 重心坐标法
- 在自己实现的软渲染器中,如何利用点相对于三角形的重心坐标求其uv坐标、光照?
其他
- 寻路算法
- Astar
- 分层寻路
- 状态同步与帧同步
- 区别、优缺点
- moba、mmo分别用什么同步方式?