收集面试题目Net

【目的以及说明】:

记录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 约束
用于在泛型声明中约束可能用作类型参数的参数的类型。

原文地址:https://www.cnblogs.com/GoGoagg/p/1795770.html