- 1
- 0
- 约5.94千字
- 约 8页
- 2026-07-21 发布于河北
- 举报
网易游戏引擎开发(雷火/互娱)面试真题+口语化详解答案(校招/初级社招)
模块一:C++底层基础(必问,一面占比35%)
1、讲讲C++11/17引擎常用特性,你在引擎代码里用过哪些?
参考答案(口述版):自研引擎日常高频用的不是花活语法,全是适配内存、性能、线程安全的特性,我项目里主要用这几个:
1)智能指针:不用auto_ptr,引擎统一用unique_ptr独占资源、shared_ptr做跨模块资源持有,weak_ptr解决循环引用;自研资源池里基本禁用shared_ptr,因为原子引用计数会有CPU缓存开销,高频创建销毁会卡帧;
2)移动语义右值引用:引擎大量纹理、模型二进制资源结构体很大,用std::move避免大块内存拷贝,资源加载模块全靠这个减少内存拷贝耗时;
3)constexpr编译期常量:把Shader宏、引擎固定配置、碰撞层掩码写成constexpr,直接编译期求值,省去运行期计算开销;
4)emplace_back:容器存组件、资源句柄时,直接原地构造对象,比push_back少一次拷贝构造;
5)结构化绑定C++17:读取渲染管线结构体、帧数据结构体,代码更简洁,管线配置解析代码大量使用。
面试官追问:shared_ptr线程安全吗?引擎里为什么尽量少用?
答:引用计数原子线程安全,对象读写非线程安全;引擎主线程+渲染多线程场景,shared_ptr加减
原创力文档

文档评论(0)