ADO.NET测试题

1.ADO.NET中读写数据库需要使用哪些对象?作用是什么?

答:DataConnection连接对象
Command执行命令和存储过程
DataReader向前只读的数据流
DataAdapter适配器,支持增删查询
DataSet数据存储器
DataReader:向前只读的数据流

2.写出一条SQL语句:取出Student表中第31到第40条数据(以自动增长的ID作为主键,主键可能不连续)

①、假设ID是连续的:
select top 10 * from A where ID not in (select top 30 ID from A)

select * from A where ID between 31 and 40

②、假设ID是不连续的:
select top 40 * from A except select top 30 * from A

select top 10 * from A where ID > (select max(ID) from A where ID in (select top 30 ID from A))或 select top 10 * from A where ID not in (select top 30 ID from A)

3.事务的四大特性分别详细说明

①原子性

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

②一致性

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

③隔离性

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

④持久性

事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

4.SQL Server是什么类型数据库,保证数据库的完整性都有哪些

答:SQL Server关系型数据库,实体完整性,区域完整性,参展完整性

5.描述SQL Server数据库中的基本约束及其作用

①.主键约束(Primary Key): 确定表中的标识列,(主键字段不能为空,必须唯一) 标识:确定一个对象的唯一表现

②.外键约束(Foreign key) 确定表与表之间的联系方式,一般情况下通过从表的标识列进行确定 主表:给哪张表添加约束哪张表就是主表,辅助表为从表

③.唯一约束(unique) 确定这个字段中的数据必须是唯一

④.非空约束(not null) 确定这个字段中的数据必须不能为空

⑤.检查约束(CHECK) 设置这个字段中的数据的特性

⑥.默认约束(DF) 确定这个字段中的数据的默认值

6.简单叙述索引、视图、触发器、事务、存储过程

答: 索引是为了加速对表中的数据行的检索而创建的一种分散存储结构,相当于书的目录;

视图是从一张或多张表中导出的一张虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增删改查操作;

存储过程是一组为了完成特定功能的SQL语句集合;

事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行

触发器是一种特殊类型的存储过程,出发器主要通过事件触发而被执行的,

7.列举出SQL Server中的聚合函数(至少5个)

答:SUM()、MIN()、MAX()、AVG()、COUNT(),DISTINCT(),HAVING()

8.什么是SQL注入,应该如何防止

答:sql注入是利用现有应用程序,将恶意的sql命令注入到后台数据库执行的一种恶意的操作,使用参数化的SQL就可以避免SQL注入

9.SQL中的左联接和右联接查询有什么区别

左:如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表列均为空值。

右:将返回右表的所有行。如果右表的某一行在左表中没有匹配行,则将为左表返回空值。

10.详细描述三层架构开发模式以及三层架构的好处

答:数据访问层,业务层,表示层。

数据访问层(DAL)主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

业务逻辑层(BLL)对传送数据进行逻辑判断分折,并进行传送正确的值。

表示层(UI)为了与用户交互的界面。

优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。

11.抽象类和接口的区别是什么

相同点:
① 都可以被继承
② 都不能被实例化
③ 都可以包含方法声明
④ 派生类必须实现未实现的方法
区 别:
抽象类中可以有实现成员(非抽象方法),而接口中的方法只有声明没有实现;
抽象类中可以有字段,接口中不能有字段,但可以有属性;
抽象类的成员可以使用公有或其他修饰符,接口中成员是隐式公有的,不需要修饰;
抽象类是概念的抽象,接口注重行为,抽象类不支持多重继承,而一个类可以实现多个接口。

12.T-SQL语言包含哪三种常用语言?详细描述

①、数据操纵语言(DML):SQL允许用户或应用程序通过添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新,用来操纵数据库数据命令包括:select、insert、update、delete

②、数据定义语言(DDL):SQL让用户定义存储数据的结构和组织,以及数据项之间的关系。用来建立数据库、数据库对象和定义列命令包括:create、alter、drop

③、数据控制语言(DCL):可以使用SQL来限制用户检索、添加和修改数据的能力,保护存储的数据不被未授权的用户所访问,用来控制数据库组件存取许、权限等命令包括:grant、deny、revoke

13.单例模式的好处是什么?如何实现单例模式

答:好处:封装了唯一性,可严格控制客户怎样访问及何时访问

内存中只有一个对象,可节约系统资源,提高系统性能

实现:构造函数私有化,使用一个公开静态方法,使用一个静态属性进行判断当前窗口是否被创建,重写方法

14.请简单描述类和结构的区别

①、值类型与引用类型

结构Struct是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型。

类Class是引用类型:引用类型在堆上分配地址。

结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用。

②、继承性

结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .

类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承

③、内部结构:

结构:没有默认的构造函数,但是可以添加构造函数

没有析构函数

没有 abstract 和 sealed(因为不能继承)

不能有protected 修饰符

可以不使用new 初始化

类:有默认的构造函数

有析构函数

可以使用 abstract 和 sealed

有protected 修饰符

必须使用new 初始化

同:

①、虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object

②、虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,

15.请描述Socket进行同步通讯编程的详细步骤

服务器端:

第一步:创建一个用于监听连接的Socket对像;

第二步:用指定的端口号和服务器的ip建立一个EndPoint对像;

第三步:用socket对像的Bind()方法绑定EndPoint;

第四步:用socket对像的Listen()方法开始监听;

第五步:接收到客户端的连接,用socket对像的Accept()方法创建一个新的用于和客户端进行通信的socket对像;

第六步:通信结束后一定记得关闭socket;

客户端:

第一步:建立一个Socket对像;

第二步:用指定的端口号和服务器的ip建立一个EndPoint对像;

第三步:用socket对像的Connect()方法以上面建立的EndPoint对像做为参数,向服务器发出连接请求;

第四步:如果连接成功,就用socket对像的Send()方法向服务器发送信息;

第五步:用socket对像的Receive()方法接受服务器发来的信息 ;

第六步:通信结束后一定记得关闭socket;

16…NET中的错误处理机制是什么

答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

17.请详细描述C#中的访问修饰符

public(公开的):应用于所有类和类成员,可访问范围:任何代码都可以访问

private(私有的):应用于所有类和类成员,可访问范围:当前类自身

protected(受保护的):应用于类和内嵌类的所有成员, 可访问范围:当前类自身,所有的子类可以访问,同一程序集其他类不可以访问,其他程序集中可以通过继承也可以访问

Internal:应用于类和内嵌类的所有成员, 可访问范围:当前类自身,同一程序集的其他类可以通过实例化访问,同一程序集中

的子类也可以访问,其他程序集中不管是不是子类都无法访问

protected Internal/Internal protected:应用于类和内嵌类的所有成员, 可访问范围:当前类自身,同一程序集的其他类可以通

过实例化进行访问,所有子类可以访问,其他程序集中可以通过继承进行访问,但实例化不行

18.名词解释SQL/XMAL/XML/HTML/OOP/CTS/CLS/CLR

SQL:结构化查询语言(Structured Query Language)。是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

XAML:全称Extensible Application MarkUp Language。可扩展应用程序标记语言。是设计师和程序员沟通的枢纽。

XML:即可扩展标记语言。标记是指计算机所能理解的信息符号。

HTML:超文本标记语言(HyperText Markup Language)是一种用于创建网页的标准标记语言。

OOP:(Object Oriented Programming) 面向对象的程序设计

CTS:通用类型系统 (common type system) :一种确定公共语言运行库如何定义、使用和管理类型的规范。

CLR:(Common Language Runtime) 公共语言运行时 用于编译MSIL的代码,主要在Net的后台环境下执行

CLS:(Common Language Specification) 公共语言规范,是CLR定义的语言特性集合,公共语言规范是一组构造和约束,它充当库编写器和编译器编写器的向导

19.重写和重载的区别是什么?ref参数与out参数的区别是什么

重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。

重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。

①.ref参数(引用传参):当方法结束前必须对ref进行赋值。传进方法中的参数,如果在方法中发生了改变,那么这个参数变量将永久性发生改变。

②.out参数:①可视作是方法的返回值,②必须对out参数进行赋值,③遇到方法中的形参是out类型,调用时必须带有out参数, ④在调用out类型参数的方法时,准备一个相同类型的变量接收out参数结果,必须带有关键字。
ref是 有进有出,而out是 只出不进。

20.详细描述值类型和引用类型的异同

值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。

引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

所有的值类型均隐式派生自 System.ValueType。

与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。

与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将null 赋给值类型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

值类型主要由两类组成:结构、枚举;结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。

引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型:object、string

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值