欢迎来到光光的奇妙冒险,我是你们的煎饼光子老师。
今天是我们的第一期笔试面试题总结。
C#部分:
1、装箱和拆箱是指什么?
答案:
装箱——把栈中内容迁移到堆中去(值转引用)
拆箱——把堆中内容迁移到栈中去(引用转值)
2、委托和事件在使用上的区别是什么?
答案:
事件相对委托来说,事件在外部使用时只能 +=、-=
3、有两个接口IA和IB,他们都有一个叫Test()的方法,一个类同时继承这两个接口,应该如何处理他们的同名方法?
答案:显示实现接口
IA.Test()
IB.Test()
4、请说明C#中的List是如何扩容的
答案:List的本质是数组,举数组扩容的例子即可
Unity部分:
1、Unity中点乘和叉乘对于我们来说的作用是什么?
答案:
点乘作用
1.判断对象的方位
2.计算两向量之间的夹角
叉乘作用
1.获取一个平面的法向量
2.得到两向量之间的左右位置关系
2、Unity中多线程执行下面哪些代码会报错?
A. Application.persistentDataPath
B. File.Exists("文件名")
C. transform.Translate
D. Object.Destroy(对象)
答案:
A、C、D
UnityEngine命名空间中相关类基本都不能被Unity中多线程使用
3、Application.streamingAssetsPath 和 Application.persistentDataPath两个路径有何区别?对于我们的意义是什么?
答案:
Application.streamingAssetsPath 只读
Application.persistentDataPath 可读可写
Application.streamingAssetsPath 适合放置一些默认2进制配置文件
Application.persistentDataPath 用于处理数据持久化,或作为热更新下载内容的存放目录,因为它可读可写
4、请简述Unity中协程的原理
答案:
Unity中的协同程序分为两部分
1.协程函数本体(迭代器函数)
2.协程调度器(协程管理器)
协程利用迭代器函数的分步执行的特点
加上
协程调度器对迭代器函数们进行统一管理
根据迭代器函数的返回值来决定下一次执行函数逻辑的时间点
从而实现逻辑分时分步执行的目的
5、Unity底层如何处理C#代码?
答案:
两种方案
Mono和IL2CPP