近期面试Unity游戏开发中遇到的问题

本文探讨了C#中的数组、列表、队列、栈、字典等数据结构的特点和使用场景,以及Unity开发中的常见设计模式、协程、资源管理和堆栈的区别。此外,还涉及排序算法、事件系统、Unity摄像机切换和热更新方案的讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.array和list的优缺点,使用场景

数组

1.数组需要预留空间,可能会造成内存浪费

2.要定义数组首先要有一段足够长的连续空间

3.数组大小事固定的,不支持动态的扩展

列表

内部维护一个数组,数组大小不是固定的,支持动态的扩展

使用场景

1.数组:数量几乎不会改变

2.列表:数量不确定

2.队列和栈的实际应用

构建对象池这种功能是适合使用队列和栈,因为并不在乎进出顺序,其性能较佳

3.字典有什么特点

1.Dictionary里面每一个元素都是以键值对的形式存在的

2.键必须是唯一的,而值不需要唯一

3.键和值都可以以任何数据类型存在

4.通过一个键值读取一个值的时间接近O(1)

C#中的Dictionary是一种键值对集合,它使用哈希表实现,在插入、删除和查找操作上具有高效的性能。

字典表示一种数据结构,这种数据结构允许按照某个键来访问元素。

内部是以key,value的形式存储数据,每个元素都是一个键值对

字典长度是不固定的,随着元素增减而改变

key相当于数组索引值 ,key需要自定义在一个字典中,key的定义不能重复,具有唯一性

优点:

1). 快速的查找:Dictionary内部使用哈希表来存储数据,可以通过键来快速查找对应的值,平均查找时间复杂度为O(1)。

2). 唯一键:Dictionary要求键的唯一性,保证了键的唯一性,防止重复的键的存在。

3). 内存效率:相对于其他集合类型,Dictionary在存储大量数据时,具有较低的内存占用。

缺点:

1). 内存消耗:由于Dictionary使用哈希表来存储数据,需要使用额外的内存空间来存储哈希表和键值对对象。

2). 无序集合:Dictionary中的元素是无序的,并不像SortedSet或List那样保持有序。

4.常用的设计模式

单例模式,状态模式,观察者模式,命令模式,工厂模式

5.工厂模式

工厂模式是一种创建型模式,为的是减少创建对象吧时,使用端与具体的类耦合关系,尤其是在有多重对象需要创建时,那么使用端就会与多个类之间产生耦合,工厂模式也算是符合迪米特法则,尽量让使用端金肯的指导更少的类,而通过工厂去与具体的类产生联系,只依赖于工厂和产品的抽象类,总的来说,就是把使用产品的各种业务逻辑和产品的创建分离开来。

6.单例模式

单例,模式是比较常见的一种设计模式,目的是保证一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,避免频繁创建对象,节约内存。

单例模式的应用场景很多,比如我们电脑的操作系统的回收站就是一个很好的单例模式应用,电脑上的文件,视频,音乐等被删除后都会进入到回收站中;还有计算机中的打印机也是采用单例模式设计的,一个系统重可以存在多个打印任务,但是只能有一个正在工作的任务;Web页面的计数器也是用单例模式实现的,可以不用把每次刷新都记录到数据库中。

一般应用在各种管理器中。

单例模式包含:

1.饿汉式

2.懒汉式

3.双检锁懒汉式

4.静态内部类单例式

5.枚举单例式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值