C#基础概念面试题(更新中)

1.面向对象的三个基本特征?

答:封装(encapsulation)、继承(Inheritance)、多态(polymorphisn)。

封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

多态:实现多态,有二种方式,重写(override)、重载(overload)。

2.引用类型(Reference Type)和值类型(Value Type)的区别?

答:引用类型存储在堆上,包含一个指向实例的指针,默认赋值为null;

值类型存储在堆栈上,存储的是一个实际值,默认赋值为空。

C#中值类型包括:结构体(数值类型、bool型、用户定义的结构体)、枚举、可空类型。

引用类型包括:数组、用户定义的类、接口、委托、Object、字符串。

3.结构(Struct)和类(Class)的区别?

答:结构为值类型,没有默认的构造函数,没有析构函数,不能继承和被继承,变量不能直接初始化,可以不New而直接声明,不能修饰符;

类为引用类型,有构造函数和析构函数,可以继承和被继承,声明时必须先New才能被使用。

相同点:可以实现多个接口,都由Object类派生。

4.C#中引用类型(Reference Type)和值类型(Value Type)都有哪些?

答:值类型:整型(int)、长整型(long)、浮点型(float)、字符型(char)、布尔型(bool)、枚举(enum)、结构(struct);

引用类型:类(class)、字符串(string)、接口(interface)、数组(int[],string[])、集合(arraylist)。

5.什么是装箱(boxing)和拆箱(unboxing)?

答:装箱就是值类型转换为引用类型,拆箱就是引用类型转换为值类型。

6.判断空字符串的几种方法?

答:string str="";

1.if(str=="")判断速度最慢

2.if(str==string.Empty)

3.if(str.Length==0)判断速度最快

7.开放系统互连(OSI,Open System Interconnection)模型的七层结构?

答:从上往下:

应用层(A),表示层(P),会话层(S),传输层(T),网络层(N),数据链路层(DL),物理层(PH)。

8.说出你知道的几种常用通信协议?

答:1.TCP/IP协议:(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议),分四层,应用层、传输层、互联网层、网络接口层。

2.SOAP协议:(Simple Object Access Protocol,简单对象访问协议),基于XML的协议。

3.UDP(User Datagram Protocol,用户数据报协议)。

4.HTTP(Hyper Text Transfer Protocol,超文本传输协议)是万维网(www,world wide web)的基础,属于应用层的页面对象的协议。

5.FTP(File Transfer Protocol,文件传输协议)是网际提供的用于访问远程机器的一个协议,使用户可以在本地与远程机器之间进行有关文件的操作。

9.C#中虚函数(Virtual),抽象类(Abstract)和接口(Interface)有什么区别?

答:虚函数,可以被Override的函数。

 抽象类,不能被直接实例化的类。

接口,只有函数定义,没有函数实现,只能被继承,不能被实例化的类,相当于纯抽象类,可以实现多继承。

10.Const和Readonly有什么区别?

答:const关键字用来声明编译时常量,readonly用来声明运行时常量。

11.System.String 和System.StringBuilder有什么区别?

答:System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。

posted @ 2009-02-28 21:24  周枫  阅读(2080)  评论(0编辑  收藏  举报