MIL22——模拟面试题
MIL22——模拟面试题
C#
-
C# 中在字符串前面加一个
@ 符号或者$符号有什么作用 -
C# 中提供了序列化和反序列化 2 进制数据的公共类
BinaryFormatter
为什么我们一般还要自己去实现序列化和反序列化 2 进制数据的方法? -
异或加密的原理是什么?请简要说明
-
下面的函数是判断一个整数是不是 2 的 n 次方。请问
if语句中应该如何书写1
2
3
4
5
6static bool isPowerOfTwo(uint num)
{
if (/*...*/)
return true;
return false;
} -
有 1000 瓶水其中一瓶是有毒的,喝下后 24 小时后才死,现在用小白鼠来测试哪一瓶有毒。
最少需要用多少只小白鼠才能测出哪一瓶是有毒的水(需要在 24 小时后出结果,不能用几天时间来测试)
Unity
- 有 1000 瓶水其中一瓶是有毒的,喝了马上死,现在用小白鼠来测试哪一瓶有毒。最少需要用多少只小白鼠才能测出哪一瓶是有毒的水
- 如何为 UGUI 中的某一个控件添加自定义事件监听(比如为一个
Image添加点击事件) - 我们在进行 UI 开发时,每个面板都会有很多控件(
Button、Toggle、Slider等等)
每新写一个面板逻辑,都会为这些控件做一些相同的事情,比如:声明控件、查找控件、监听控件等等
请问:我们应该如何提升我们的开发效率,让这些事情不用每次都去做?(至少说出两种方案) - 正交矩阵的基本概念是什么?它对我们来说有什么意义?
- Shader和材质球的关系是什么?
答案
C#
-
C# 中在字符串前面加一个
@ 符号或者$符号有什么作用
@ 符号:让转义字符失效
$ 符号:插值字符串,可以在字符串中加入{变量名}插入变量值 -
C# 中提供了序列化和反序列化 2 进制数据的公共类
BinaryFormatter
为什么我们一般还要自己去实现序列化和反序列化 2 进制数据的方法?-
主要原因:
希望数据跨语言,
BinaryFormatter 是 C# 的特定格式,不同的语言之间可能无法良好的兼容自定义数据可以让数据跨语言,
在网络通讯时,后端的语言大多数情况下不是 C#,我们应该和后端一起置顶序列化和反序列化的规范 -
次要原因:
- 更容易进行加密处理
- 节约空间,
BinaryFormatter会包含一些除数据以外的额外信息
等等
-
-
异或加密的原理是什么?请简要说明
异或加密是一种简单的对称加密算法。原理就是基于异或运算,相同为0,不同为1。
异或加密时会有一个固定的密钥,想要加密的数据与该密钥进行异或运算得到加密后的数据
加密后的数据再和密钥进行异或运算得到原数据(解密后的数据)举例:
假设原数据为:1010
密钥为:1100
加密后的数据为:1010 ^ 1100 = 0110
解密数据:0110 ^ 1100 = 1010 -
下面的函数是判断一个整数是不是 2 的 n 次方。请问
if语句中应该如何书写1
2
3
4
5
6static bool isPowerOfTwo(uint num)
{
if (/*...*/)
return true;
return false;
}答:
(num & num - 1) == 0 && num >= 0 -
有 1000 瓶水其中一瓶是有毒的,喝下后 24 小时后才死,现在用小白鼠来测试哪一瓶有毒。
最少需要用多少只小白鼠才能测出哪一瓶是有毒的水(需要在 24 小时后出结果,不能用几天时间来测试)
Unity
-
有 1000 瓶水其中一瓶是有毒的,喝了马上死,现在用小白鼠来测试哪一瓶有毒。最少需要用多少只小白鼠才能测出哪一瓶是有毒的水

-
如何为 UGUI 中的某一个控件添加自定义事件监听(比如为一个
Image添加点击事件)UGUI 中的
EventTrigger -
我们在进行 UI 开发时,每个面板都会有很多控件(
Button、Toggle、Slider等等)
每新写一个面板逻辑,都会为这些控件做一些相同的事情,比如:声明控件、查找控件、监听控件等等
请问:我们应该如何提升我们的开发效率,让这些事情不用每次都去做?(至少说出两种方案)- 方案一:制作自动生成代码的工具,将声明控件、查找控件、监听控件这些事情自动生成
- 方案二:创建面板基类,在基类中进行统一处理,新面板只需继承该基类,基类代码就可以帮助我们完成声明控件、查找控件、监听控件这些事情
-
正交矩阵 的基本概念是什么?它对我们来说有什么意义?
- 基本概念:正交矩阵是一种特殊的方阵
一个方阵和它的转置矩阵相乘为单位矩阵,那么它就是正交矩阵
如果一个矩阵是正交矩阵,那么它的转置矩阵也是正交矩阵 - 对我们的意义: 如果一个矩阵是正交的,那么它的逆矩阵等于其转置矩阵,可以非常方便的进行逆运算,用于取消之前的变换
- 基本概念:正交矩阵是一种特殊的方阵
-
Shader 和材质球的关系是什么?
- 一个 Shader 可以与无数个材质关联。
- 一个材质同一时刻只能关联于一个 Shader。(为什么说是同一时刻,因为我们可以通过代码去动态改变材质所关联的Shader)
- 材质可以赋与模型,但是 Shader 不行。
- 材质就像是 Shader 的实例,每个材质都可以参数不一样呈现不同的效果,但是当 Shader 改变时,关联它的所有材质都会相应的改变。
举个例子:比如游戏中的怪物,我们只需做一个 Shader,然后每个怪物给它一个材质球,材质球上赋与不同的贴图与参数来表现不同的怪物。
