常规技术面试题(.NET)41-50

41. 在下面的例子里

  using System;
  class A
  {
  public A()
  {
   PrintFields();
  }
   public virtual void PrintFields(){}
}
  class B:A
  {
    int x=1;
    int y;
    public B()
   {
      y=-1;
     }
     public override void PrintFields()
     {
      Console.WriteLine(“x={0},y={1},x,y);
     }

当使用new B()创建B的实例时,产生什么输出?

创建子类对象时,先调用父类构造方法,再调用子类构造方法,当调用父类构造方法时,由于还未调用子类构造方法,因此,x=1,y=0,当调用父类构造方法时,在父类构造方法中将调用PrintFields()方法,而该方法为虚方法且被子类重写,由于目前为子类对象,因此,调用子类重写后的PrintFields()方法,故输出:X=1,Y=0。

42. 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i 〈 Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum -=i ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;

43. 描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

不是。可以用任意类型。

44. NET中读写XML的类都归属于哪些命名空间?

答:System.Xml

45. CLR与IL分别是什么含义?

CLR:Common Language Runtime,公共语言运行时,是一套完整的、高级的虚拟机,它被设计为用来支持不同的编程语言,并支持它们之间的互操作。

IL,中间语言,也称MSIL,微软中间语言,或CIL,通用中间语言;所有.NET源代码在进行编译时都被编译成IL,IL独立于CPU的指令集,与平台无关。在应用程序运行时被即时(Just-In-Time,JIT)编译器处理成为机器码,被解释及执行。

46. 进程与程序的区别?

(1)进程是动态的,而程序是静态的。

(2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。

(3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。

47. 私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。

共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

48. New有几种用法

在 C# 中,new 关键字可用作运算符、修饰符或约束。

1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。

2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。

3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。

49. 接口是否可继承接口?抽象类是否可实现接口?抽象类是否可继承类?

在C#中,接口可以继承接口,但不是实现接口,因为,接口中不能存在实现的成员。

抽象类与普通类无差异,只是不能被实例化而已,因此,抽象可以实现接口,也可以继承类,但抽象类一般作为父类使用。

50. 什么是类和对象以及关系?

对象:一种具有状态(属性)和行为(方法)的编程实体,用于描述现实世界的某个具体事物。
类:具用一系列对象共同特征和行为的通用类型。

对象和类的关系:

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类,类描述了一组有相同属性和相同方法的对象。

小剧场:在困难前面不后退。Don’t step back in front of difficulties.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章