洪流学堂,让你快人几步。
整理了一些Unity面试题目,希望可以帮助到你。
面试官:数组和List两者效率之间哪个好?
答:
数组: 数组在C#中是最早出现的。它在内存中是连续的存储的,所以索引速度很快,而且赋值与修改元素也很简单。可以利用偏移地址访问元素,时间复杂度为O(1);删除时间复杂度为O(n),数组没有添加数据选项。
List:基于数组,时间复杂度相同,插入为O(n);不过在数据少量的时候跟数组差不多,数据庞大的时候效率会低于数组。
面试官:哈希表与字典的区别?
答:
字典:内部用了Hashtable作为存储结构。
- 如果我们试图找到一个不存在的键,它将返回 / 抛出异常。
- 它比哈希表更快,因为没有装箱和拆箱,尤其是值类型。
- 仅公共静态成员是线程安全的。
- 字典是一种通用类型,这意味着我们可以将其与任何数据类型一起使用(创建时,必须同时指定键和值的数据类型)。
- Dictionay 是 Hashtable 的类型安全实现, Keys和Values是强类型的。Dictionary遍历输出的顺序,就是加入的顺序。
哈希表:
- 如果我们尝试查找不存在的键,则返回 null。
- 它比字典慢,因为它需要装箱和拆箱。
- 哈希表中的所有成员都是线程安全的。
- 哈希表不是通用类型。
- Hashtable 是松散类型的数据结构,我们可以添加任何类型的键和值。
- HashTable是经过优化的,访问下标的对象先散列过,所以内部是无序散列的。
面试官:值类型和引用类型的区别?
答:
- 值类型存取快,引用类型存取慢。
- 值类型表示的是数据,引用类型表示的是指向存储在内存堆中的数据的指针和引用。
- 值类型继承自System.ValueType,引用类型继承自System.Object。
- 值类型根据声明位置不同堆和栈中都有可能存储,引用类型分配在堆中。
面试官:什么是序列化?
答:
序列化是通过将对象转换为字节流,从而存储对象或将对象传输到内存,数据库或文件的过程。主要用途是保存对象的状态,包括对象的数据,以便能够在需要是重建对象。反向过程称为反序列化。
面试官:委托是什么,event关键字有什么用?
答:
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
event关键字的作用,为了限制委托的调用条件,使之只能在外部进行,-=、+=操作不能调用,但可以在类内部调用。
扩展阅读
关注洪流学堂服务号,免费领取本系列所有内容
我是大智,你的技术探路者,下次见!
别走!点赞,收藏哦!
好,你可以走了。
网友评论