趁着在放假时候,给你们总结一点笔试面试上的东西,也恰好为年后跳槽作一点小积累。面试
下面的参考解答只是帮助你们理解,不用背,面试题、笔试题变幻无穷,不要梦想着把题覆盖了,下面的题是供你们查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。回答问题的时候能联系作过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。数据库
private: 私有成员,在类的内部才能够访问。服务器
protected :保护成员,该类内部和继承类中能够访问。网络
public :公共成员,彻底公开,没有访问限制。架构
internal:当前程序集内能够访问。ide
一、接口是一组规则的集合,它主要定义的是事物的规则,体现了是这种类型,你就必须有这些规则的概念。它的目的主要是依赖倒置和松耦合,从这点来讲,接口不能省掉或者用抽象类代替。总而言之,接口和抽象类不可同日而语。函数
二、抽象类主要用于公共实现和约束子类必须重写。spa
三、用一句话归纳接口和抽象类的区别:使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性(依赖倒置)。至于使用的时候究竟是用接口仍是抽象类,看具体 的状况。.net
委托能够把一个方法做为参数代入另外一个方法。指针
委托能够理解为指向一个函数的指针。
委托和事件没有可比性,由于委托是类型,事件是对象。下面说的是委托的对象(用委托方法实现的事件)和(标准的event方式实现)的事件区别。事件的内部是用委托实现。由于对于事件来说,外部只能"注册本身+= 、注销本身-=",外界不能够注销其余的注册者,外界不能够主动触发事件,所以若是用delegate就无法进行上面控制,所以诞生事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List 。事件只能add、remove本身,不能赋值。事件只能+=,-=,不能=.加分的补充回答:事件内部就是一个private 的委托和add ,remove两个方法。
重载是的名称相同。参数或参数类型不一样,进行屡次重载以适应不一样的须要。重载(overload)是面向过程的概念。
Override 是进行基类中函数的重写。Override是面向对象的概念
什么是装箱(boxing) 和拆箱(unboxing)
object 是引用类型,但时它的子类Int32 居然不能去object 能去的"要求必须是引用类型"的地方,违反了继承的原则,因此须要间Int32装在object 才能传递。
装箱:从值类型接口转换到引用类型。
拆箱:从引用类型转换到值类型。
1 object obj = null;//引用类型 2 obj = 1;//装箱,boxing。把值类型包装为引用类型。 3 int i1 = (int)obj;//拆箱。unboxing
分析: 在inboxing (装箱)时是不须要显式的类型转换的,不过unboxing(拆箱)须要显式的类型转换。要掌握装拆箱,就必须了解CTS及它的特色
.Net 重要技术和基础之一的CTS (Common Type System) ,CTS是为了实如今应用程序声明和使用这些类型时必须遵循的规则而存在的通用类型系统。
.Net将整个系统的类型分红两大类 :值类型和引用类型。
CTS中的全部东西都是对象;全部的对象都源自一个基类——System.Object类型。值类型的一个最大的特色是它们不能为null,值类型的变量总有一个值。为了解决值类型不能够为null,引用类型能够为null的问题,微软在.Net中引入了装箱和拆箱:装箱就是将值类型用引用类型包装起来转换为引用类型;而从引用类型中拿到被包装的值类型数据进行拆箱。
(*)object.ReferenceEquals();//用来判断两个对象是不是同一个对象
Console.WriteLine(object.ReferenceEquals(3,3));//由于两个3被装到了两个箱子中,因此是false
Equals ==的关系