【春秋招必看】Unity相关笔试面试题(内有完整答案)第十期

欢迎来到光光的奇妙冒险,我是你们的煎饼光子老师。

今天是我们的第十期试题总结。


C#部分:

1、内存中,堆和栈的区别是什么?

答案:
堆和栈是操作系统堆进程占用的内存空间的两种管理方式

栈:由操作系统自动分配释放,存放函数的参数值,局部变量值,栈中数据的生命周期随着函数的执行完成而结束

堆:一般由程序员分配释放,如果开发人员不释放,程序结束时由操作系统回收
(在C#中 托管堆内存 会由 C#帮助我们管理,存在GC垃圾回收机制)

更多更全面的堆栈区别讲解:
https://blog.csdn.net/K346K346/article/details/80849966/

2、TCP协议和UDP协议的区别

答案:
连接方面:TCP面向连接,UDP无连接
是否可靠:TCP可靠(无差错、不丢失、不重复、按顺序),UDP不可靠
传输效率:TCP相对UDP较低
连接对象:TCP一对一,UDP n对n

3、TCP协议的可靠性是如何达到的?

答案:
TCP协议是通过 检验和、确认应答信号、重发机制、连接管理、流量控制、拥塞控制等手段达到可靠的

具体的一些理论知识,可以浏览该文章
http://www.360doc.com/content/22/1111/20/78411425_1055522293.shtml

4、内存抖动指什么?如何避免内存抖动

答案:
内存抖动指短时间内有大量的对象被创建或者被回收的现象
频繁的内存抖动会造成 GC 频繁运行,造成卡顿

避免方式:
对象池
享元模式

5、buff 系统中,如何用一个 byte,记录多种buff状态标识

答案:
一个byte,有8位,我们可以让每一位代表一种状态,0代表无,1代表有

byte buffType = 0;

0000 0000
0000 0001  中毒 buff
0000 0010  灼烧 buff
0000 0100  恢复 buff

当状态添加时,进行 或 ( | ) 运算
buffType | 灼烧 buff = 0000 0010
buffType | 中毒 buff = 0000 0011

当状态移除时,进行 异或 ( ^ ) 运算
buffType 0000 0011
buffType ^ 中毒 buff = 0000 0011 ^ 0000 0001 = 0000 0010


Unity部分:

1、Unity中使用的是左手还是右手坐标系?我们需要注意什么?

答案:
左手坐标系
在进行向量相关计算时,要注意左手和右手坐标系的区别

2、Unity中鼠标、键盘、触屏、手柄等输入事件会在Update 之前、还是之后、还是同时执行?

答案:
之前,具体可以查看生命周期函数的那张图片

3、Unity中场景中一个处于激活状态的物体(场景上只有这一个物体),不能被摄像机渲染出来,可能有几种情况?(至少说出3种可能的情况)

答案:
1.在摄像机可视范围外(视口范围外)
2.在摄像机可视范围外(远近裁剪面之外范围)
3.物体的层级不能被摄像机渲染
4.该物体使用了透明材质,处于透明状态
5.该物体使用了单面渲染材质,摄像机看到的是该物体的背面
6.如果存在多摄像机,摄像机深度可能会影响
等等

4、Unity制作物理游戏相关功能时,我们采用哪种方式处理位移?为什么?

答案:
通过刚体相关API来处理位移,比如加力、改变刚体速度变量
原因:在碰撞检测时能更准确无误

5、Unity热更新解决方案中,Lua和ILRuntime方案的本质是什么?

答案:
Lua热更本质:
Lua是解释型语言,不需要实现编译,在运行时动态解释执行。xLua和toLua等Lua热更新解决方案,是通过在Unity中内置Lua虚拟机(解释器)来执行Lua逻辑的

ILruntime热更本质:
ILRuntime通过读取DLL文件中的IL汇编码,通过在Unity中内置的IL解释执行虚拟机(解释器)来执行热更DLL中的代码

总体来说,他们都是在Unity中内置各自的解释器(写好的用于解释执行相关的代码)来执行我们的热更新代码

### 回答1: Unity是一款广泛使用的游戏开发引擎。它提供了可视化的编辑器界面、底层的渲染引擎以及广泛支持的插件生态系统,使得开发者可以很方便地进行游戏开发。 如果你准备参加Unity面试笔试,你需要掌握以下方面的知识: 1. 编程语言Unity支持C#和JavaScript语言。你需要掌握其中一种或两种编程语言,并且能够熟练应用它们。 2. 游戏设计:你需要具备游戏设计的基本知识,包括游戏流程、关卡设计、角色设计、游戏平衡等方面的知识。 3. Unity编辑器:你需要熟练掌握Unity编辑器的各种工具,例如场景编辑、组件列表、资源管理等。 4. 物理引擎:Unity包含了物理引擎,你需要熟悉它的基本概念,例如重力、力、碰撞等。 5. 动画系统:游戏中的角色动画是非常重要的一部分,你需要熟悉Unity的动画系统,包括动画控制器、状态机等。 总之,如果你想要在Unity领域取得成功,你需要在以上方面进行深入学习和掌握。如果你能够在面试笔试中展现出你的知识和技能,相信你会很快获得工作机会。 ### 回答2: Unity是当前市面上非常流行的游戏引擎,而从事Unity开发的人才需求也越来越大。在面试笔试中,可能会涉及到Unity相关知识和技能。下面将从Unity的四个方面进行简单介绍:游戏物体、组件、Scene和Asset以及C#语言。 1. 游戏物体 在Unity中,物体(GameObject)是游戏场景中的核心对象。而每一个场景都是由若干个物体组成,物体又是由若干个组件(Component)组成的。因此,需要了解游戏物体的各种操作和属性设置,包括名称、激活状态、位置、旋转、缩放、父子关系等。 2. 组件 组件是Unity中最常用的一种对象,也是游戏物体的一个基本组成部分。它可以改变游戏物体的行为、外观和互动方式。在Unity中,可以通过添加或删除组件来更改游戏物体的属性和行为。例如,常用的组件包括:Animator、Rigidbody、Collider等。 3. Scene和Asset Scene(场景)是Unity的一个概念,是由多个游戏物体和它们的组件组成的。在进行游戏开发时,需要了解如何创建、导入和导出Scene。而Asset(资源)则是指Unity中的各种资源文件,例如:纹理、音频、3D模型、动画等。需要了解如何使用Asset Store、如何导入和设置Asset等。 4. C#语言 Unity使用C#语言作为主要的编程语言。因此,在进行Unity开发时,需要了解一些基本的C#语言语法和编程思想,包括:变量、方法、类、继承、多态、接口、委托等。此外,还需要了解一些Unity特有的API和对象模型,例如:GameObject、Component、Transform、Input、Physics等。 总体来说,对于Unity面试笔试,需要具备扎实的Unity框架和常用组件的运用能力,同时还能够掌握C#语言的基本知识。只有掌握了这些核心技能,才能在Unity开发中不断提升自己,并为团队和项目创造出更多价值。 ### 回答3: Unity 是一款非常流行的游戏开发引擎,其在市场上占有非常重要的地位,因此很多人选择学习和使用 Unity。如何通过 Unity面试笔试题来测试候选人的实际技能以及对 Unity 开发的理解和掌握程度呢? 对于 Unity面试笔试题,一般会涉及以下几个方面: 1. 编程语言和算法基础 Unity 开发主要使用 C# 语言,因此需要候选人具备扎实的 C# 基础和算法基础,包括数据结构、算法思想、设计模式等方面的知识。 2. Unity 引擎和 API 掌握程度 作为 Unity 开发者,需要掌握很多 Unity 引擎和 API 的知识,比如场景管理、游戏物体与组件、UI 界面开发、动画系统、物理引擎等。针对这些方面,笔试题目可能会让候选人通过代码实现相关功能或者回答相关问题。 3. 项目经验和实践能力 除了理论知识,实际项目经验和实践能力也非常重要。因此,笔试题目可能会涉及到一些实际场景的开发问题,比如优化性能、解决 bug、协作开发等方面。 总之,Unity 面试笔试题主要考察候选人的编程能力、Unity 引擎和 API 掌握程度以及项目实践能力。同时,需要候选人具备良好的沟通能力和团队合作精神,这对于实际开发非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值