程序员面试笔试经典学习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、数据库一、数据库概念数据库经历了人工管理、文件系统到数据库系统3个阶段。数据库是具有逻辑关系和确定意义的数据结合,它能克服文件组织中所产生的一系列问题,数据冗余小,由于关系模型数据管理系统对于信息查询具有很大的灵活性,并且设计简单,所以已经被广泛使用在了十几的系统开发中。二、关系数据库与文件数据库系统的区别关系数据库是一个被组织成一组正式描述的表格的数据项的集合,这些表格中的数据能以不同的方式被存取或重新召集而不需要重新组织数据库表格,它对应于一个关系模型中的所有关系的集合。例如,教师、学生、课程这些关系以及关系间的联系就组成了一个教务系统。文件数据库系统是对文件的操作,包存储、查询等。关系数据库系统和文件数据库系统的区别如下:(1)关系数据库系统的主要特点是数据的结构化,而文件数据库系统是数据的非结构化。(2)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件。(3)文件数据库系统可以实现多媒体文件管理,支持c/s工作模式。三、SQL语言的功能SQL是结构化查询语言的缩写,其功能包括数据查询、数据操作、数据定义和数据控制4个部分。数据查询是数据库中最常见的操作,通过select语句可以得到所需的信息。SQL语言的数据操作语句(DML)主要包括数据插入、数据修改和删除数据3中语句。SQL语言使用数据定义语言(DDL)实现数据定义功能,可对数据库用户、基本表、视图、索引进行定义和撤销。数据控制语句(DCL)用于对数据库进行统一的控制管理,保证数据在多用户共享的情况下能够安全。基本的SQL语句有select、insert、update、delete、create、drop、grant、revoke等。四、内连接和外链接有什么区别内连接也称为自然连接,只有二个表相匹配的行才能在结果集中出现。返回的结果集是二个表中所有相匹配的数据,而舍弃不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配行的所有行,所以内连接可能会造成信息的丢失。五、什么是事物事物是数据库中一个单独的执行单元(unit),它通常由高级数据库操作语言(如SQL)或编程语言(如C++)书写的用户程序的执行所引起的。当在数据库中更改数据成功时,在事物中更改的数据变回提交,不再改变。否则,事物就取消或者回滚,更改无效。例如:网上购物的交易过程至少包括以下几个步骤的操作:(1)更新客户端所购物商品的库存信息。(2)保存客户付款信息(3)生成订单并且保存到数据库中(4)更新用户相关信息,如购物数量等。在正常的情况下,这些操作都将顺利进行,最终交易成功,与交易相关的所有数据信息也成功更新。但是,如果遇到突然掉电或是其他意外情况,导致这一系列过程任何一个环节出现错误,如在更新商品库存信息时发生异常、顾客银行账户余额不足等,都将导致整个交易过程失败。而一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态。即原有的库存信息没有被更新、用户也没有付款、订单也没有生成。否则,数据库的信息将会不一致,或者出现更为严重的不可预测的后果,数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。事务必须满足4个属性,即原子性、一致性、隔离性、持久性。(1)原子性。事务是一个不可分割的整体,为了保证事务的总体目标,事务必须具有原子性,即当数据修改时,要么全执行,要么全都不执行。即不允许事务部分地完成,避免了只执行这些操作的一部分而带来的错误。原子性要求事务必须被完整的执行。(2)一致性。一个事务执行之前和执行之后数据库数据必须保持一致性状态。数据库的一致性状态应该满足模式所指定的约束,那么在完整执行事务后数据库仍然处于一致性状态。为了维护所有数据的完整性,在关系数据库中,所有的规则必须应用到事务的修改上。数据库的一致性状态由用户来负责,由并发控制机制来实现。例如,银行转账,转账前后二个账户余额之和应该保持不变。由并发操作带来的数据不一致性包括丢失数据修改、读脏数据、不可重复读和产生幽灵数据。(3)隔离性。隔离性也被称为独立性,是指并行事务的修改必须与其它事务的修改相互独立。当一个事务处理数据时,要么是其它事务执行之前的状态,要么是其它事务执行之后的状态。例如,对任何一对事务T1,T2,对T1而言,T2要么在T1之前已经结束,要么在T1完成之后开始执行。数据库有4种类型的事务隔离级别:不提交的读、提交的读、可重复的读和串行化。因为隔离性使得每个事务的更新在它被提交之前,对其它事务都是不可见的,所以实施隔离性是解决临时更新与消除级联回滚问题的一种方式。(4)持久性。持久性也被称为永久性,事务完成以后,DBMS保证他对数据的修改是永久的,当系统或介质发生变化时,该修改也永久保持。持久性一般通过数据库备份与恢复来保证。严格来说,数据库事务属性都是由数据库管理系统来进行保证的,在整个应用程序运行过程中应用无需去考虑数据的ACID实现。一般情况下,通过执行COMMIT或ROLLBACK语句终止事务,当执行COMMIT语句时,自从事务启动以来对数据库所做的一切更改以称为永久性的了,即被写入到磁盘;而当执行ROLLBACK语句时,自动事务启动以来对数据库所做的一切更改都会被撤销,并且数据库的内容返回到事务开始之前所处的状态,无论什么情况,在事务完成时,都能保证回到一直状态。六什么是存储过程,它与函数由什么区别和联系SQL语句执行的时候需要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。创建存储过程的常用语法如下:createproduceduresp_name@[参七什么事主键?什么是外键主键也称为主码,是数据库中一个或多个字段,是表中记录的唯一标识符。主键不能为空。一个表中只能有一个主键,主键列不一定只有一列,可以有多列。由概念克制,主键可唯一地标识一行。另外。主键可作为一个可以被外键有效使用的对象,因此主键需遵循以下原则:(1)主键对用户而言没有意义。(2)主键不能为空(3)主键保持不变。因为主键的用途是唯一地标示一行数据。(4)主键不应包含动态变化的时间戳(5)主键原则上应当由计算机自动生成,而非用户指定。外键也称为外码,标示的是二个关系之间的联系。当共有关键字在一个关系中为主键时,这个公告关键字被称为另外一个关系的外键。假设有二个表AB,key是A的主键,同时也是B的字段,那么key称为B的外键。学号为学生表中的主键,同时也是成绩表中的字段,所以学号为成绩表的外键。外键用来和其它变建立联系,实现表之间的关联。保持数据的一致性,实现参照完整性等约束。一个表可以有多个外键,也可以为空。总之,主键时表中的唯一标识符。外键,是二个关系之间的联系。八什么是死锁在操作系统中有若干程序并发执行,他们不断的申请,释放资源,在此过程中,由于争夺资源而处于无限期的等待状态,造成程序无法继续执行,若无外力作用,他们将无法推进下去,这时成系统处于死锁状态或系统产生了死锁。此时便只能通过外力来打破这种状态。产生死锁的原意有以下3点。首先,系统资源不足,在系统中常常有多个进程共享资源的情况,如打印机,这些资源在同一时刻只能被一个进程调用,当资源数目不能满足进程时,便可能因为抢占资源产生死锁。其次,进程运行推进顺序不对,进程在运行中具有异步性,当进程推进不当时,便发生死锁。进程产生死锁的4个必要条件:1)互斥,每个资源每次只能被一个进程使用2)请求与保持等待,一个进程因请求资源被阻塞时,对已获得的资源保持不放3)不可剥夺,进程已获得的资源,在未使用完之前,不能被强制剥夺。4)环路等待,若干进程之间形成首位相连的等待资源关系。所以,为了预防死锁,就要打破产生死锁的4个条件中的一个或多个,因此需要最大限度的增加系统资源,合理安排进程的顺序并确定合理的分配资源的算法。避免死锁在资源的动态分配过程中,采取有效的方法防止系统进入不安全状态,达到预防死锁的目的,其中最具代表性的方法就是银行家算法。九什么是共享锁?什么是互斥锁在数据库中,锁主要是对数据进行读写的一种保护机制,从数据库系统的角度来看,一般可以将锁分为共享锁和互斥锁。共享锁简称S锁,也叫读锁用于不更改或不更新数据的操作(只读操作),如select语句。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。共享锁可以阻止其他并发运行的程序获取重叠的独占锁定,但是允许改程序获取重叠的共享锁定。其他用户可以获取共享锁锁定的资源,但是不能进行修改共享锁。在执行select命令时。SQLserver通常会对对象进行共享锁锁定。若事务T对数据D加S锁,则其他事务只能对D加S锁,而不能加X锁,知道T释放D上的S锁,一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。通常加共享锁的数据页被读取完毕后,共享锁就会立即被释放。互斥锁简称X锁,也叫排他锁,用于数据修改操作,如insertupdate或delete。确保不会同时对同一资源进行多重更新。为了确保数据操作的完整性,引入了互斥锁。用互斥锁来保证在任意时刻,只能有一个线程访问对象。若事务T对数据D加X锁,则其他任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排他锁,所以排他锁又称为写锁。而对于锁的使用,也有一定的限制,需要遵循二个事项:1)先锁后操作;2)事务结束之后必须解锁。十一二三四范式有何区别在设计与操作维护数据库时,最关键的问题就是要确保数据正确的分布到数据库的表中,使用正确的数据结构,不仅有助于对数据库进行相应的存取操作,还可以极大地简化应用程序的内容。按照数据库规范化对表进行设计的目的就是减少数据库中的数据冗余,从而增加数据的一致性。范式是在识别数据库中的数据元素关系以及所需的表和各表中的项目这些初始工作之后的一个细化的过程。常见的范式有1NF2NF3NF4NF.1NF,第一范式。第一范式是指数据库的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体有重复的属性构成,新实体与原实体之间为一对多关系。第一范式的模式要求属性值不可在分裂成更小部分,即属性项不能是属性组合或由组属性组成。简而言之,第一范式就是无重复的列。2NF,第二范式。要求数据库表中的每个实体或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则R成为第二范式模式。如果A是关系模型R的候选键的一个属性,则称A是R的主属性,否则A是R的非主属性。3NF,第三范式。每个非主属性都不传递依赖于R的候选键,则称R是第三范式模式十一什么是CHECK约束CHECK约束是指限制表中某一列或某些列中可接受的数据值或数据格式,它用于限制列的取值方位,使用形式为:CHECK(约束表达式)。如果对单列定义CHECK约束,那么该列只允许特定的值;如果是对一个表定义CHECK约束,那么此约束会在特定的列中对只进行限制。例如,对于一个员工信息表,给员工的年龄属性添加了一个约束,即年龄必须大于0且小于120,那么用户在输入年龄的时候,就必须遵守该约束,输入负数或者121就无法输入。十二什么是视图视图是由从一个数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表。它是一个虚表,在数据表中,存放的只是视图的定义而已,不存放视图包含的数据项,这些项目仍然存在原来的基本表结构中视图的作用非常多,主要有以下几点:首先可以简化数据查询语句;其次可以使用户能从多角度看待同一数据;然后,通过引入视图,可以提高数据的安全性;最后,视图提供了一定程度的逻辑独立性等。通过引入视图机制,用户可以将注意力集中在其关心的数据上而非全部数据,这样就大大提高了用户效

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功