无题
可以,我直接按一线UE客户端面试(偏底层/架构)强度来问你。不会问表面API,而是看你是否理解引擎运行机制。
你同样可以一题一题答,我会逐步追问。
第一组:UE核心架构(必问)
1️⃣ Actor 生命周期(高频必杀题)
你讲清楚一个 Actor 从创建到销毁的完整流程:
- 构造函数什么时候调用?(和Spawn的关系)
PostInitProperties/PostInitializeComponents/BeginPlay区别?Tick是怎么被调度的?Destroy之后会立刻销毁吗?
👉 面试官想听的是:调用顺序 + 引擎机制,不是函数名罗列
2️⃣ UObject vs Actor(本质区别)
- UObject 为什么不能直接放到世界里?
- Actor 比 UObject 多了什么能力?
- Component 为什么必须挂在 Actor 上?
👉 如果你答成“一个是基础类一个是实体类”,基本不过
3️⃣ 反射系统(UE最核心之一)
讲一下 UE 反射系统:
UCLASS / UPROPERTY / UFUNCTION本质做了什么?.generated.h是怎么来的?- 反射数据在运行时存在哪里?
👉 这一题直接区分“会用UE”和“懂UE”
第二组:组件与模块化(中级)
4️⃣ ActorComponent 机制
- Component 是怎么被注册的?
RegisterComponent()做了什么?- TickComponent 是怎么进入调度的?
5️⃣ Subsystem(UE5常问)
- GameInstanceSubsystem / WorldSubsystem 区别?
- 生命周期分别是什么?
- 为什么不用单例而用 Subsystem?
第三组:内存与GC(高频深水区)
6️⃣ UE 的 GC 机制
- UE 是怎么做垃圾回收的?(引用计数吗?)
UPROPERTY为什么重要?- 什么情况下对象会被回收?
👉 这一题很多人会死在“说成引用计数”
7️⃣ 智能指针 vs UObject
TSharedPtr和 UObject 能一起用吗?- 为什么 UObject 不用 shared_ptr?
第四组:Tick与性能(实战向)
8️⃣ Tick 系统
- Tick 是怎么调度的?
- Tick Group 是干嘛的?
- 怎么减少 Tick 开销?
9️⃣ 多线程(加分题)
- UE 主线程做什么?
- 渲染线程是什么?
- Gameplay 能不能多线程?
第五组:进阶(拉开差距)
🔟 模块系统(Module)
- UE 模块是怎么加载的?
IMPLEMENT_MODULE做了什么?- 游戏启动流程大致是什么?
回答建议
你可以这样来:
👉 直接说:“我答第1题”
我会根据你回答继续往深里追(比如直接问源码级细节)
提醒你一个现实情况
如果你目标是“一线游戏公司”:
- 能答到 第3组(GC) → 中级稳
- 能答到 第4组(Tick + 性能) → 中高级
- 能答第5组 → 面试官会认真考虑你
开始吧:
👉 先答第1题:Actor 生命周期
好,这块我会按“UE客户端 + 脚本层架构”面试强度来问,重点不是Lua语法,而是:
👉 UnLua 如何嵌入 UE、如何做工程化、以及你是否真的在项目中用过
你可以一题一题答,我会继续深挖。
第一组:UnLua 基础原理(必问)
1️⃣ UnLua 是怎么工作的?
你讲清楚:
- UnLua 是怎么把 Lua 绑定到 UE 的?
- C++ 类是怎么暴露给 Lua 的?
- Lua 是怎么调用 UObject / Actor 方法的?
👉 至少要提到:反射 / 绑定 / 虚拟机交互
2️⃣ Lua 文件是怎么驱动 Actor 的?
比如你有一个 Actor:
1 | UCLASS() |
你用 UnLua:
- Lua 是怎么“接管”这个 Actor 的?
- 生命周期函数(BeginPlay / Tick)是怎么映射的?
👉 不要只说“写同名函数”,要说机制
第二组:架构设计(中级分水岭)
3️⃣ 为什么用 UnLua,而不是全 C++?
你需要讲清楚:
- 优点(至少3点)
- 缺点(至少2点)
- 适合放 Lua 的模块有哪些?
👉 这一题考的是“工程判断力”
4️⃣ C++ 和 Lua 怎么分层?
假设一个项目:
- 战斗系统
- UI系统
- 技能逻辑
你会怎么拆?
👉 如果你回答“UI用Lua,底层用C++”,这是初级答案
👉 我要听的是:边界 + 原则
第三组:性能与坑(高频)
5️⃣ UnLua 性能问题
- Lua 调用 C++ 开销大吗?
- 哪些地方会成为瓶颈?
- 如何优化?
👉 能说到“减少跨语言调用”才算入门
6️⃣ GC 与内存管理
- Lua 有 GC,UE 也有 GC → 会冲突吗?
- UObject 在 Lua 里怎么保证不被回收?
- 有没有遇到野指针 / dangling 的问题?
👉 这题非常关键(很多人不会)
第四组:进阶(拉开差距)
7️⃣ 热更新(Hotfix)
- UnLua 能不能热更新?
- 怎么做?
- 有什么限制?
8️⃣ 生命周期问题(真实项目坑)
比如:
- Actor 被销毁了,但 Lua 还持有引用怎么办?
- World 切换时 Lua 状态怎么处理?
👉 能答这题,基本就是“用过项目”的人
第五组:深水区(高阶)
9️⃣ 你了解 UnLua 的绑定方式吗?
- 是静态绑定还是动态绑定?
- 有没有用到模板 / 宏生成?
- 和 tolua++ / slua 的区别?
回答建议
👉 从第1题开始答(UnLua原理)
我会像面试官一样:
- 追问你源码层细节
- 帮你补成“中高级答案”
- 告诉你这题能不能过一线
提醒你一个关键点
很多人写了:
“熟悉UnLua”
但实际上只能回答:
- 写Lua脚本
- 调UE接口
👉 这种在一线面试里是直接挂的
开始吧:
👉 先答第1题:UnLua 是怎么工作的?
很好,这一块是UE面试里最容易拉开差距的部分(DS + 网络)。我会按“能否做多人项目核心逻辑”的标准来问。
你可以逐题回答,我会继续深挖你的薄弱点。
第一组:UE网络基础(必杀)
1️⃣ UE 网络模型(必须讲清)
你说一下 UE 是什么网络模型:
- 是 Client-Server 还是 P2P?
- Server 是权威的吗?
- Client 能不能修改状态?
👉 如果你没提到 Authority / AutonomousProxy / SimulatedProxy,这一题算没答好
2️⃣ Actor 同步机制
一个 Actor 在网络中是怎么同步的:
- 什么是 Replication?
bReplicates开了之后发生了什么?- 属性同步(UPROPERTY Replicated)是怎么走的?
👉 面试官要听:引擎在背后做了什么
3️⃣ RPC 机制
- Server / Client / NetMulticast 区别?
- RPC 是立即执行的吗?
- Reliable vs Unreliable 怎么选?
👉 很多人会答成“Server就是服务器调用”,这是不够的
第二组:移动同步(中级分水岭)
4️⃣ 角色移动同步(CharacterMovement)
这是超高频题:
- 为什么 Character 移动看起来很流畅?
- Client Prediction 是怎么做的?
- Server Correction 怎么处理?
👉 至少要讲:
- 输入上报
- 服务端重算
- 回滚 / 修正
5️⃣ 延迟与抖动处理
- 网络延迟会带来什么问题?
- 怎么减少“卡顿感”?
- 插值(Interpolation)和预测的区别?
第三组:技能同步(GAS/战斗系统核心)
6️⃣ 技能同步怎么做?
假设你用 GAS 或自己实现:
- 技能是在 Client 触发还是 Server?
- 如何防作弊?
- 如何保证表现流畅?
👉 这是你简历里的重点(GAS + 网络)
7️⃣ 命中判定(Hit Detection)
- 是客户端判定还是服务端判定?
- 延迟情况下怎么保证公平?
👉 能说到:
- Server Rewind / Lag Compensation → 加分
第四组:带宽与优化(中高级)
8️⃣ 网络性能优化
如果有 100 个玩家:
- 会有哪些瓶颈?
- 怎么减少带宽?
👉 至少要提到:
- NetCullDistance
- relevancy
- dormancy
9️⃣ 属性同步优化
- 所有变量都 Replicate 吗?
- 如何减少同步频率?
第五组:DS(Dedicated Server)
🔟 DS 架构理解
- DS 和 Listen Server 区别?
- 为什么生产环境用 DS?
- DS 不需要哪些东西?(很关键)
11️⃣ 无头服务器优化
- DS 上怎么做性能优化?
- 是否需要动画 / 渲染?
第六组:进阶(拉开差距)
12️⃣ 网络架构设计题
给你一个需求:
👉 设计一个“多人技能战斗系统”
你要考虑:
- 技能释放流程
- 同步策略
- 延迟处理
- 防作弊
回答方式建议
👉 从第1题开始(UE网络模型)
我会:
- 按一线面试强度追问
- 指出你答案的问题
- 帮你修成“能过面试”的版本
提醒你一个现实情况
如果你目标是一线厂:
- 只会 RPC + Replication → ❌ 不够
- 能讲移动预测 → ✔ 中级
- 能讲技能同步 + 延迟处理 → ✔✔ 中高级
- 能讲 Lag Compensation → ⭐ 强候选
开始吧:
👉 先答第1题:UE网络模型
好,这一轮我会按“GAS真实项目使用 + 一线面试深度”来问你。重点不在API,而在:
👉 你是否理解GAS设计、同步机制,以及是否真的做过战斗系统
我们直接进入高质量面试模式,你逐题回答,我会继续追问。
第一组:核心机制(必须扎实)
1️⃣ GAS整体架构
你完整讲一下 GAS 的核心组成:
- Ability 是干嘛的?
- GameplayEffect 是干嘛的?
- AttributeSet 的职责?
- GameplayTag 在系统中起什么作用?
👉 不要分开解释,要讲它们之间是怎么协作的
2️⃣ Ability 激活流程(高频)
一个技能从按键到生效:
- 输入是怎么触发 Ability 的?
TryActivateAbility之后发生了什么?ActivateAbility做了什么?- GE 是什么时候应用的?
👉 这一题要讲“流程链路”,不是函数说明
第二组:同步机制(分水岭)
3️⃣ GAS 网络同步
- Ability 是在哪执行?(Client / Server)
- Attribute 是怎么同步的?
- GameplayEffect 是怎么同步的?
👉 很关键:
👉 很多人会误以为“GE在同步”,这里容易挂
4️⃣ Prediction(高频难点)
- 什么是 Prediction?
- GAS 为什么要 Prediction?
- Prediction Key 是干嘛的?
👉 能讲到:
- 本地执行
- 服务端确认
- rollback / correction → 才算过关
第三组:实战设计(你简历重点)
5️⃣ 技能系统设计
你设计一个技能:
- 冷却怎么做?
- 消耗怎么做?
- Buff / Debuff 怎么做?
- 持续效果(DoT)怎么实现?
👉 要用 GAS 思维回答,不是传统逻辑
6️⃣ 技能打断(Interrupt)
- 用什么机制实现?(Tag / CancelAbility)
- 如何避免冲突?
- 如何控制优先级?
7️⃣ 动画结合(你简历写了)
重点问你:
- Ability 怎么驱动 Montage?
- 动画结束怎么通知 Ability?
- 如果动画被打断怎么办?
👉 这是你简历里的“风险点”,我会重点看
第四组:进阶(拉开差距)
8️⃣ AttributeSet 设计
- 多个 AttributeSet vs 一个?
- 属性依赖怎么处理?
- 怎么做伤害计算?
9️⃣ GameplayTag 使用策略
- Tag 是怎么组织的?
- 怎么避免冲突?
- 在技能系统中怎么用?
第五组:高阶(强候选)
🔟 GAS 性能问题
- GAS 开销大吗?
- 哪些地方最耗?
- 怎么优化?
11️⃣ 自定义扩展
- 有没有改过 GAS?
- 有没有封装过自己的 Ability 系统?
回答方式
👉 从第1题开始答:GAS整体架构
我会像真实面试一样:
- 追问细节
- 指出问题
- 帮你优化成“面试能过的答案”
提醒你一个关键点
你简历已经写了:
- GAS
- 网络同步
- 动画结合
👉 所以面试官一定会重点打你GAS
如果你:
- 只能讲概念 → ❌
- 能讲流程 → ✔
- 能讲同步 + 设计 → ✔✔
- 能讲预测 + 架构 → ⭐
开始:
👉 答第1题:GAS整体架构(一定要讲“协作关系”)
好,这一轮我按“UE客户端 + C++工程能力面试”来问。不会问八股文,而是:
👉 结合UE使用场景的C++能力(内存 / 设计 / 性能 / 实战)
你逐题回答,我会像面试官一样追问和纠正。
第一组:基础但必须扎实
1️⃣ 指针 vs 引用(UE语境)
- 指针和引用本质区别是什么?
- 为什么 UE 代码里大量用指针(UObject*)而不是引用?
- 什么时候你会用引用?
👉 如果你答不出“可空 / 重新绑定 / 语义表达”,这一题不过
2️⃣ 虚函数与多态(UE核心)
- 虚函数是怎么实现的?(vtable)
- override 在UE中常见在哪?
- 为什么 UE 里很多函数是 virtual?
👉 要结合:Actor / Component / Ability 等场景
3️⃣ new / delete vs UE对象
- UObject 能不能用 new 创建?
- 为什么必须用
NewObject/SpawnActor? - 如果你用 new 创建 UObject 会发生什么?
👉 这一题直接考你 UE 内存模型
第二组:内存与对象管理(高频)
4️⃣ RAII(资源管理)
- 什么是 RAII?
- UE 中哪些地方体现了 RAII 思想?
- 和 GC 有什么区别?
5️⃣ 智能指针(UE + 标准库)
unique_ptr / shared_ptr / weak_ptr区别?- UE 的
TSharedPtr / TWeakObjectPtr / TSoftObjectPtr区别? - UObject 为什么不用 shared_ptr?
👉 很容易被问炸
6️⃣ 内存问题(实战)
- 什么是野指针?
- 什么是悬空引用(dangling)?
- UE 中怎么避免?
第三组:性能与底层(中级分水岭)
7️⃣ 内存布局
1 | class A { |
- 这个类在内存中大概是什么样?
- vptr 在哪里?
8️⃣ inline / constexpr
- inline 是什么?真的会内联吗?
- constexpr 和 const 区别?
9️⃣ 拷贝与移动(现代C++)
- 什么是移动语义?
std::move做了什么?- UE 中什么时候需要避免拷贝?
第四组:多线程(加分项)
🔟 线程基础
- 什么是竞态条件(race condition)?
- mutex 是怎么解决的?
11️⃣ UE 多线程
- UE 中能不能随便开线程?
- GameThread 是什么?
- 子线程能不能操作 UObject?
👉 这题很关键
第五组:设计能力(高级)
12️⃣ 设计一个系统(重点)
设计一个简单系统:
👉 “技能系统(不依赖GAS)”
你需要考虑:
- 类结构怎么设计?
- 如何扩展?
- 如何避免耦合?
👉 这里看的是你“工程能力”,不是语法
第六组:进阶(拉开差距)
13️⃣ 模板(Template)
- 模板是怎么工作的?
- 编译期 vs 运行期区别?
14️⃣ UE 宏 vs C++ 模板
- UE 为什么大量用宏?
- 宏和模板的本质区别?
回答方式建议
👉 从第1题开始:指针 vs 引用(结合UE)
我会:
- 判断你是 初级 / 中级 / 高级
- 追问你薄弱点
- 帮你把答案修成“面试能过”的版本
给你一个现实建议
如果你目标是一线厂:
- 只会语法 → ❌
- 能结合UE讲 → ✔
- 能讲内存 + GC + 智能指针 → ✔✔
- 能讲设计 + 多线程 → ⭐
开始吧:
👉 先答第1题:指针 vs 引用(一定要结合UE讲)

