1、简述 private、 protected、 public、 internal 修饰符的访问权限。
private 私有成员 只有类成员才能访问
protected 保护成员 只有该类及该类的继承类才能访问
public 公共成员 没有访问限制
internal 只有当前程序集内才能访问
2、ADO.NET中的五个主要对象
connection 用于程序及数据库的连接
command 对数据库发出指令
DataAdpter 是数据源和DataSet的桥梁
DataSet 是数据的缓存,只是数据在计算机中的一块内存,无法直接沟通数据源,只能通过DataAdpter进行沟通
DataRead 循环读取数据
3、页面之间传递值的几种方式。
1.queryString 如 .....?id=1
2.session
3.cookie
4.Server.Transfer传值
5.Appcation传值
6.PreviousPage
Server.Transfer和Response.Redirect的区别
Server.Transfer 在服务器内部直接跳转到本地虚拟机的一个网页,浏览器地址不变,如果刷新地址会重回到旧地址页面。
Response.Redirect 跳转后,浏览器地址随之变化。
4、C#中的委托是什么?事件是不是一种委托?事件和委托的关系。
委托是一种类型,事件是一个对象。
委托是指向一个函数的指针。
事件的内部是通过委托来实现的。
事件只包括private的委托以及add,remove方法。
5、override与重载(overload)的区别
override是面向对象的,是对父类方法的重写
overload是面向过程的,方法名一样,但是参数名或参数个数不一样。
6、C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?
7、属性和public字段的区别是什么?
属性在处理过程中可以非法赋值。
一般情况下,字段的get方法取到的就是set方法赋予的值。
但是如果像
public name
{
get{return 100;}
set{}
}
那么get方法取到的值和set方法赋予的值就不一致。
8、三层架构
U(UI)B(BLL)D(DAL)
U:表现层 与用户的交互界面
B:业务逻辑层 根据数据访问层层取到的数据,根据业务逻辑进行处理。
D:数据访问层 直接对数据库进行增删改查
思想:高内聚,低耦合
优点:良好的扩展性,分工明细,层次分明
缺点:成本高
9、MVC模式
V :表现层 与用户的交互界面
M: 业务逻辑层 根据数据访问层层取到的数据,根据业务逻辑进行处理,数据封装。
C: 表现层与业务逻辑层之间的桥梁,根据不同的界面调用业务逻辑
10、什么是装箱(boxing)和拆箱(unboxing)? (*)
装箱 : 值类型转换成引用类型
拆箱: 引用类型转换成值类型
装箱 object obj = 1;
拆箱 int i = (int)obj;
11、什么叫应用程序域
一种边界,他是公共语言运行库围绕同一程序范围内创建的对象建立。
应用程序域有助于一个程序中创建的对象与其他程序创建的对象隔离,使运行时行为可以预知。
一个独立进程可以包含多个应用程序域,可以理解为是一个轻量型的进程。起到安全的作用。占用资源少。
12、CTS、CLS、CLR分别作何解释(*)
CTS : Common Type System 通用系统类型。
CLS : Common Language Specification 通用语言规范。不同语言的语法不同
CLR: Common Language Runtime 公共语言运行时 .NET提供的类。
13、在dotnet中类(class)与结构(struct)的异同?
类是引用类型,可以被实例化,被分配到内存的堆上。传递时是引用传递。
结构是值类型,参数传递时被复制传递,被分配到内存的栈上。
14、堆和栈的区别?
栈是编译时分配的内存空间,在代码中必须对栈的大小有明确的定义。值类型参数,值类型局部变量都分配到栈上。
堆是程序运行时分配的内存空间。在程序运行时,可以根据情况分配内存的大小。
15、能用foreach遍历访问的对象的要求
需要是实现IEnumberable接口的类型或是声明了GetEnumberatr方法的类型。
16、GC是什么? 为什么要有GC?
GC是垃圾收集器。GC只能处理托管在内存资源的释放,对非托管的资源无法回收。需要手动调用IDispose()方法进行回收。
17、String s = new String("xyz");创建了几个String Object?
两个,一个是“xyx”,一个是指向“xyx”的引用对象。
18、值类型和引用类型的区别?
1.值类型传递时是复制传递。引用类型传递时是引用传递,并不会复制对象本身,而只是复制一个指向对象的引用。
2.值类型不能派生类,所有值类型都派生自System.TypeVaule。但是和引用类型相同的是,结构可以实现接口。
3.值类型不能包含null,但是非空类型允许将null赋给值类型。
4.所有值类型都一个隐式构造函数来初始化默认值。
19、C#中的接口和类有什么异同。
不同点:
接口不能实例化
接口可以多继承,类只能单个继承
接口不包括方法的声明。
类定义可以在不同源文件中拆分。
相同点:
类,接口,结构都可以实现对多个接口的继承。
接口和类都可以定义属性,方法,索引,事件。
接口类似于抽象基类。继承接口的所有非抽象基类必须实现接口的所有成员。
20、abstract class和interface有什么区别
相同点:都不能被实例化,可以通过继承实现其抽象方法。
不同点:
接口支持多继承,抽象类只能单个继承。
接口不包含方法的实现,抽象类既可以定义行为,可以提供实现。
接口可以实现回调,但是抽象类不能实现回调,因为继承不支持。
接口只包含事件,方法,索引器,属性的的定义。但是不能包含字段和方法的实现。
抽象类可以包含方法,属性,字段及可以实现的方法。
接口可以用于值类型和引用类型,抽象类只能用于引用类型。
21、是否可以继承String类?