一、面向对象程序思想web
面向对象是程序开发的一种机制,特征为封装、继承、多态。以面向对象方式编写程序时,将复杂的项目抽象为多个对象互相协做的模型,而后编写模型结构,声明或实现类型的成员,即描述对象的特征和行为,编写不一样的类型解决或完成不一样的功能,在程序中经过类的实例处理解决实际问题。c#
二、类和对象区别缓存
类(Class)指一类事物,对象(Object)指属于这一类事物的实体;安全
类定义了对象的相关数据和方法,类经过构造函数生成对象,对象实现了类的定义,且拥有具体的数据。性能优化
三、修饰符做用服务器
private 所属类内部能够访问,某些状况能够经过get或set进行读取或修改。cookie
protected 所属类及子类的内部访问。数据结构
internal 同一程序集内部访问。ide
public 公共访问权限,无限制。函数
四、sealed修饰符
用于修饰类、实例方法和属性,修饰类时,该类没法被继承,因此也称为密封类。
abstract(抽象类)必须被继承才有意义,故两者不能共存。
五、override和overload
overload 方法名相同,函数签名不一样,屡次overload能够适应不一样须要。
override 对基类的拓展或改写,签名必须保持一致。
六、接口和抽象类
两者皆没法被实例化,而且未实现部分都由派生类实现,抽象类只能派生类,接口能够派生类和结构。
抽象类的派生类也能够说是受限类,即抽象成员在派生类中不必定被实现。
接口则要求派生类或结构彻底实现其成员。
抽象类能够包含已经实现的成员,能够包含字段;
接口只包含未实现的成员,不能包含字段。
类只能继承一个抽象类,但能够继承多个接口。
七、this和base
this用于引用类的当前实例,base用于派生类访问基类成员。
八、简述程序集和应用程序域
程序集用于解决DLL相关的问题,是自我描述的安装单元,是逻辑单元,而非一个文件。
程序集可使包含元数据的多个文件,也能够是一个dll或者exe执行文件。
动态程序集位于内存之中,而非存储文件。
应用程序域是.NET中的程序边界。
九、.NET程序编译过程
由多种高级语言编写,如c#,vb,最后会被各自编译器编译为一致的中间语言(IL)。而后又CLR(公共语言进行时)提供运行环境,将中间语言编译为机器码供CPU执行。
中间语言采用即时编译,也称JIT编译。这种方式只编译调用的代码部分,编译过的部分存储于内存,下次执行无需再次编译,退出程序时,已编译部分的代码会被清除。
十、.NET程序中间语言(IL)又称为托管代码,优势为平台无关性,JIT性能优化,语言互操做性。
十一、using和命名空间
using可用于引用命名空间,自动释放对象使用的资源,添加别名。
引用命名空间:
using System;
自动释放对象使用资源
using(SqlConnection con=new SqlConnection(conntsr)){
con.Open();
}
添加别名
using S=System;
命名空间反映程序中的逻辑关系,且有效避免类名冲突。表明各类类的逻辑组织方式,与物理组织方式无关。
用namespace关键字能够自定义命名空间。
十二、值类型和引用类型
值类型包含数据,引用类型只包含数据的内存地址。
值类型只要离开其定义的做用域,就会从内存中被清除,引用类型引用对象一直存留在托管堆,.NET收集器将自动将其销毁。
1三、结构和类
结构类型是值类型的数据封装体,可用于封装较简单的数据结构,而且和类共享大多数语法。
结构不支持继承,全部结构直接继承自System.ValueType。
结构没法声明无参数的构造函数以及析构函数,由于编译器将提供一个默认的构造函数,并将成员进行初始化。可声明带参的构造函数。
结构的静态字段可直接赋初值,实例成员则不容许。
因为结构类型是值类型,全部实例化能够不使用new运算符。结构的new操做不执行分配内存操做,只执行初始化。
1四、栈和堆
栈指堆栈,堆指托管堆,堆栈可用于存储非实例成员的值类型数据,以及引用类型的变量;而托管堆可用于存储引用类型实例的数据和相关信息。
1五、委托 delegate --
可理解为指向一个函数的引用,事件是一种特殊的委托。
1六、页面传值方法
QueryString 使用简单,但缺少安全性,值暴露于url,中文需转码。
Session 使用简单,可传递简单数据类型和对象,数据大小无限制,消耗较多服务器资源。
Cookie 使用简单,跨页面表单使用cookie保持用户状态,但易被人认为收集用户隐私。
Server.Transfer 直接在服务器端重定向,使用简单,减小客户端对服务器请求,可传递数据类型和控件的值,但因为url地址不变,若源页面与目标页面不在同一目录或子目录下,使用相对路径的图片、超连接都会错误指向。
Application 使用简单,消耗较少服务器资源,数据大小无限制,可传递数据和对象,但做为全局变量容易被误操做。
缓存 整页缓存,实现简单,消耗服务器内存;片断缓存,节省内存,但实现麻烦;应用程序缓存,不局限缓存网页,但实现复杂。
1七、经常使用调用WebService方法
WSDL.exe命令行工具生成代理类,而后在代码里引用这个类文件
.net程序中添加引用、添加服务引用。
Http协议的Get,Post
HttpClient调用
1八、string str=null,不分配内存空间,string str=“”,分配长度为空字符串的内存空间。
1九、线程和进程
Thread和Process都定义了某种边界。
Thread定义的是代码执行堆栈和执行上下文的边界。
Process定义的是应用程序的边界,不一样进程之间不能共享代码和数据空间。
一个进程可包含多个线程。
单个进程能访问的最大内存量为最大虚拟内存的1/2。
20、Windows服务
运行在后台指定用户(System)下的应用程序,无标准UI界面。在服务开始时建立,在服务结束时销毁。
2一、GAC
全局应用程序集缓存,解决了几个程序共享某一个程序集的问题,没必要将被共享的程序集拷贝到应用程序目录下了。
.NET程序加载时首先查看GAC,有则直接使用,没有就再去应用程序目录下查找。
2二、ADO.NET五大对象
Command
Connection
DataReader
DataSet
DataAdapter
2三、TCP/IP端口能侦听多少进程
可侦听多个进程(端口复用)。
端口复用代码:
1 Socket soc1=new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp); 2 soc1.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235)); 3 soc1.listen(10); 4 soc2.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true); 5 soc2.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235)); 6 soc2.listen(10); 7 Console.Read();
2四、 asmx的XML Web服务和SOAP的.Net Remoting
web服务使用消息机制,Remoting采用RPC。Web Service能用于不一样平台,Remoting只适用于.Net。
Remoting效率高于XML Web Service。
----未完待续