U3D面试题总结(含答案)

1.【C#语言基础】请简述拆箱和装箱

答:

装箱操作:值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程。

1.在堆中开辟内存空间。

2.将值类型的数据复制到堆中。

3.返回堆中新分配对象的地址。

拆箱操作:object类型显示转换为值类型或从接口类型到实现该接口值类型的过程。

1.判断给定类型是否是装箱时的类型。

2.返回已装箱实例中属于原值类型字段的地址。

2.【C#】请简述ArrayList和List<>的主要区别。

答:ArrayList是非泛型列表,存储数据时把所有的数据都当成object类型存储,存在装箱问题,取出来使用的时候存在拆箱问

      题,装箱拆箱会使性能变差,而且存在数据安全问题,但是优点在于可以让值类型和引用类型互相转换。

     List是泛型列表,在使用的时候才去定义数据类型,泛型避免了拆箱装箱的问题,存入读取速度较快,类型也更安全。

3.【.NET(C#)】程序集的重要性。

 

答:程序集的一个重要特性是它们包含的元数据描述了对应代码中定义的类型和方法。

4.【.NET(C#)】new关键字用法。

答:1. new 运算符:用于创建对象和调用构造函数。

      2. new 修饰符:用于向基类成员隐藏继承成员。                                        

      3. new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。

5.【.NET(C#)】C#中,string str = null 与string str =“”,说明区别。

答:string str = "" 初始化对象分配空间。

      string str = null 表示一个空引用,没有占用空间。

6.【.NET(C#)】堆和栈的区别。

答: 栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。存放值类型。

       堆:一般由程序员分配释放。用new等分配内存函数分配得到的就是在堆上。存放引用类型。

7.【.NET(C#)】UDP和TCP的区别。

答:

TCP(Transmission Control Protocol)传输控制协议:一种面向连接的、可靠的、基于字节流的运输层通信协议,三次握手。

UDP(User Datagram Protocol)用户数据报协议:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点。缺点是易丢失数据包。

8.【.NET(C#)】System.String 和System.StringBuilder有什么区别?

答:1. System.String是不可变的字符串。

      2. System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。

      3. String类在执行字符串拼接的操作上,用“+”会产生新的对象,占用内存。

      4. StringBuilder类只是修改字符串的内容,不建立新的对象。

9.【.NET(C#)】向服务器发送请求有几种方式?

答:get,post。get方式提交的数据量有限制,理论上post没有限制,可传较大量的数据。

10.【动画】简述unity引擎Mecanim动画系统功能的优点。

答:1. 简单化对类人角色动画设计与功能实现的工作流程。

      2. Mecanim动画系统使用一个可视化编程工具来管理动画之间复杂的交互。     

      3. 对完成绑定骨骼的类人角色,能够对身体不同的地方使用不同的逻辑进行动画控制。

      4. 可以在角色动画播放过程中添加动画事件。

      5. 人形动画骨骼动画可重复使用。

11. 【动画】发现贴图、GC动画。

答:法线贴图:是一种特殊的纹理,可以应用在3D表面,让低模呈现出更明显的凹凸效果。一般应用在CG动画、美术效果要求

                      比较高的单击游戏。

      CG动画:游戏中的CG动画其实是用3D模拟引擎制作的游戏短片,一般画面效果比较真实。

12.【碰撞】unity3d中的碰撞器和触发器的区别。

答:1. 碰撞器物体不能互相进入到对方的内部,触发器可以。

      2. 触发器绝色控制器可以使用,碰撞器中不能使用。

      3. 触发器没有物理属性,碰撞器可以有力存在。

      4. 碰撞器调用OnCollisionEnter/Stay/Exit函数,触发器调用OnTriggerEnter/Stay/Exit函数。

13.【Unity】如何优化内存?

答:1.压缩自带类库;

      2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;

      3.释放AssetBundle占用的资源;

      4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;

      5.使用光照贴图;

      6.使用多层次细节(LOD);

      7.使用着色器(Shader);

      8.使用预设(Prefab)等。

14.【3D图形学】什么是渲染管道?

答:是指在显示器上为了显示出图像而经过的一系列必要操作。

      渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。

      主要有三步:应用程序阶段,几何阶段光栅阶段

      本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。

15.【3D图形学】什么是矢量图?

答:计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些

点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮

廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般

较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真;最大的缺点是难以表现色彩层次丰富的逼真图像效果。

16.【3D图形学】什么是矩阵?矩阵运算?

答:矩阵:横轴排列的二维数据表格。

矩阵运算:

加减 限制条件:行和列必须相同,对应相加相减得到结果。

乘法 限制条件:要求左矩阵的行和右矩阵的列必须同,行数和左矩阵相等,列数和右矩阵相等,结果的第i行第j列,是左矩阵的

第i行和右矩阵的第j列逐个相乘并把结果相加,得到结果是结果的第i行第j列。

17.【Unity】场景中大量物体以及实时光源,会对性能带来影响吗?该如何解决?

答:实时光源会对性能有影响,解决方案有以下几种:

1. 使用unity的烘焙系统烘焙替代实时光源。

2. 使用三维建模软件的烘焙系统烘焙代替实时光源。

3. 一般移动端开发实时光源只为了提供实时阴影效果,所以设置实施光照的有效层。

17.【Unity】什么是协同程序?

答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。换句话说,开启协程就是开启一个线程。可以用来控制

运动、序列以及对象的行为。

18.【Unity引擎】向量的点乘、叉乘以及归一化的意义?

答:1. 点乘计算两个向量之间的夹角,还可表示某一方向的投影。

      2. 叉乘得到的是法向量。

      3. 标准化向量:用在只关系方向,不关心大小的时候。

19.【Unity引擎】如何安全的在不同工程间安全地迁移asset数据?三种方法

答:1. 将Assets目录和Library目录一起迁移。

       2. 导出包。

       3. 用unity自带的assets Server功能。

 

猜你喜欢

转载自blog.csdn.net/SmileXJW/article/details/81066699
今日推荐