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对于资源的更新友好,但是管理麻烦,容易造成资源泄露。
46.什么是哈希碰撞?
47.十大经典排序?堆排序?归并排序?
48.四元数和欧拉角的区别,什么是万向节死锁?
欧拉角 在x轴 +-90° 会形成欧拉角死锁
49.什么是同步加载和异步加载?
Unity异步加载场景SceneManager.LoadSceneAsync与AsyncOperation的使用_倾恋你的美的博客-CSDN博客_unity异步加载场景
50.什么是lua?
因为lua属于解释型语言,不用编译,在运行时能动态解释Lua代码并运行。(暂时这么理解即可)
51.TCP/IP传递协议,OSI模型怎么表示?Http属于那一层
TCP/IP的四层模型,Http属于应用层
链路层 网络层 传输层 应用层
52.Unity中图集的概念?
图集的定义:图集是只将众多2D的小图整合成一张大图,方便Unity渲染合批,降低渲染消耗。
图集的优势: UI的合批处理,减少DrawCall ;减少内存的使用 ;提升效率
53.Unity中的渲染管道?
54.图片的格式有那些,哪些格式属于无损压缩的形式?
jpg是有损压缩不透明,png是无损压缩透明
55.进程和线程有什么关系?两者有什么区别?
56.Unity中的协程?
57.线程和C#中的线程有什么区别?
58.字典的底层是什么?
字典的底层实现是 数组+单项链表
(5条消息) C# 数据结构 - Dictionary_giantwugui的博客-CSDN博客_c# dictionary 数据结构