腾讯光子游戏客户端 面经
bg: 两段实习, 暑期是在天美一个Unity项目做的性能优化工具相关的内容, 做了Shader变体优化, 加载相关内容, 改了一些引擎源码
前四次面试内容挺重复的, 第五面是制作人面, 制作人也是技术出身, 问的问题挺有意思的; 我挑一些典型的, 问了很多次的出来
常规内容, 游戏引擎
- 实习做的内容
- demo转为联网如何去做
- 骨骼动画的原理
- 蒙皮的原理
- 动画重定向
- mesh存的哪些东西
- 渲染一个物体的过程
- 模板测试和alpha测试
- VS和FS是干嘛的
- 不透明物体和透明物体渲染顺序
- 阴影怎么实现
- 贴图大小计算
- 世界坐标到屏幕坐标
- MipMap
- 过大贴图放到小分辨率上面会发生什么
- Drawcall是什么, 合批, 图集
- 静态合批和动态合批
- mesh合批规则
- 判断点在平面内
--------------------
- Unity粒子系统流程
- 如何找一个资源占用的内存
- UE Gameplay概念 (看InsideUE系列即可)
- ECS概念
- UE GAS (自己项目用Unity里面做了个仿照GAS的, 参考了GitHub的一个开源项目)
- 技能释放流程, 如何配置Ability, Effect
- buff过滤, 阻挡怎么做
- 实习项目是沿用王者的东西, 所以问了技能框架怎么做的, 帧同步怎么做的
- UI框架, UI操作流程
- Unity Shader Trunk知道吗 (还真不知道, 项目里面用的是2022的一个新feature)
- Shader变体优化思路
- Shader加载流程
- Memory profiler相关, 引擎侧如何计算内存
- UE PSO概念
- Unity生命周期, 物理, 渲染在何时执行
- 行为树节点
- 寻路算法, A*
- NavMesh怎么做的
网络
- TCP三次握手
- 网络同步, 帧同步 状态同步
- 如何解决回滚拉扯
- DS了解过吗, UE几种C/S模式的不同
- 如何在Unity中实现一套代码的DS
- RPC调用过程
- 复制发生了什么, 哪些需要复制
C++/C#/OS
- 虚函数, 虚表, 虚表放在哪里, 可以修改虚表吗
- 虚函数inline
- 构造函数有哪些
- move, 移动构造, 左值右值
- 完美转发, 萃取, 特化, 偏特化
- 构造, 析构原理
- 智能指针
- 迭代器失效, const引用
- 装箱与拆箱
- c++有哪些常用锁, 线程安全怎么做
- 什么是原子操作, 原理是什么
- C#反射怎么做的
- 协程与线程的区别
- foreach原理
- 大端小端
然后是一些有意思的问题, 这些都只能答个大概, 答得不算好
- 究极手和物理系统如何配合
- 攀爬碰撞体性能问题
- World Streaming
还有些个人问题, 典中典环节
- 为什么不读研
- 为什么不转正
- 为什么一直用Unity (沟槽的Unity, 确实得学UE)
- 能提前实习吗