<C#>面试题集锦

1、装箱和拆箱的分别?

答:装箱就是把值类型转换成引用类型;拆箱就是把引用类型转换成值类型。

2、怎样创建一个线程?

答:一使用Thread类;二使用Delegate.BeginInvoke;三使用ThreadPool.Queueworkitem。

3、String是值类型,还是引用类型?与StringBuilder的区别?

答:String是引用类型。String对象的内容是不变的,StringBuilder对象的内容是可以改变的且高效。

如 string a = "abc"; a = a + "def" ; 第一句,a 是一个对象,分配地址;第二句,a 被释放,重新分配。a 原本指向 String Object Instance(“abc”), a + “def” 会造出一新的 String Object Instance(“abcdef”),然后,a指向新的String Instance。

StringBuilder b = new StringBuilder(“abc”); b.append("def"); b 一直指向StringBuilder Object。

4、Event和delegate的区别?

答:delegate类似C#中的指针,例如传递一个类A的方法给另一个类B的对象,让类B的对象可以调用类A的方法。event是特殊类型的多路广播委托,仅可从声明它们的类或结构中调用。

5、指针和delegate的区别?

答:首先,指针是C++中类型,delegate是C#中的类似指针。其次,指针指向静态函数,而delegate既可以指向静态函数,又可以引用非静态函数。最后,与指针相比,delegate是面向对象,类型安全,可靠的受控对象。

6、泛型的实现?

答:泛型会依据类型参数新建一个匿名类,其参数、返回值,依类型参数而定。http://msdn.microsoft.com/zh-cn/library/512aeb7t.aspx

7、什么是C#?什么是.Net FrameWork?

答:C#是一门开发语言,是由C及C++演变而来的。.net framework类似于JVM,是微软Web Service的引擎。.Net FrameWork由两部分组成,分别是公共语言运行时(CLR),统一类库集(FCL)。

8、多态是什么?通过什么来继承?通过什么来隐藏基类?

答:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。多态是通过override来实现的,通过继承父类的virtual方法。使用new关键字,调用的是新的类成员,而不是已被替换的基类成员,基类成员就被称为隐藏成员。

9、如何实现多线程的同步?

答:维护自由锁(InterLocked)实现同步;监视器(Monitor)和互斥锁(Lock);读写锁(ReadWriteLock);系统内核对象:1、互斥,信号量,事件;2、线程池。

原文地址:https://www.cnblogs.com/virgil/p/3719835.html