整理的Unity 面试题(有些没答案都是师兄在脑海里记录下来的)(二)

1、C#中的排序方式有哪些?

 选择排序、冒泡排序、快速排序、插入排序、希尔排序,归并排序。

2、C#和Lua的交互怎么实现?

3、Lua的数据类型

4、射线检测碰撞的原理是?

射线是3D世界中的一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射。

5、Lua有几种循环?Ipair和pair的区别。

6、Unitya中,照相机的Clipping Plane的作用是什么?调整Near\Fare两个值时,应该注意什么?

剪裁平面。从相机到开始渲染和停止渲染之间的距离。

7、Unity的ui怎么优化?

8、请简述GC(垃圾回收)产生的原因,并描述如何避免?

GC回收堆上的内存

避免:1、减少new产生对象的次数

2、使用公用的对象(对象)

3、将String换为StringBuilder

9、你塔防项目中遇到的最大问题是什么,怎么解决?


10、移动相机动作在哪个函数里,为什么在这个函数里?

LateUpdate,是所有的Update结束后才调用,比较适合用于命令脚本的执行。官网上的例子是摄像机的跟随,都是所有Update的操作完才进行摄像机的跟进,不然就有可能出现摄像机已经推进了,但是视角里还未有角色,所谓的空帧出现。


11、分数的四则运算(编程题)

例如:输入  1/8+3/8  每个数字为1-9的整型,运算符左右为空格 输出 1/2 (要化简)(实现+-*/)


12、什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。渲染管道中的很多步骤,都要将几何物体从一个坐标系变换到另一个坐标系中去。主要步骤有:

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


13、编程题

一个M*N的矩阵,随机取K行,每一列中最多只有一个1(没时间记不清了)


14、如何优化内存?

有很多种方式,例如:

1、压缩自带类库;

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

3、释放AssetBundle占用的资源;

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

5、使用光照贴图,使用多层次细节(LOD),使用着色器(Shader),使用预设(Prefab);

6、代码中少产生临时变量。


15、不定项选择会出现的名词

树的聚族索引,内存页,TCP报文,ACK,SYN,FIN......


16、应用题(C#)

  一个角色有静止,攻击,跳跃,俯冲,闪避等几个动作,当不做任何操作时,角色播放静止动作。

1、设计一个抽象类表现角色的状态。

2、角色在静止时可以攻击,松开攻击键则攻击停止。

  角色按键可闪避,跳跃当处于跳跃状态时可进行俯冲,

3、攻击开始时生成一个攻击开始特效,攻击结束生成攻击结束特效,跳跃开始生成跳跃特效,俯冲结束生成俯冲结束音效。

(具体按键已经给了枚举变量,特效与音效的函数已给出)

4、如果在跳跃,俯冲,下蹲过程中可以攻击,并当攻击结束要回到之前的状态,请设计一个具体思路和数据结构。


17、动态加载资源的方式?它们之间的区别

1、Resource.Load();

2、AssetBundle

区别:resource的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)所以unity推荐的方式是不用它,都用bundle的方式替代,把资源达成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是在开发过程中,不可能没更新一个资源就打一次bundle,所以editor环境下可以使用assetdatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同实现。


18、给定一串数组,找到数组中的三个数使的它们的积为最大的积。(编程)


19、一组学生排成一排,按照成绩给他们分配苹果,最少得一个,相邻的成绩高的多得一个。给定一个成绩数组,计算一共要多少苹果?


20、请描述游戏动画有哪几种,以及其原理?

主要有关节动画、骨骼动画、单一网络模型动画(关键帧动画)。

关节动画:把角色分成若干独立部分,一个部分对应一个网络模型,部分的动画连接成一个整体的动画,角色比较灵活,Quake2中使用这种动画;

骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,有关节相连,可做相对运动,皮肤作为单一网络蒙在骨骼之外,决定角色的外观;

单一网络模型动画由一个完整的网络模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。


21、alpha blend工作原理

Alpha Blend 实现透明效果,不过只能针对某块区域进行alpha操作,透明度可设。


22、投一个骰子4次得到1次(包括1次)以上6点的几率和投两个骰子24次得到1次(包括1次)以上两个6点的几率是否相同,说出计算思路。


23、下列代码在运行中会产生几个临时对象?

sring a=new string("abc");

a=(a.ToUpper()+"123").Substring(0,2);

在C#中第一行是会报错的(Java中倒是可行)。

应该这样初始化:

string b=new string(new char[]{'a','b','c'});

5个临时对象。


24、tcp和udp的区别

1、基于连接与无连接

2、对系统资源的要求(TCP较多,UDP较少);

3、UDP程序结构较简单;

4、流模式与数据报(报文)模式;

5、TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

                          TCP                                           UDP

是否连接           面向连接                                面向非连接

传输可靠性        可靠                                           不可靠

应用场合            少量数据                                传输大量数据

速度                   慢                                             快


25、下列代码在运行中会发生什么问题?如何避免?

List <int> Is=new List<int>(new int[]{1,2,3,4,5});

foreach(int item in Is)

{

  Console.WriteLine(item *item);

  Is.Remove(item);

}

产生运行时错误,在Is.Remove(item)这行,因为foreach是只读的。不能一边遍历一边修改。

上一篇:自学JAVA Day1


下一篇:网络编程