0%

本文仅总结面试中遇到的高频/对实际开发有启发性意义的问题

C++

  1. 虚函数实现原理
    1. 析构函数声明为虚函数的原因
    2. 分析构造函数中能否调用虚函数,并与C#中类似的情况对比
      1. 虚表指针初始化时机
  2. 对象的内存布局
    1. 派生类指针转换为基类指针时,所指向地址的变化
    2. 菱形继承
  3. 右值引用
  4. 智能指针
  5. unordered_map的实现
    1. 对于较大规模的数据,优化哈希表的方法
  6. vector的实现
    1. 扩容实现原理
      1. 扩容因子的选择

C#

  1. 装箱拆箱
    1. 如何避免装箱拆箱
  2. GC
    1. 标记清除算法中,标记的机制
    2. 分代算法
  3. 委托与事件

Unity

  1. MonoBehaviour的生命周期
    1. FixedUpdate的机制
      1. 整个程序卡住,FixedUpdate还能否正常调用?
  2. 协程
    1. 使用协程而非多线程的原因
    2. 协程实现机制
  3. editor中的坐标系
    1. 左手系
    2. 欧拉角

图形学

PS:由于本人是图形学新手,所以面试官问的都比较简单

  1. 点乘叉乘
    1. 如何判断两条线段是否相交?
    2. 为什么二维空间下的叉乘结果是标量?
    3. 如何判断一个点是否在三角形内?
  2. 绘制三角形
    1. 描线法(不知道是不是叫这个名字)
    2. 重心坐标法
      1. 在自己实现的软渲染器中,如何利用点相对于三角形的重心坐标求其uv坐标、光照?

其他

  1. 寻路算法
    1. Astar
    2. 分层寻路
  2. 状态同步与帧同步
    1. 区别、优缺点
    2. moba、mmo分别用什么同步方式?

本人受《人工智能导论》课程作业的启发,尝试使用遗传算法求解旅行商问题,并在本文将过程中遇到的问题和受到的启发记录下来。
后续会将本次实践的所有文件上传github


阅读全文 »