乐易网络
一面二面
乐信圣文面经
帧同步和状态同步区别 帧同步只同步玩家输入指令,所有客户端运行相同的确定性逻辑,保证相同输入产生相同结果,适合RTS、MOBA类游戏;状态同步则直接同步游戏对象的状态数据(如位置、血量等),服务器作为权威来源,客户端主要负责表现,适合MMORPG、FPS等游戏。两者核心区别在于同步的内容不同:帧同步同步”操作”,状态同步同步”结果”。 帧同步注意事项及不同步原因 帧同步必须保证所有客户端逻辑代码完全一致,使用定点数避免浮点精度问题,统一随机数种子,避免使用本地时间。不同步原因包括:浮点数计算精度差异、随机数未同步种子、逻辑代码版本不一致、网络丢包导致指令丢失、多线程执行顺序差异等,在实际项目中经常遇到因浮点数运算或时间戳使用不当导致的同步问题。 预测、插值与校正实现方式 客户端预测先在本地执行操作并显示结果,服务器验证后发送权威状态;插值通过平滑过渡 between 历史状态来消除网络抖动,保持画面流畅;校正当客户端预测与服务器状态不一致时,以服务器数据为准进行位置修正,并通过插值平滑过渡到正确状态,避免瞬间跳跃。 逻辑层与表现层分离原因 分离逻辑层和表现层主要为了确保游戏逻辑的...
乐信圣文笔试题
乐信圣文5进制的1023转换为10进制是多少?转换为7进制是多少?计算过程: 1023(5) => 15^3 + 0 + 25^1 + 3*5^0 = 125+10+3= 138(10) 138(10) => 138/7= 19…5 19/7 = 2….5 2/7=0…..2 255(7) = 51+57+2*49= 40+98= 138(10) 答:5进制的1023转换为10进制是138。转换为7进制是255。 比较四种排序算法的时间复杂度,空间复杂度,稳定性,适用场景(插入,快排,归并,堆排) 排序算法 时间复杂度(平均) 时间复杂度(最坏) 空间复杂度 稳定性 插入排序 O(n²) O(n²) O(1) 稳定 快速排序 O(nlogn) O(n²) O (logn)(递归栈) 不稳定 归并排序 O(nlogn) O(nlogn) O (n)(辅助数组) 稳定 堆排序 O(nlogn) O(nlogn...
个人简历准备
自我介绍面试官您好!我叫Sarf,是武汉工程大学软件工程专业 2026 届应届毕业生,主攻 Unity 客户端开发方向。 在校期间,我系统掌握了 C# 语言与面向对象编程,深入熟悉 Unity 引擎的核心模块,包括对象生命周期管理、组件系统、资源加载与性能优化等关键技术。 在实践中,我独立主导过两个 Unity 项目:一个是 2D 类银河恶魔城动作 RPG,实现了角色控制、战斗系统和资源热更新;另一个是移动端休闲跳跃游戏,负责了无限关卡生成和性能调优。 专业技能方面点乘:a⋅b=∣a∣∣b∣cosθ(判断2个向量是否同方向(大于0为同方向, = 0为垂直),Unity中可以判断物体是否在前方) 叉乘:a×b=∣a∣∣b∣sinθ⋅n,可以用来判断点是否在三角形内(分别3条边与顶点到该点的向量 进行判断,3个结果都相同在三角形内) 1.熟悉使用 C# ,理解协程、接口、委托/事件等核心特性 ,具备面向对象编程能力事件和委托 对于C#委托和事件,委托是一种类型安全的方法引用,允许程序将方法当作数据进行存储和传递。通过委托程序可以在运行时决定调用...
UGUI面试学习
1.Canvas三种渲染模式:ScreenSpace - Overlay,ScreenSpace - Camera,WorldSpace。每种渲染模式针对不同的场景及应用 ScreenSpace - Overlay:直接贴在屏幕的最上面,不会因为相机的移动或者变换而变化,常用来制作游戏中背包和血条面板。 ScreenSpace - Camera:UI同样贴在平面上,但是会受到相机来渲染。也就是会受到相机距离来影响,但是需要指定一个 Camera,UI 会根据摄像机来显示,可以控制 UI 与摄像机的距离、排序、层级 WorldSpace:UI 变成 3D 世界里的 “平面物体”,随相机视角变化,用于场景内的 UI。这时候 Canvas 不再是“贴屏幕”,而是像一块广告牌、显示器、按钮面板一样,真的放进 3D 世界中。Canvas 有真实的位置、旋转、缩放,会受场景透视影响,可以被别的 3D 物体遮挡,玩家走近看会变大,走远看会变小 Overlay模式并不与空间上排序有任何关系,空间上的前后位置不再对元素起作用,它常用在纯UI的区域内,这种模式下Camera排序有别与其他模式,Sor...
tap4fun面试
Tap4Fun一面1.实习的主要负责的模块是什么我主要负责的是: 卡牌逻辑相关模块(洗牌、发牌规则校验) UI 交互逻辑优化 性能优化(对象池、GC优化、资源加载) 整体偏功能开发 + 优化。 2.客户端的人员分配客户端 3 人: 主程:架构 + 核心系统 一名开发:主要功能模块 我:版本迭代 + UI + 优化 3.实习主要负责UI逻辑吗不是只做 UI,我的工作是以客户端逻辑为主,其中一部分是 UI 交互逻辑,同时也参与了功能开发和性能优化。 4.用的什么UI框架主要使用 Unity 自带的 UGUI,同时项目中有简单的 UI 管理框架,用于统一管理界面生命周期。 5.在Unity进行点击的时候如何响应到C#逻辑层的通过 Button 组件的 onClick 事件绑定 C# 方法来实现。 底层是 Unity 的事件系统(EventSystem)处理输入,再分发到 UI 组件。 6.如何进行UI响应的是,通过挂载还是代码的绑定Inspector 拖拽绑定 代码 AddListener 7.两者的优缺点拖拽方式: ✔ 简单直观 ❌ 不利于维护,容易丢引用 代码绑定: ✔ 可...
peropero面试
基础差(主要是拷打八股文)1.协程原理以及底层实现Unity协程核心本质都是迭代器 + 状态调度。 总结:Unity 协程的底层本质上就是“迭代器 + 状态机调度”机制。它依赖 C# 的 IEnumerator 接口和 yield return 语法实现,当我们通过 StartCoroutine() 开启一个协程时,Unity 并不会创建新线程,而是把这个协程注册到主线程的调度系统中执行。编译器会把带有 yield return 的协程函数自动转换成一个状态机类,这个类会保存协程执行时的上下文信息,比如当前执行到哪一步、局部变量的值以及当前等待条件等。当协程运行到 yield return 时,会先暂停当前执行,并把等待信息返回给 Unity;之后 Unity 在合适的时机继续调用这个迭代器的 MoveNext() 方法,使协程从上一次暂停的位置继续往下执行,直到函数执行结束或再次遇到新的 yield return。因此,协程本质上仍然是在主线程中分段执行的函数,它能够把逻辑拆分到多个帧里完成,但不能真正解决耗时计算造成的主线程阻塞问题。 2. 调度器的 “心跳” 作用协程不会自...
Lua面试学习
1.Table表基本原理: 在lua中不存在字典,列表等数据类型,同时也不存在class与struct等数据类型,所有的这些类型都是基于Table表实现的。 lua是关联性数据结构,可以使用任意类型的值来表示索引,但不可以是nil lua是不固定大小的数据结构,可以自动进行扩容 如果在table中允许nil存在,他是会占一个索引位 {}相对于匿名table,如果判断一个table是否为nil,不能直接进行与{}比较,因为相对于2个table,而非空。if next(data) == nil then end进行判断 12345678910111213141516171819202122--数组(如果使用Table表来实现数组,默认索引是从1开始的,但是可以指定元素索引。并且lua中的数组中元素类型可以不相同)--在lua中的#是取出数组长度,但是遇见nil会直接停止,不会获取后序的元素local Mytable = {1,3,"av",1.2,true}Mytable["123"] = "123...