MIL16——模拟面试题

C#

  1. 我们可以使用 C# 中的迭代器来做什么?至少说出两点
  2. 面向对象的七大原则分别是什么?并选择其中一个原则说明它的意思
  3. 为什么单例模式在游戏开发中很常用?至少说出 3 个优点
  4. 工厂模式在游戏开发中一般用来做什么?
  5. 观察者设计模式在游戏开发中有什么作用?

Unity

  1. Unity工程文件中,meta​ 后缀的文件中主要存了什么信息?(最少说出2点)
  2. 不同后缀的各种文件的本质是什么?
  3. UnityWebRequest​ 可以用来做什么?
  4. 如何在 Unity 中进行多线程编程以提高性能?(至少说出3点可以使用多线程提高性能的内容)
  5. 游戏开发完成后:1、游戏运行卡顿、设备发热一般往哪个大方向进行排查?2、游戏运行一段时间后闪退,一般往哪个大方向进行排查?

答案

C#

  1. 我们可以使用 C# 中的迭代器来做什么?至少说出两点

    1. foreach
    2. 协同程序
  2. 面向对象的七大原则分别是什么?并选择其中一个原则说明它的意思

    1. 单一职责原则: 一个类只处理自己应该处理的内容,不应该啥都写在一起
    2. 开闭原则: 对拓展开放,对修改封闭。新加功能尽量是加处理而不是改代码
    3. 里氏替换原则: 任何地方子类都能替代父类,父类容器装子类
    4. 依赖倒转原则: 不要依赖具体的实现,要依赖抽象(接口)
    5. 迪米特法则: 又称最少知识原则,一个类要尽量减少对别的类的了解,尽量少用别的类和自己关联
    6. 接口隔离原则: 不应该强迫别人依赖他们不需要使用的方法,一个接口不需要提供太多的行为,
      一个接口应该尽量只提供一个对外的功能,让别人去选择需要实现什么样的行为,而不是把所有的行为都封装到一个接口当中
    7. 合成复用原则: 尽量使用对象组合,而不是继承来达到复用的目的
      继承关系是强耦合,组合关系是低耦合 除非设计上需要继承,否则尽量用组合复用的形式
  3. 为什么单例模式在游戏开发中很常用?至少说出 3 个优点

    1. 全局数据共享
    2. 确保唯一性
    3. 方便管理资源
    4. 方便管理对象
    5. 访问简单化
    6. 便于扩展

    等等

  4. 工厂模式在游戏开发中一般用来做什么?

    对象实例化,对于需要频繁创建的对象,比如角色、敌人、道具、特效、音效等等,
    工厂模式可以将实例化逻辑封装到一个工厂类中,提供统一方法给外部调用

  5. 观察者设计模式在游戏开发中有什么作用?

    它可以让游戏系统之间松耦合,提高代码的可维护性和拓展性
    比如在成就系统、任务系统中,我们可以利用观察者模式在不同系统中进行事件监听和分发
    一般都是建立的一对多的依赖关系,当一个对象状态改变时,依赖(监听)它的对象会得到通知进行逻辑执行(委托或事件执行)

Unity

  1. Unity 工程文件中,meta​ 后缀的文件中主要存了什么信息?(最少说出2点)

    1. 文件的全局唯一标识,用于确保资源文件在Unity中的唯一性
    2. 导入设置相关信息,比如纹理在 Inspector 窗口中的相关设置信息
    3. 关联脚本,如果资源和脚本关联,会包含相关脚本信息
    4. 资源依赖关系
    5. 编辑器状态,比如在 Unity 编辑中是否被锁定等

    meta​ 后缀文件在进行项目版本管理时比较重要,因为它可以确保资源的一致性

  2. 不同后缀的各种文件的本质是什么?

    不同后缀的文件表示文件的类型或格式不同,一般情况下,不同后缀的文件都有着自己的一套序列化和反序列化的规则

  3. UnityWebRequest​ 可以用来做什么?

    1. 用于上传下载数据(网络通讯,网络传输)
    2. 用于本地数据加载
    3. 支持异步执行 它支持多种协议,比如 HTTP、HTTPS、FTP、本地文件系统
  4. 如何在 Unity 中进行多线程编程以提高性能?(至少说出 3 点可以使用多线程提高性能的内容)

    我们可以将一些复杂耗时的计算任务在 Unity 中使用多线程处理以提高性能,比如:

    1. 网络通讯
    2. A 星寻路
    3. 文件读写操作
    4. 使用协同程序异步加载(协同程序底层,部分API也是开启了多线程的)

    等等

  5. 游戏开发完成后:1、游戏运行卡顿、设备发热一般往哪个大方向进行排查?2、游戏运行一段时间后闪退,一般往哪个大方向进行排查?

    • 卡顿、发热:性能
    • 闪退:内存(程序逻辑)