MIL16——模拟面试题
MIL16——模拟面试题
C#
- 我们可以使用 C# 中的迭代器来做什么?至少说出两点
- 面向对象的七大原则分别是什么?并选择其中一个原则说明它的意思
- 为什么单例模式在游戏开发中很常用?至少说出 3 个优点
- 工厂模式在游戏开发中一般用来做什么?
- 观察者设计模式在游戏开发中有什么作用?
Unity
- Unity工程文件中,
meta
后缀的文件中主要存了什么信息?(最少说出2点) - 不同后缀的各种文件的本质是什么?
-
UnityWebRequest
可以用来做什么? - 如何在 Unity 中进行多线程编程以提高性能?(至少说出3点可以使用多线程提高性能的内容)
- 游戏开发完成后:1、游戏运行卡顿、设备发热一般往哪个大方向进行排查?2、游戏运行一段时间后闪退,一般往哪个大方向进行排查?
答案
C#
-
我们可以使用 C# 中的迭代器来做什么?至少说出两点
-
foreach
- 协同程序
-
-
面向对象的七大原则分别是什么?并选择其中一个原则说明它的意思
- 单一职责原则: 一个类只处理自己应该处理的内容,不应该啥都写在一起
- 开闭原则: 对拓展开放,对修改封闭。新加功能尽量是加处理而不是改代码
- 里氏替换原则: 任何地方子类都能替代父类,父类容器装子类
- 依赖倒转原则: 不要依赖具体的实现,要依赖抽象(接口)
- 迪米特法则: 又称最少知识原则,一个类要尽量减少对别的类的了解,尽量少用别的类和自己关联
- 接口隔离原则: 不应该强迫别人依赖他们不需要使用的方法,一个接口不需要提供太多的行为,
一个接口应该尽量只提供一个对外的功能,让别人去选择需要实现什么样的行为,而不是把所有的行为都封装到一个接口当中 - 合成复用原则: 尽量使用对象组合,而不是继承来达到复用的目的
继承关系是强耦合,组合关系是低耦合 除非设计上需要继承,否则尽量用组合复用的形式
-
为什么单例模式在游戏开发中很常用?至少说出 3 个优点
- 全局数据共享
- 确保唯一性
- 方便管理资源
- 方便管理对象
- 访问简单化
- 便于扩展
等等
-
工厂模式在游戏开发中一般用来做什么?
对象实例化,对于需要频繁创建的对象,比如角色、敌人、道具、特效、音效等等,
工厂模式可以将实例化逻辑封装到一个工厂类中,提供统一方法给外部调用 -
观察者设计模式在游戏开发中有什么作用?
它可以让游戏系统之间松耦合,提高代码的可维护性和拓展性
比如在成就系统、任务系统中,我们可以利用观察者模式在不同系统中进行事件监听和分发
一般都是建立的一对多的依赖关系,当一个对象状态改变时,依赖(监听)它的对象会得到通知进行逻辑执行(委托或事件执行)
Unity
-
Unity 工程文件中,
meta
后缀的文件中主要存了什么信息?(最少说出2点)- 文件的全局唯一标识,用于确保资源文件在Unity中的唯一性
- 导入设置相关信息,比如纹理在 Inspector 窗口中的相关设置信息
- 关联脚本,如果资源和脚本关联,会包含相关脚本信息
- 资源依赖关系
- 编辑器状态,比如在 Unity 编辑中是否被锁定等
meta
后缀文件在进行项目版本管理时比较重要,因为它可以确保资源的一致性 -
不同后缀的各种文件的本质是什么?
不同后缀的文件表示文件的类型或格式不同,一般情况下,不同后缀的文件都有着自己的一套序列化和反序列化的规则
-
UnityWebRequest
可以用来做什么?- 用于上传下载数据(网络通讯,网络传输)
- 用于本地数据加载
- 支持异步执行 它支持多种协议,比如 HTTP、HTTPS、FTP、本地文件系统
-
如何在 Unity 中进行多线程编程以提高性能?(至少说出 3 点可以使用多线程提高性能的内容)
我们可以将一些复杂耗时的计算任务在 Unity 中使用多线程处理以提高性能,比如:
- 网络通讯
- A 星寻路
- 文件读写操作
- 使用协同程序异步加载(协同程序底层,部分API也是开启了多线程的)
等等
-
游戏开发完成后:1、游戏运行卡顿、设备发热一般往哪个大方向进行排查?2、游戏运行一段时间后闪退,一般往哪个大方向进行排查?
- 卡顿、发热:性能
- 闪退:内存(程序逻辑)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!