1. 基础语法与语言特性
- C++ 中指针、引用、数组的区别与使用场景?
- 指针:可为空,可随时指向其他对象,使用
*解引用,需手动管理生命周期。 - 引用:必须绑定对象,不能更换绑定对象,使用方式与普通变量一致,更安全。
- 数组:本质为连续内存,数组名可衍生为指向首元素的指针。
- 指针:可为空,可随时指向其他对象,使用
- 解释
virtual、override、final、const的作用与用法。 - 什么是 RAII?它如何帮助资源管理?
- 简述
std::move和std::forward的区别及使用场景。
2. 性能与内存优化
2.1 游戏中出现卡顿的定位与优化
- 主线程阻塞(I/O、资源加载)。
- GC/内存碎片化。
- 大量对象更新。
- 不合理的 Tick 顺序。
2.2 如何实现一个内存池?适合用在哪些场景?
目的:减少频繁 new/delete 的开销与碎片。
- 维护一个连续的大内存数组。
- 使用空闲链表连接空闲块。
- 分配时从链表取块,释放时归还链表。
2.3 其他问题
- 请实现一个简单的对象池(Object Pool)模板类。
- 请说说 cache-friendly 编码风格的一些例子。