【目的以及说明】:
记录Net面试的题目,方便自己以及各位面试者,其来源都是网络以及自己面试中的题记
do yourself
【基础】
1.面向对象的三个基本特征?
封装(encapsulation)、继承(Inheritance)、多态(polymorphisn)。
封装:把客观事物封装成抽象的类,并且类只向可信的类或者对象提供数据和方法操作,隐藏自身实现。
继承:从现有类的基础上,使用所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
多态:实现同名函数的不同执行。有:继承作用下的重写 override,同命名空间范围内同函数名同返回不同参数下的重载overloads
2.引用类型(Reference Type)和值类型(Value Type)的区别?
引用类型,存储在堆上,包含一个指向实例的指针,默认赋值为null;
值类型,存储在堆栈上,存储的是一个实际值,默认赋值为空。
C#中
值类型包括:结构体(数值类型、bool型、用户定义的结构体)、枚举、可空类型。
引用类型包括:数组、用户定义的类、接口、委托、Object、字符串。
3.结构(Struct)和类(Class)的区别?
结构为值类型,没有默认的构造函数,没有析构函数,不能继承和被继承,变量不能直接初始化,可以不New而直接声明,不能修饰符;
类为引用类型,有构造函数和析构函数,可以继承和被继承,声明时必须先New才能被使用。
相同点:可以实现多个接口,都由Object类派生。
测试二者,在C#中,默认都是private访问。对外都需要Public修饰
在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。
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用来声明运行时常量。
http://www.cnblogs.com/GoGoagg/archive/2005/09/08/232320.html
11.System.String 和System.StringBuilder有什么区别?
System.String是不可变的字符串。
System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。
问:string A = "";A = A + "new string";
A所在地址发生变化没有??
以前学习string和StringBuilder总结:
http://www.cnblogs.com/GoGoagg/archive/2005/09/07/231764.html
string.Join的应用:
这个类似Replace方法的应用。
举例:
原字符串:*;|@123***456@|;*
输出字符串:123456
http://www.cnblogs.com/GoGoagg/archive/2008/07/17/1245223.html
12、new的用法
在 C# 中,new 关键字可用作运算符、修饰符或约束。
new 运算符
用于创建对象和调用构造函数。
new 修饰符
用于向基类成员隐藏继承成员。
new 约束
用于在泛型声明中约束可能用作类型参数的参数的类型。