标签:
1. .NET中类和结构的区别?
答:结构和类具有大体的语法,但是结构受到的限制比类要多。
a. 结构不能有默认的构造函数,因为结构的副本是用编译器创建和销毁的,所以不需要默认的构造函数和析构函数。
b. 结构是值类型, 所以对结构变量所做的改变不会影响其原值,而类是引用类型,改变其变量的值会改变其原值。
c. 声明结构用Struct关键字,声明类用class关键字,向方法传递结构是通过其值传递的,而不是通过引用。
d. 与类不同,结构的实例化可以不使用New关键字。类可以实现接口。
2. 死锁的必要条件?怎么克服?
答:系统的资源不足,进程的推进顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放。
进程获得资源时,未使用完前,不能强行剥夺。
3. 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
答:接口是可以继承接口的
抽象类是可以实现接口的
抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。
4. 构造器(构造函数)Constructor是否可以被继承?是否可以被Override?
答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading). 注: 继承和重写针对不同的类中,而重载针对本类中。
5. 当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
答: 不可以,一个对象的方法只能由一个线程访问。
6. 用最有效的方法算出2的3次方等于8?
答:左移运算符, 2<<3
7. C#是否可以对内存直接进行操作?
答:这个问题比较难回答,也是个很大的问题。但是可以这样回答,C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前方加unsafe, 在.NET中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。
8. Error和Exception有什么区别?
答:Error表示系统级的错误和程序不必处理的异常,是.net运行环境中的内部错误或者硬件问题。比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。
Exception表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
9. 谈谈final, finally, finallize的区别?
答:final用于声明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
finally是异常处理语句结构中,表示总是执行的部分。
finallize表示是object类的一个方法,在垃圾回收机制中执行的时候会被调用的被回收对象的方法。
10. HashMap和Hashtable的区别?
答:HashMap是Hashtable的轻量级实现,非线程安全的实现,他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。
11. Collection和Collections的区别?
答:Collection是集合类的上级接口,本身是一个Interface,里面包含了一些集合的基本操作。Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
12. C#中委托是什么?事件是不是一种委托?
答:委托是一种安全的类似于函数指针,但是它比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。
事件是一种消息机制,是一种特殊的委托。
委托不带方法体。
13. Override和Overload的区别?
答:Override是重写的意思,它表示重写基类的方法,而方法的名称,返回类型,参数类型,参数个数都要与基类相同。
Overload是重载的意思,它表示重写基类或本类的方法,只要方法名相同,别的可以不同。
标签:
原文地址:http://www.cnblogs.com/qixue/p/5230289.html