C#面试题

1. C#中的委托是什么?事件是不是一种委托?
委托可以把一个方法作为参数代入另一个方法,委托可以理解为指向一个函数的引用。
是,是一种特殊的委托

 

2. override与重载的区别

        重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
        override 是进行基类中函数的重写。为了适应需要。

 

3. 实现冒泡算法

int [] array = new int [3] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
    for (int j = i + 1 ; j < array.Length ; j++)
    {
        if (array[j] < array[i])
        {
            temp = array[i] ;
            array[i] = array[j] ;
            array[j] = temp ;
        }
    }
}

 

4.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
          可以用任意类型。

 

5.什么叫应用程序域?
           Net的运行环境,CLR将程序分成一个或多个逻辑区域就叫应用程序域AppDomain。

 

6. CTS、CLS、CLR分别作何解释?
           CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运行库。

 

7. 什么是装箱和拆箱?
            从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

 

8.什么是受管制的代码?
        unsafe:非托管代码。不经过CLR运行。

 

9.什么是强类型系统?
        RTTI:类型识别系统。

 

10.在.net中,配件的意思是?
        程序集。(中间语言,源数据,资源,装配清单)

 

11.  根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。

public void test(int i)
{
      lock (this)
      {
            if (i > 10)
           {
                    i--;
                    test(i);
            }
       }
 }

不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)

 

12.能用foreach遍历访问的对象需要实现______接口或声明_______方法的类型。
         答:IEnumerable 、 GetEnumerator。

 

13.GC是什么? 为什么要有GC?
         GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
         System.gc() , Runtime.getRuntime().gc()

 

14.abstract class和interface有什么区别?

         abstract类: 有一个抽象方法的类叫抽象类

         interface接口: 只能包含方法,委托,事件,属性,这些都是为实现(抽象的)

 

15. 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
         接口可以继承接口。抽像类可以实现(implements)接口,抽像类是否可继承实体类,但前提是实体类必须有明确的构造函数。

 

16. 构造器Constructor是否可被override?
      构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

 

17. 是否可以继承String类?
      String类是final类故不可以继承。

posted @ 2015-07-24 17:56  盘子脸  阅读(283)  评论(0编辑  收藏  举报