1. 基础语法与语言特性

  1. C++ 中指针、引用、数组的区别与使用场景?
    • 指针:可为空,可随时指向其他对象,使用 * 解引用,需手动管理生命周期。
    • 引用:必须绑定对象,不能更换绑定对象,使用方式与普通变量一致,更安全。
    • 数组:本质为连续内存,数组名可衍生为指向首元素的指针。
  2. 解释 virtualoverridefinalconst 的作用与用法。
  3. 什么是 RAII?它如何帮助资源管理?
  4. 简述 std::movestd::forward 的区别及使用场景。

2. 性能与内存优化

2.1 游戏中出现卡顿的定位与优化

  • 主线程阻塞(I/O、资源加载)。
  • GC/内存碎片化。
  • 大量对象更新。
  • 不合理的 Tick 顺序。

2.2 如何实现一个内存池?适合用在哪些场景?

目的:减少频繁 new/delete 的开销与碎片。

  • 维护一个连续的大内存数组。
  • 使用空闲链表连接空闲块。
  • 分配时从链表取块,释放时归还链表。

2.3 其他问题

  1. 请实现一个简单的对象池(Object Pool)模板类。
  2. 请说说 cache-friendly 编码风格的一些例子。