Unity面试题1

1.在类的构造函数前加上static会报什么错?为什么?

答:在构造函数如果有public修饰的静态构造函数时会报:“静态构造函数中不允许出现访问修饰符”,如果什么修饰符都不加的话不会报错,静态构造函数一般是起初始化作用。�

2.C#

StringBuilder类型比string类型的优势是什么?

答:StringBuilde的优势在于拼接,string的优势在于对字符串做一些处理,在使用过程中看具体的需求。

3.C#函数Func(string

a, string b)用Lambda表达式怎么写?

答:(a,b)=>{}

4.数列1,1,2,3,5,8,13...第n位数是多少?用C#递归算法实现


Unity面试题1_第1张图片

5.请简述值类型与引用类型的区别

答:区别:

1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中

存放的地址。

2.值类型存取快,引用类型存取慢。

3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。

4.栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放。

5.值类型继承自System.ValueType,引用类型继承自System.Object。

6.请简述ArrayList和List<>的主要区别

答:ArrayList是非泛型列表,存储数据时把所有的数据都当成object类型存储,存在装箱问题,取出来使用的时候存在拆箱问题,装箱拆箱会使性能变差,而且存在数据安全问题,但是优点在于可以让值类型和引用类型互相转换。

List是泛型列表,在使用的时候才去定义数据类型,泛型避免了拆箱装箱的问题,存入读取速度较快,类型也更安全。

7.请简述GC(垃圾回收)产生的原因,并描述如何避免?

答:GC回收堆上的内存避免:

1)减少new产生对象的次数

2)使用公用的对象(静态成员)

3)如果字符串拼接多的将String换为StringBuilder

8.请描述Interface与抽象类之间的不同

答:语法不同处:

1.抽象类中可以有字段,接口没有。

2.抽象类中可以有实现成员,接口只能包含抽象成员。

3.抽象类中所有成员修饰符都可以使用,接口中所有的成员都是对外的,所以不需要修饰符修饰。

用法不同处:

1.抽象类是概念的抽象,接口关注于行为。

2.抽象类的子类与父类的关系是泛化关系,耦合度较高,而实现类和接口之间是实现的关系,耦合度比泛化低。

3.一个类只能继承一个类,但是可以实现多个接口。

11.请简述关键字Sealed用在类声明和函数声明时的作用

答:Sealed访问修饰符用于类时,该类是密封类,可防止其他类继承此类。

在方法中使用时则可防止派生类重写此方法。

13.反射的实现原理?

答:审查元数据并收集关于它的类型信息的能力。

14.Net与Mono的关系?

答:mono是.net的一个开源跨平台工具。.net只能在windows下运行,mono可以实现跨平台,可以运行于linux,Unix,Mac OS等。

15.请说出4种面向对象的设计原则,并分别简述它们的含义。

答:1)单一职责原则:一个类,最好只做一件事,只有一个引起它的变化.

2)开放-封闭原则:对于扩展是开放的,对于更改是封闭的

3)里氏替换原则:子类必须能够替换其基类

4)依赖倒置原则:依赖于抽象

5)接口隔离原则:使用多个小的专门的接口,而不要使用一个大的总接口。

16.Hashtable是无序的吗?

答:电脑没有绝对的无序,hashtable是通过哈希码让开发者感觉无序。

你可能感兴趣的:(Unity面试题1)