【面试总结】Unity3D面试题总结

1.深拷贝和浅拷贝的区别

 相当于 引用类型 值类型

浅拷贝:引用的复制,引用同时指向同一个数据元素

深拷贝:引用不同,创建了新的对象,当改变数据时,相互不影响。

2.判断一个链表是否有环

快慢指针

当链表出现环的时候,快指针 会和 慢指针发生碰撞,两者碰撞则证明链表有环。

3.类与对象的区别,什么是类与对象

类相当于猫,对象相当于这只猫

类与类 行为不同(代码的不同)

类与对象 属性不同 (例如相同代码,这个敌人伤害高,那个敌人移动速度快)

4.抽象方法和接口的区别

抽象方法:is a(是一种)

接口:can do(能够做(这种功能))

抽象类 单继承 接口 多继承

抽象类 可以间接实例化  接口不是类 不能被实例化

抽象方法 必须放到抽象类中 

接口的成员 不允许出现访问修饰符 因为本身就是公共的,内部成员的访问级别和接口的访问级别相同

接口 不能有构造函数

5.二进制和十进制的转换

十进制转二进制 倒序取余法

6.什么协程?协程和线程的区别

主线程执行的过程中,另开一段逻辑并行执行

7.数据结构 各个的定义

线性表:有n个数据元素组成的一个有限序列

线性表的顺序结构,叫做顺序表;线性表的链式结构,叫做链表。

8.面向对象

封装,继承,多态

9.设计模式

单例,简单工厂,抽象工厂。

10. 数据结构的基础概念

 

逻辑结构:

线性结构:有唯一的开始结点和终端结点,开始结点没有前驱,终端结点没有后继,其他的则都存在前驱和后继

存储结构:

线性表的顺序存储: 被称为顺序表,逻辑顺序相邻和物理顺序相邻

线性表的链表存储:被称为链表,通过地址的引用,找到下一个结点的位置

11.双链表的插入和删除

12.结构体和类的区别

结构体是值类型 类是引用类型

值类型存储在栈中,引用类型的数据存储在堆中,引用存储在内存单元中

栈中的数据是自动释放的,堆中的数据是用GC来释放的

栈的存取速度快,堆的存取速度慢

值类型的继承 valetype,引用类型的继承 object   

13.什么是委托?回调是什么意思

委托是对某个方法的引用的一种引用类型的变量。回调就是将方法的地址放到委托链上进行调用。

14. 深度遍历 和 广度遍历

图的深度遍历和广度遍历

15.时间复杂度和空间复杂度

时间复杂度:计算机运行一个算法时,程序代码执行的总次数。

空间复杂度:

16.内存优化

采用多层次(LOD),压缩自带类库,减少模型的面数,使用预制体(prefab),使用shader,将物体隐藏而并不是将他销毁。

17.C#中的指针

18.多态?编译时多态和运行时多态

同名的方法在不同的环境下,效果不同

又分为编译时多态,如重载;运行时多态,重写

19.构造方法

 class Book
    {
        public  string bookName;
        public int bookPage;
        public float bookPrice;
        public DateTime bookTime;
        public string bookAuthor;


        //构造函数
        // 1.方法名和类名相同
        // 2.构造函数没有任何返回值,及时是void也不行
        // 3.构造函数 可以是无参构造函数 也可以是有参构造函数
        // 4.构造函数 当出现有参构造函数时,需要手动添加无参构造函数 
        //   当没有出现有参构造函数时,则默认为系统自动添加了无参构造函数




        //有参数的构造方法   
        public Book(string name)
        {
            bookName = name;
        }

        public Book(string name ,int page)
        {
            bookName = name;
            bookPage = page;
        }

        //无参数的构造方法
        public Book()
        {

        }
    }
——————————————————————————————————————————————————————————————————————————
 class Program
    {
        static void Main(string[] args)
        {
            Book book1 = new Book();
            Book book2 = new Book("十万个为什么?");
            Book book3 = new Book("钢铁是怎么炼成的?", 19);

            Console.WriteLine(book1.bookName);
            Console.WriteLine(book1.bookPage);
            Console.WriteLine(book2.bookName);
            Console.WriteLine(book2.bookPage);
            Console.WriteLine(book3.bookName);
            Console.WriteLine(book3.bookPage);

            Console.ReadKey();
        }
    }

20.Time.DataTime 是什么意思?

完成一帧所运行的时间。

21.OnEnable、Awake、Start运行时的发生顺序?那些可能在同一个对象周期中反复的发生。

Awake()→OnEnable()→Start()            OnEable()

22.UGUI 可以添加粒子特效么?如何实现。

23.Unity引擎数据持久化存储支持什么数据类型?都有那些方法?

第一种 Unity自身提供的 PlayerPrefs

第二种 BinaryFormatter 二进制序列化

第三种 保存为json格式的文本文件

第四种 XmlSerializer进行串行化

24.bit跟byte什么关系?一个int类型的数字占用了几个byte?2,047,483,647能不能存下?

bit 二进制位  

byte  字节 

1字节 = 8位  ( 1byte = 8bit )

byte和int类型区别如下:
  1、byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。
  2、int是整型数据类型,是有符号型的,占用4个字节,大小范围为:-2147483648到2147483647

int16相当于short 占2个字节 不能够存下

int32相当于int  占4个字节 能够存下

int64相当于long long 占8个字节 能够存下

(1条消息) int16, int32, int64等类型说明_shaoguang_cn的博客-CSDN博客_int32

25.值类型与引用类型的考察

            var a = 10;
            var b = a;
            b++;
            Console.WriteLine("a" + a);
            Console.WriteLine("b" + b);

            var array1 = new int[3] { 1, 2, 3 };
            var array2 = array1;
            array2[0] = 10;

            foreach (var item in array1)
            {
                Console.Write(item+" ");
            }
            Console.WriteLine();
            foreach (var item in array2)
            {
                Console.Write(item + " ");
            }

            Console.ReadKey();

a = 10 b = 11;    array1={10,2,3}    array2={10,2,3};

26.什么是委托?如何使用Action<T>和Func<TResult>?Action和Func定义的委托有什么区别?事件是委托么?委托和事件的区别是什么?

委托是对某个方法引用的一种类型变量

Action 无返回值

Func 有返回值

delegate

()=> 匿名函数

事件是委托。

事件只能在外部进行注册和注销,而事件的声明和清空则是在内部进行执行。

27.单链表的  addFirst() addLast()  indexof() contains() removeFirst() removeLast()  size()的时间复杂度

28.冒泡排序法的时间复杂度

O(n²)

29.Animator,Animation,Animation Controller是什么,有什么区别?Animator动画如何停止播放?

Animator 动画机  Animation 帧动画

30.CSV配置表文件放入项目是否可以在手机端读取到?需要注意什么?

31.UGUI中如何实现弹窗淡入淡出的效果。

32.请描述 Interface 与 抽象类之间的不同?

接口 单继承  抽象类 多继承

33. LINQ的使用?

34.抽象类

抽象表示有这个概念(比如运输),但不进行执行,需要其子类来实现方法体的内容,比如火车的运输,飞机的运输

不能创建对象,不含有方法体

35.虚方法和抽象方法的区别?

虚方法对于子类可以选择性实现,本类可以实现

抽象方法在子类中必须实现,在本类不进行实现

36.继承和关联

继承:是一种(通过:继承)

关联:有一个(简单说 该类中有另一个类)

依赖:该类的方法实现需要包含另一个类才能进行实现

37.AssetBundle和Resource

AssetBundle 方便资源的更新,Resource 资源越多,引擎启动时。

38.GC的原理是什么?

GC是为了避免内存溢出而产生的垃圾回收机制

减少new对象的次数,使用公共变量(静态成员),使用stringbuilder

39.fixedUpdate,update,lateupdate的区别

fixedupdate 应用于物理,固定帧执行

update 根据计算机的性能

lateupdate 适用于摄像机,防止人物已经移动了,但是摄像机还没有进行移动。

40.生命周期

Awake——OnEnable——Start——fixedUpdate——Update——lateUpdate——OnDisable——OnDestroy

41.类与对象

类与对象,对象是类的实例,比如类是猫,则对象是这只猫。

类与类,代码的不同。对象与对象是行为的不同。

42.面向对象,面向过程

面向过程:关心问题解决的步骤

面向对象:关心的是每个对象在做什么

分而治之——将大的模块分解为很多类,每个类处理一个独立的模块

封装变化——对于变化的地方独立封装,避免影响其他模块

高内聚——类的职责单一,只做同一件事情

低耦合——类与类之间相互独立,之间没有过多的联系

43.什么是多态?

同名的方法在不同环境下有不同的实现。

分为编译时多态和运行时多态。

编译时多态表现为重载,运行时多态,表现在重写。

具体实现的方法有:虚函数,抽象类,接口

44.ref 和 out的区别

ref 和 out 传递的都是地址的引用

ref 进行传递时,需要提前进行初始化,而out不需要,但是out从函数体传递出去时,必须在函数体中进行赋值。

45.Resource和AssetBundle的区别

Resource下的资源过多,会影响游戏启动的时间。游戏启动时,Resource中的资源不会加载到内存中,而是通过Resource.Load()加载到内存中,但是游戏启动时,会创建一个Resource的索引表,而其索引表会占用内存。

Resource可以默认为一个巨大的AB,有点在于不需要维护,使用方便,缺点则是对更新不友好。

AB对于资源的更新友好,但是管理麻烦,容易造成资源泄露。

AssetBundle和Resource有什么优势和劣势_互联网时代,属于我们的时代!-CSDN博客

46.什么是哈希碰撞?

47.十大经典排序?堆排序?归并排序?

十大经典排序算法-归并排序算法详解_小小学编程的博客-CSDN博客_归并排序算法

 48.四元数和欧拉角的区别,什么是万向节死锁?

欧拉角 在x轴 +-90° 会形成欧拉角死锁 

49.什么是同步加载和异步加载?

Unity异步加载场景SceneManager.LoadSceneAsync与AsyncOperation的使用_倾恋你的美的博客-CSDN博客_unity异步加载场景

50.什么是lua?

因为lua属于解释型语言,不用编译,在运行时能动态解释Lua代码并运行。(暂时这么理解即可)

51.TCP/IP传递协议,OSI模型怎么表示?Http属于那一层

TCP/IP的四层模型,Http属于应用层

链路层 网络层 传输层 应用层

(2条消息) 太厉害了,终于有人能把TCP/IP 协议讲的明明白白了_夏目 "的博客-CSDN博客_tcp和ip

52.Unity中图集的概念?

图集的定义:图集是只将众多2D的小图整合成一张大图,方便Unity渲染合批,降低渲染消耗。

图集的优势: UI的合批处理,减少DrawCall ;减少内存的使用 ;提升效率

(5条消息) Unity图集简介及使用_z2014z的博客-CSDN博客_unity 图集

53.Unity中的渲染管道?

54.图片的格式有那些,哪些格式属于无损压缩的形式?

jpg是有损压缩不透明,png是无损压缩透明

55.进程和线程有什么关系?两者有什么区别?

C# 进程 与 线程 - microsoftzhcn - 博客园 (cnblogs.com)

56.Unity中的协程?

57.线程和C#中的线程有什么区别?

58.字典的底层是什么?

字典的底层实现是 数组+单项链表

(5条消息) C# 数据结构 - Dictionary_giantwugui的博客-CSDN博客_c# dictionary 数据结构

猜你喜欢

转载自blog.csdn.net/weixin_45344894/article/details/123145429
今日推荐