选择题
1 c
2 d
3 ac
4 a
5 b
6 a
填空题
1. 继承,封装,多态
2. 单例,工厂方法,装饰模式,职责链模式
3. ArrayList,Hashtable
4. X=1; y=0
当程序实例化B时,因为继承关系,会先执行它的父类中的构造方法,而在A类中的构造方法调用了PrintFields这个虚函数,而在B中重写了A中的虚函数,所以在程序输出时构造方法B还未执行,x和y的值不会受到影响,所以输出结果为X=1; y=0
5. 实现冒泡排序就可以了
问答题:
1. 简述GC产生的原因
当用new创建一个对象的时候,可分配的内存不足时GC就会去回收还未使用的对象,但是GC的操作比较复杂,会占用较多的CPU计算时间,会严重影响到性能
如何避免?
1.尽量少的用new来创建对象,使用公用的对象,但是需要考虑到实际情况,不能乱用
2.使用对象池。
2. U3D生命周期
1.Awake 2.Start 3.FixedUpdate 4.Update 5.LateUpdate
6.OnDestroy
3. prefab的作用及在移动环境下使用
1.减少内存占用,不使用不会占内存
2.在实例化的时候用,主要会用于经常使用的物体,属性便于修改设置。
4 什么是协同程序?
在主线程运行的同时开启另一段逻辑处理来协助当前程序的执行
与C#线程的区别
协同程序避免了无意义的调动,可以提高性能,但是协程也失去了标准线程使用多CPU的能力
主要用于管理额外开启的线程
using UnityEngine;
using System.Collections;
class hahah:MonoBehaviour
{
private void Start()
{
Debug.Log("1");
StartCoroutine(Do());
Debug.Log("4");
}
IEnumerator Do()
{
Debug.Log("2");
yield return StartCoroutine(newDo());
Debug.Log("6");
}
IEnumerator newDo()
{
Debug.Log("3");
yield return new WaitForSeconds(2);
Debug.Log("5");
}
}
6 5个
7 List是泛型集合需要限定类型参数
foreach遍历集合时,修改集合,会出现错误,不能进行枚举操作。
避免这个问题,可以重新生成一个集合遍历
foreach (int item in Is.ToList <int>())
{
if (item % 2 == 0 )
{
Is.Remove(item);
}
}