MIL17——模拟面试题

C#

  1. 递归函数是什么?请用一句话总结
  2. 在编写递归函数时,最需要关注的两点是什么?请说出你自己的理解
  3. C# 中如何在函数中返回多个返回值?(至少说出3种方法)
  4. 二分查找(折半查找)的原理是什么?
  5. 在游戏开发中,我们可以利用数据结构中的树参与哪些功能的制作?(至少说出 3 点)

Unity

  1. 你之前做过一些项目,那么一般美术同学提供给我们的美术资源,一般分为哪几类?
  2. 美术同学提供给我们的模型数据中,包含哪些关键数据?(至少说出 3 点)
  3. 游戏项目中,运行时主要占内存的内容有哪些?(至少说出 5 点)
  4. 游戏项目中,主要消耗性能的内容有哪些?(至少说出 3 点)
  5. 网络游戏中,有一个数据统计界面,这些数据是由最近 1000 场战斗计算出来的平均数据,
    你认为以下处理方式合理吗?如果不合理,应该如何改进?
    我们通过向后端请求这 1000 场战斗的数据,然后在客户端计算相关平均数据,更新显示到统计界面上

答案

C#

  1. 递归函数是什么?请用一句话总结

    递归函数就是在函数定义中使用自己的函数

  2. 在编写递归函数时,最需要关注的两点是什么?请说出你自己的理解

    1. 结束条件:在什么情况下递归会结束,否则会死循环
    2. 问题规模的减小:递归函数通过自身来解决问题的规模,每次递归都应该将问题分成一个或多个更小规模的子问题,直到达到结束条件
  3. C# 中如何在函数中返回多个返回值?(至少说出 3 种方法)

    1. 数组等容器
    2. 结构体或类自定义数据结构
    3. out​ 参数
    4. 元组
  4. 二分查找(折半查找)的原理是什么?

    在一组有序(升\降)的数据中查找一个元素时,将目标元素和查找范围的中间值做比较

    • 目标 == 中间值​,查找结束
    • 目标 != 中间值​,将目标分到较大/较小的一组
    • 通过分组,可以将查找范围缩小一半,再新组中重复刚才的步骤,直到找到目标
  5. 在游戏开发中,我们可以利用数据结构中的树参与哪些功能的制作?(至少说出 3 点)

    1. 场景中对象的关系

      比如 Unity 中场景上的对象通过树形结构建立父子关系,可以方便我们查找对象,确定对象的层级关系等等

    2. 行为树 AI

    3. 资源管理,资源之间的层级结构可以靠树建立

    4. 技能系统,比如技能树的表现

    5. 随机地图生成,比如“肉鸽”游戏中的随机地图,地图中的关系可以用树建立

    6. 任务系统,比如游戏中的任务面板中的任务清单

    7. 碰撞检测,碰撞检测的底层一般会采用四叉树或八叉树来加速碰撞检测

Unity

  1. 你之前做过一些项目,那么一般美术同学提供给我们的美术资源,一般分为哪几类?

    1. UI 资源
    2. 3D 模型资源
    3. 特效资源
    4. 2D 图片资源(角色、道具、背景图、过场原画等)
  2. 美术同学提供给我们的模型数据中,包含哪些关键数据?(至少说出 3 点)

    1. 顶点
    2. 法线
    3. 切线
    4. UV纹理坐标
    5. 纹理贴图
    6. 法线贴图
    7. 骨骼

    等等

  3. 游戏项目中,运行时主要占内存的内容有哪些?(至少说出 5 点)

    • 代码相关:

      1. 代码中预加载的数据(比如数据表中加载出来的数据)
      2. 代码中的成员数据(执行逻辑的代码中的相关成员)
    • 资源相关:

      1. 模型

        1. 模型数据
        2. 纹理贴图
        3. 动画数据
      2. 2D

        1. UI
        2. 各种游戏图片(角色、道具、背景等等)
      3. 其他

        1. 音效
        2. 特效
  4. 游戏项目中,主要消耗性能的内容有哪些?(至少说出 3 点)

    1. 图形渲染相关
    2. 物理引擎
    3. 骨骼动画
    4. 资源加载
    5. 寻路算法
    6. 网络通讯
    7. 常规游戏代码逻辑
  5. 网络游戏中,有一个数据统计界面,这些数据是由最近 1000 场战斗计算出来的平均数据,
    你认为以下处理方式合理吗?如果不合理,应该如何改进?
    我们通过向后端请求这 1000 场战斗的数据,然后在客户端计算相关平均数据,更新显示到统计界面上

    不合理,应该让后端计算好,前端需要数据时请求获取计算好的数据后更新到界面上即可,无需前端来进行计算处理