asp⾯试题(很全⾯,总共125题)
1.维护数据库的完整性、⼀致性、你喜欢⽤触发器还是⾃写业务逻辑?为什么?
答:尽可能⽤约束(包括CHECK、主键、唯⼀键、外键、⾮空字段)实现,这种⽅式的效率最好;其次⽤触发器,这种⽅式可以保证⽆论何种业务系统访问数据库都能维持数据库的完整性、⼀致性;最后再考虑⽤⾃写业务逻辑实现,但这种⽅式效率最低、编程最复杂,当为下下之策。
2.什么是事务?什么是锁?
答:事务是指⼀个⼯作单元,它包含了⼀组数据操作命令,并且所有的命令作为⼀个整体⼀起向系统提交或撤消请求操作,即这组命令要么都执⾏,要么都不执⾏。
锁是在多⽤户环境中对数据的访问的限制。SqlServer⾃动锁定特定记录、字段或⽂件,防⽌⽤户访问,以维护数据安全或防⽌并发数据操作问题,锁可以保证事务的完整性和并发性。
3.什么是索引,有什么优点?
答:索引像书的⽬录类似,索引使数据库程序⽆需扫描整个表,就可以在其中到所需要的数据,索引包含了⼀个表中包含值的列表,其中包含了各个值的⾏所存储的位置,索引可以是单个或⼀组列,索引提供的表中数据的逻辑位置,合理划分索引能够⼤⼤提⾼数据库性能。
4.视图是什么?游标是什么?
答:视图是⼀种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进⾏增改查操作;
视图通常是⼀个或多个表的⾏或列的⼦集;
视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相⽐多表查询更⽅便),限制数据检索(⽐如需要隐藏某些⾏或列),维护更⽅便。
游标对查询出来的结果集作为⼀个单元来有效的处理,游标可以定位在结果集的特定⾏、从结果集的当前位置检索⼀⾏或多⾏、可以对结果集中当前位置进⾏修改、
5.什么是存储过程?有什么优点?
答:存储过程是⼀组予编译的SQL语句
它的优点:1.允许模块化程序设计,就是说只需要创建⼀次过程,以后在程序中就可以调⽤该过程任意次。
2.允许更快执⾏,如果某操作需要执⾏⼤量SQL语句或重复执⾏,存储过程⽐SQL语句执⾏的要快。
3.减少⽹络流量,例如⼀个需要数百⾏的SQL代码的操作有⼀条执⾏语句完成,不需要在⽹络中发送数百⾏代码。
4.更好的安全机制,对于没有权限执⾏存储过程的⽤户,也可授权他们执⾏存储过程。
6.什么是触发器?
答:触发器是⼀种特殊类型的存储过程,出发器主要通过事件触发⽽被执⾏的,
触发器的优点:1.强化约束,触发器能够提供⽐CHECK约束;
2.跟踪变化,触发器可以跟踪数据库内的操作,从⽽不允许未经允许许可的更新和变化;
3.联级运算,⽐如某个表上的触发器中包含对另⼀个表的数据操作,⽽该操作⼜导致该表上的触发器被触发
7.简单介绍下ADO.NET和ADO主要有什么改进?
答:ADO以Recordset存储,⽽ADO.NET则以DataSet表⽰,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据库服务器资源的消耗。
7.1 ASP.NET与ASP相⽐,主要有哪些进步?
答:ASP.NET实现了⾯向对象编程,预编译的服务器端代码⽽不像ASP那样解释执⾏提⾼了性能,代码分离易于管理,可订制和扩展性,功能强⼤的开发⼯作,更好的安全机制。
7.2 C#中的委托是什么?事件是不是⼀种委托?
答:委托本质上是⼀种“⽅法接⼝”,它相当于C/C++中的函数指针,当然它⽐函数指针安全,在C#中通常⽤于事件处理。事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托。
8.如何把⼀个array复制到arrayist⾥?
答:foreach( object arr in array)arrayist.Add(arr);
8.1 列举ADO.NET中的五个主要对象,并简单描述。
答:Connection连接对象,Command执⾏命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,⽀持增删查
询,DataSet数据级对象,相当与内存⾥的⼀张或多张表。
9.概述三层结构体系。
答:表⽰层(UI),业务逻辑层(BLL),数据访问层(DAL)
10.什么是装箱和拆箱?什么是重载?
答:装箱就是把值类型转成引⽤类型,拆箱相反把引⽤转换成值类型。
重载就是指⼀个⽅法名相同,参数个数不相同,返回值可以相同的⽅法。
多表查询sql语句面试题11.简述WebService
答:WebService服务可以描述为可以在web上部署并可以被任何应⽤程序或其他服务调⽤的功能。所谓服务就是系统提供⼀组接⼝,并通过接⼝使⽤系统提供的功能,WebService服务可以提供任何企业到客户,企业到企业,点对点或部门对部门通讯所需的服务,⽐如⼀个公司可以通过⽹络连接到另⼀个公司的服务,从⽽直接传递订购单。
12.⾯向对象的思想主要包括什么?
答:继承、封装、多态
13.列举⼀下你所了解的XML技术及其应⽤。
答:xml可以⽤来做⽹页(xslt)、可以当作数据库、可以⽤来保存对象的系列化(web服务好象是基于这个的)。
14.C#中的接⼝和类有什么异同?
答:接⼝,是可以多继承,类只有单继承.接⼝强调了你必须实现,⽽没有具本实现的⽅法和虚类有点相似。
答:(1)new 运算符 ⽤于创建对象和调⽤构造函数。
(2)new 修饰符 ⽤于向基类成员隐藏继承成员。
(3)new 约束 ⽤于在泛型声明中约束可能⽤作类型参数的参数的类型。
14.DataGrid的Datasouse可以连接什么数据源?
答:DataTabe,DataView,DataSet,DataViewManager,任何实现IListSource接⼝的组件,任何实
现IList接⼝的组件。
15.概述反射和序列化。
答:反射:公共语⾔运⾏库加载器管理应⽤程序域。这种管理包括将每个程序集加载到相应的应⽤程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,⽽模块包含类型,类型⼜包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使⽤反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调⽤类型的⽅法或访问其字段和属性。
序列化:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
16.概述O/R Mapping 的原理。
答:利⽤反射,配置将对象和数据库表映射。
17.可访问性级别有哪⼏种?
答:pubic 访问不受限制。
protected 访问仅限于包含类或从包含类派⽣的类型。
internal 访问仅限于当前程序集。
protected internal 访问仅限于从包含类派⽣的当前程序集或类型。
private 访问仅限于包含类型。
18.sealed修饰符有什么特点?
答:sealed 修饰符可以应⽤于类、实例⽅法和属性。
密封类不能被继承;
密封⽅法会重写基类中的⽅法,但其本⾝不能在任何派⽣类中进⼀步重写。当应⽤于⽅法或属性时,sealed 修饰符必须始终与override⼀起使⽤。
19.列举ADO.NET中的共享类和数据库特定类。
答:共享类:
DataSet,DataTable,DataRow,DataColumn,DataRealtion,Constraint,DataColumnMapping,DataTableMapping
特定类:(x)Connection,(x)Command,(x)CommandBuilder,(x)DataAdapter,(x)DataReader,(x)Parameter,
(x)Transaction
20.C#中,string str = null 与 string str ="",请尽量⽤⽂字说明区别。
答:string str=""初始化对象分配空间,⽽stringstr=null初始化对象
21.详述.NET⾥class和struct的异同。
答:结构与类共享⼏乎所有相同的语法,但结构⽐类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使⽤初始值设定项。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
结构的副本由编译器⾃动创建和销毁,因此不需要使⽤默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。
结构不能从类或其他结构继承。
结构是值类型 -- 如果从结构创建⼀个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。
由于结构不使⽤引⽤,因此结构没有标识 -- 具有相同数据的两个值类型实例是⽆法区分的。C# 中的所有值类型本质上都继承⾃ValueType,后者继承⾃ Object。编译器可以在⼀个称为装箱的过程中将值类型转换为引⽤类型。
结构具有以下特点:
结构是值类型,⽽类是引⽤类型。
向⽅法传递结构时,结构是通过传值⽅式传递的,⽽不是作为引⽤传递的。
与类不同,结构的实例化可以不使⽤ new 运算符。
结构可以声明构造函数,但它们必须带参数。
⼀个结构不能从另⼀个结构或类继承,⽽且不能作为⼀个类的基。所有结构都直接继承⾃ System.ValueType,后者继承⾃System.Object。
结构可以实现接⼝。
在结构中初始化实例字段是错误的。
22.什么叫应⽤程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载? CTS、CLS和CLR分别作何解释?
答:应⽤程序域:应⽤程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应⽤程序域通常由运⾏库宿主创建,运⾏库宿主负责在运⾏应⽤程序之前引导公共语⾔运⾏库。应⽤程序域提供了⼀个更安全、⽤途更⼴的处理单元,公共语⾔运⾏库可使⽤该单元提供应⽤程序之间的隔离。
托管代码:使⽤基于公共语⾔运⾏库的语⾔编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语⾔集成、跨语⾔异常处理、增强的安全性、版本控制和部署⽀持、简化的组件交互模型、调试和分析服务等。
强类型:C# 是强类型语⾔;因此每个变量和对象都必须具有声明类型。
装箱和拆箱:装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引⽤类型的⼀个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。
重载:每个类型成员都有⼀个唯⼀的签名。⽅法签名由⽅法名称和⼀个参数列表(⽅法的参数的顺序和类型)组成。只要签名不同,就可以在⼀种类型内定义具有相同名称的多种⽅法。当定义两种或多
种具有相同名称的⽅法时,就称作重载。
CTS通⽤类型系统 (common type system) :⼀种确定公共语⾔运⾏库如何定义、使⽤和管理类型的规范。
CLR公共语⾔运⾏库:.NET Framework 提供了⼀个称为公共语⾔运⾏库的运⾏时环境,它运⾏代码并提供使开发过程更轻松的服务。
CLS公共语⾔规范:要和其他对象完全交互,⽽不管这些对象是以何种语⾔实现的,对象必须只向调⽤⽅公开那些它们必须与之互⽤的所有语⾔的通⽤功能。为此定义了公共语⾔规范 (CLS),它是许多应⽤程序所需的⼀套基本语⾔功能。
23.值类型和引⽤类型的区别?
答:基于值类型的变量直接包含值。将⼀个值类型变量赋给另⼀个值类型变量时,将复制包含的值。这与引⽤类型变量的赋值不同,引⽤类型变量的赋值只复制对对象的引⽤,⽽不复制对象本⾝。
所有的值类型均隐式派⽣⾃ System.ValueType。与引⽤类型不同,从值类型不可能派⽣出新的类型。但与引⽤类型相同的是,结构也可以实现接⼝。
与引⽤类型不同,值类型不可能包含 null 值。然⽽,可空类型功能允许将null 赋给值类型。 每种值类型均有⼀个隐式的默认构造函数来初始化该类型的默认值。
值类型主要由两类组成:结构、枚举; 结构分为以下⼏类:Numeric(数值)类型、整型、浮点型、decimal、bool、⽤户定义的结构。
引⽤类型的变量⼜称为对象,可存储对实际数据的引⽤。声明引⽤类型的关键字:class、interface、delegate、内置引⽤类型:object、string
24.如何理解委托
答:委托类似于 C++ 函数指针,但它是类型安全的。委托允许将⽅法作为参数进⾏传递。委托可⽤于定义回调⽅法。委托可以链接在⼀起;例如,可以对⼀个事件调⽤多个⽅法。⽅法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引⼊了匿名⽅法的概念,此类⽅法允许将代码块作为参数传递,以代替单独定义的⽅法。
25.C#中的接⼝和类有什么异同?
答:异:不能直接实例化接⼝。
接⼝不包含⽅法的实现。
接⼝、类和结构可从多个接⼝继承。但是C#类只⽀持单继承:类只能从⼀个基类继承实现。类定义可在不同的源⽂件之间进⾏拆分。
同:接⼝、类和结构可从多个接⼝继承。
接⼝类似于抽象基类:继承接⼝的任何⾮抽象类型都必须实现接⼝的所有成员。
接⼝可以包含事件、索引器、⽅法和属性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论