ASP.NET+C#面试题
1.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?
尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策
2.ADO.NET相对于ADO等主要有什么改进?
ADO 数据以Recordset 形式存储(Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接),ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范;ADO.NET以DataSet
形式存储,ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导 致的数据类型转换,从而提高了整体性能
ADO中Recordset对数据库持续连接访问;ADO.NET中Dataset提供对数据库断开连接(离线数据库)。
ADO.NET与ADO相比,优势在于提供了数据集和数据适配器,有利于实现分布式处理,降低对数据库服务器资源的消耗。
3.ASP.NET与ASP相比,主要有哪些进步?
asp.net(编译型)可以使用强类型语言页面是编译,执行速度快,
增加安全性和可靠性,通过继承机制来支持代码的重用,提供声明性服务器控件减少代码行数Asp(解释型)需要解释,执行速度慢,重用代码不方便,没有调试机制
4.C#中的委托是什么?事件是不是一种委托?
委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。事件是一种委托
5.C#中 property 与
attribute的区别,他们各有什么用处,这种机制的好处在哪里?
Property(属性):一般是指一对get,set方法,可以称为是类的成员属性,它大部分时候用来对类的成员变量进行读取或赋值。
Attributes(特征):公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。
通俗讲Attribute是类,不过是一类比较特殊的类,Attribute必须写在一对方括号中,用来处理net中多种问题:序列化、程序的安全特征等等.
对于Property,我们可以用Attributes给它加上一些“特性”,比如是否可以序列化等。
6、接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
接口是一个纯粹的抽象类,没有任何实际的东西,只是定义了一个框架,而抽象类里面可以有实际的一个方法,并不要求所有的方法都是抽象的。可以实现一个接口
中的所有方法,也可以继承一个抽象的类,然后覆写其中的方法。接口一般只有方法,而没有数据成员或属性。抽象类有方法,也有数据成员或属性,一般情况下, 优先考虑用接口,只有当可能要访问到数据成员或属性时,用抽象类。
7:谈谈final, finally, finalize的区别。
final 修饰符用于指定类不能扩展或者方法或属性不能重写。它将防止其他类通过重写重要的函数来更改该类的行为。带有 final 修饰符的方法可以由派生类中的方法来隐藏或重载。 finally 块用于清除在 try 块中分配的任何资源。控制总是传递给 finally 块,与 try 块的存在方式无关(待确定)。 finalize允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。
8:new有几种用法
第一种:实例化类 new Class();
第二种:覆盖方法 public new XXXX(){}
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
9:如何把一个array复制到arrayList里
foreach( object o in array ){ arrayList.Add(o) }
10:DataGrid、DataSource可以连接什么数据源
DataSet、DataTable、DataView、IList
11:概述反射、序列化(串行化)、反序列化、持久化
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性。反射就是动态获取程序集信息
序列化:也叫串行化,是将对象转换为容易传输的格式的过程(序列化类的时候是从属性读取值以某种格式保存下来,而类的成员函数不会被序列化,.net存在的几种默认序列化:二进制、XML、JSON).
反序列化是将存储的数据转化为原来的对象。
持久化的对象:已经存储到数据库或保存到本地硬盘中的对象,我们称之为持久化对象
12:概述OR/Mapping 的原理
利用反射,配置 将类同数据库表的映射
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68739.html