1.ADO.NET中读写数据库需要使用哪些对象?作用是什么?
答:DataConnection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增
删查询,DataSet数据存储器,DataReader:向前只读的数据流
2.写出一条SQL语句:取出Student表中第31到第40条数据(以自动增长的ID作为主键,主键可能不连续)
1)、假设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
2)、假设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.事务的四大特性分别详细说明
1)原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
2)一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完
整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
3)隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它
之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数
据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
4)持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
4.SQL Server是什么类型数据库,保证数据库的完整性都有哪些
答:SQL Server关系型数据库,实体完整性,区域完整性,参照完整性
5.描述SQL Server数据库中的基本约束及其作用
(1).主键约束(Primary Key): 确定表中的标识列,(主键字段不能为空,必须唯一) 标识:确定一个对象的唯一表现
(2)外键约束(Foreign key) 确定表与表之间的联系方式,一般情况下通过从表的标识列进行确定 主表:给哪张表添加约束哪张表
就是主表,辅助表为从表
(3)唯一约束(unique) 确定这个字段中的数据必须是唯一
(4)非空约束(not null) 确定这个字段中的数据必须不能为空
(5)检查约束(CHECK) 设置这个字段中的数据的特性
(6)默认约束(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.抽象类和接口的区别是什么
相同点:
(1) 都可以被继承
(2) 都不能被实例化
(3) 都可以包含方法声明
(4) 派生类必须实现未实现的方法
区 别:
-
抽象类中可以有实现成员(非抽象方法),而接口中的方法只有声明没有实现;
-
抽象类中可以有字段,接口中不能有字段,但可以有属性;
-
抽象类的成员可以使用公有或其他修饰符,接口中成员是隐式公有的,不需要修饰;
-
抽象类是概念的抽象,接口注重行为,抽象类不支持多重继承,而一个类可以实现多个接口。
12.T-SQL语言包含哪三种常用语言?详细描述
1、数据操纵语言(DML):SQL允许用户或应用程序通过添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新,用来操纵数据库数据命令包括:select、insert、update、delete
2、数据定义语言(DDL):SQL让用户定义存储数据的结构和组织,以及数据项之间的关系。用来建立数据库、数据库对象和定义列命令包括:create、alter、drop
3、数据控制语言(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参数的区别是什么
重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法
重写了父类中的方法。
重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
1)ref参数(引用传参):当方法结束前必须对ref进行赋值。传进方法中的参数,如果在方法中发生了改变,那么这个参数变量将
永久性发生改变。
2)out参数:①可视作是方法的返回值,②必须对out参数进行赋值,③遇到方法中的形参是out类型,调用时必须带有out参数
④在调用out类型参数的方法时,准备一个相同类型的变量接收out参数结果,必须带有关键字
ref是 有进有出,而out是 只出不进。
20.详细描述值类型和引用类型的异同
值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
所有的值类型均隐式派生自 System.ValueType。
与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。
与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将null 赋给值类型。
每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
值类型主要由两类组成:结构、枚举;结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。
引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型:object、string