1.在类的构造函数前加上static会报什么错?为什么?
答:在构造函数如果有public修饰的静态构造函数时会报:“静态构造函数中不允许出现访问修饰符”,如果什么修饰符都不加的话不会报错,静态构造函数一般是起初始化作用。�
StringBuilder类型比string类型的优势是什么?
答:StringBuilde的优势在于拼接,string的优势在于对字符串做一些处理,在使用过程中看具体的需求。
3.C#函数Func(string
a, string b)用Lambda表达式怎么写?
答:(a,b)=>{}
4.数列1,1,2,3,5,8,13...第n位数是多少?用C#递归算法实现
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是通过哈希码让开发者感觉无序。