腾云摘星UE客户端实习一面凉经

不清楚是不是秋招。HR直接加wx说要面试。猜测是我在鹅招聘官网投的,没关掉子公司推荐就被捞了。项目组是The Finals国服

全程55min

部分问题问的有点深而且连续性很强,所以括号里贴出我的一部分答案。没括号的就是不会的。

讲了一会实习产出,对面的评价是很标准的商业项目实现

如何实现一个生命周期与GameMode一致的子系统

【GameMode基类里面维护一个SubsystemCollection。初始化里用反射获取,结束阶段再释放掉】

学过强化学习吗?知道怎么用强化学习驱动AI吗?

说一下UE的反射

【说了一下类型系统的组成与意义,UHT的行为。

.gen.h中的内容:一些默认函数的声明或者警用。与蓝图交互用的Thunk处理。

.gen.cpp中的内容:一些默认函数的默认实现。类型对象、Outer和Package构造注册。静态全局结构体变量收集并初始化信息,例如该类的Outer和Package的构造函数的函数指针、用类型萃取判断该类是否为抽象类以及成员函数的数量等杂七杂八信息】

既然C++和蓝图之间的交互需要thunk,UE反射的Thunk具体做了什么。从蓝图调用C++函数,中间的具体步骤是什么

CDO的生成怎么实现的看过吗

UE的GC怎么做的

【GC和TryGC的区别、四种避免GC的标记位和如何写入根集,从根集出发标记可达对象。最后释放不可达对象】

大世界场景下GC怎么优化?【簇和新老生代】除了这些以外还有呢?

如何使得UObject不会被UE的GC影响到

【一是AddToRoot。二是使用UPROPERTY宏让UHT注意到。三是让其被UE管理的UObject引用,例如Actor其实就不需要考虑被误GC】

换成原生C++类呢?

【我没太懂他到底要问什么,按道理说根本就不会参与到GC里去。但他后来又说一般是挂在单例下管理】

UE的属性同步怎么做的

【客户端和服务器的Connection->ActorChannel负责给Actor同步->其中RepState的Changlist维护了一个环形数组存储历史值(这里提了一嘴RepLayout,但我觉得没必要细说)。服务端的NetDriver会Tick执行历史值和当前值的对比,不同就会触发同步】

既然是每帧对比历史值,大量Actor的同步怎么优化

【一是可以用PushModel,由程序员根据需要主动同步。二是用ReplicationGraph,自定义同步策略】

那它们各自的应用场景是?看过ReplicationGraph的实现吗?

我看你之前有个小Demo用的还是原生的DS架构,但是和动画有关的网络同步,如果用DS架构都向服务器请求的话会受网络影响,这种情况该怎么办。

【用预测回滚】

用预测回滚的话,服务器和客户端还是会受网络影响出现延迟,会导致动画卡顿或者瞬间播放的问题。

【虚幻竞技场之前实现过一个延迟补偿机制】

用延迟补偿是吧,说一下。

【我的理解是在PlayerController和Character的运动方面添加对应的修正参数,例如允许的误差值、某一运动参数的历史缓存,使用这些参数来让一些判定更容易或者更难达成,进而缓解因为网络波动带来的表现问题】

那如果你来优化,你怎么做?

反问评价:没达到他们这个岗位应该有的技术认知

#面试问题记录#
全部评论
好难
点赞 回复 分享
发布于 08-27 14:51 美国
我测,问这么难?感觉像初级社招一样
点赞 回复 分享
发布于 08-25 16:43 广东
太恐怖了
点赞 回复 分享
发布于 08-24 20:15 上海
下次会赢的
点赞 回复 分享
发布于 08-24 09:06 浙江
man,怎么还在问强化学习的啊
点赞 回复 分享
发布于 08-24 02:54 浙江
怎么感觉都没问计基,全是UE八股
点赞 回复 分享
发布于 08-23 23:45 湖北
我去,问的好难
点赞 回复 分享
发布于 08-23 19:27 广东
好深啊,一个实习怎么感觉跟招资深一样
点赞 回复 分享
发布于 08-23 14:39 浙江
点赞 回复 分享
发布于 08-23 12:44 湖南

相关推荐

部门负责业务不错,挺感兴趣的。感觉聊的还可以,  希望能过  , 求求了。【面试问题】1. 你报的这个方向是主动选择的还是系统分配的?2. 简单介绍一下相关经历?3. 你对xxx了解程度如何?4. 请用简短语言介绍 xxx的核心原理及其局限性。9. 你做的 xxx项目是实验性质还是更完整的工程实践?10. 你简历中哪个项目属于较完整、非学习性质的?12. 你平时开发环境主要使用什么操作系统?13. 你使用 GDB 或 VS Code 调试时,能否查看所有线程的栈?14. 如果 C/C++ 程序出现内存泄漏,你通常如何定位?15. C++ 里是否有类似 Go 的 goroutine/coroutine 机制?16. C++20 coroutine 的实现原理是什么?17. 为什么需要 coroutine 而不是直接使用线程?18. TCP 协议为何被称为“可靠数据传输”?请列举其核心机制。19. 既然可以重传,为什么 TCP 还需要“窗口”机制?这个被问住了。手撕两道题:1.  给两个文件系统路径, 找最长公共路径前缀。2. 多线程输出1,2,3,4, 输出到4个文件。文件1:1234。。。文件2:2341。。。文件3:3412。。。文件4:4123。。。21. 你期望的工作地点是哪里?22. 你目前是否正在实习?23. 你是否已拿到其他 offer?24. 你对xxx方向的兴趣程度如何?期待能过
查看20道真题和解析
点赞 评论 收藏
分享
评论
5
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务