unity面试题合集(一)
1. 请简述值类型与引用类型的区别
我是想简述下为什么第一个问题总是这个,因为所有出题的面试官都不走心的,
实际项目肯定是引用类型+值类型混用,难道你没写过? int currLevel =Game.Instance.LevelCount;
值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。
引用类型包括:数组,用户定义的类、接口、委托,object,字符串,null类型,类。
2.C#中所有引用类型的基类是什么
C#基类Object 包名System
3.请简述ArrayList和List的主要区别
Unity3d游戏开发过程中很少见ArrayList,都是用的List<>和[]多,
ArrayList这是老C#人才会用的变量,也可能是从JAVA借鉴过来,JAVA有Hashset做数组变量,
哥一开始学C#1.0对ArrayList的框架很不能理解,ArrayList继承List觉得很多余的?
还有问这个问题的百度一查大把,真心没几个能从历史,当前流行项目,未来趋势等各个方面分析出原因,不过分析出来也没什么乱用,面试官出题的能不能别那么懒?
ArrayList 是一个数组,继承实现了List基类,是比较传统使用的程序数组变量
List是调用List,用了C#的泛型特性
4.请简述GC(垃圾回收)产生的原因,并描述如何避免?
下面是标准答案,其实我倒想问问,你写游戏用String??还用到StringBuilder??
CLR:公共运行时环境,管理托管堆。
CTR:设置引用类型,值类型。
GC:只负责回收托管对象,不负责回收非托管对象。
避免:1)减少new产生对象的次数
2)使用公用的对象(静态成员)
3)将String换为StringBuilder
5.请描述Interface与抽象类之间的不同
抽象类表示该类已经有一些具体的实现,而接口只是定义各方法,并没有具提实现,子类继承抽象父类,可以只是继承部分方法或直接引用父类的方法。类实现接口必须实现该接口所有方法
6.下列代码在运行中会产生几个临时对象?
先不论代码书写是否有错,或者命名的,每个new都会产生临时对象,()括号等同于new,那么应该是6
*假如我问面试官,这2年要如何优化,他不看标准答案,能答出来吗?(其实你的思路可能比他还清晰,因为他工作多年,几年来都不会见到这种代码,那他为什么要出这个题?别为难面试官,人家从百度抄题目下来也是不容易的)
更多关于“unity培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。