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存放了一个可变的字符串,并提供一些对这个字符串修改的方法。
每天学习一点点!