程序员面试笔试经典学习_第1页
程序员面试笔试经典学习_第2页
程序员面试笔试经典学习_第3页
程序员面试笔试经典学习_第4页
程序员面试笔试经典学习_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 数据库一、数据库概念数据库经历了人工管理、文件系统到数据库系统3个阶段。数据库是具有逻辑关系和确定意义的数据结合,它能克服文件组织中所产生的一系列问题,数据冗余小,由于关系模型数据管理系统对于信息查询具有很大的灵活性,并且设计简单,所以已经被广泛使用在了十几的系统开发中。二、关系数据库与文件数据库系统的区别关系数据库是一个被组织成一组正式描述的表格的数据项的集合,这些表格中的数据能以不同的方式被存取或重新召集而不需要重新组织数据库表格,它对应于一个关系模型中的所有关系的集合。例如,教师、学生、课程这些关系以及关系间的联系就组成了一个教务系统。文件数据库系统是对文件的操作,包存储、查询等。

2、关系数据库系统和文件数据库系统的区别如下:(1) 关系数据库系统的主要特点是数据的结构化,而文件数据库系统是数据的非结构化。(2) 关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件。(3) 文件数据库系统可以实现多媒体文件管理,支持c/s工作模式。三、SQL语言的功能SQL是结构化查询语言的缩写,其功能包括数据查询、数据操作、数据定义和数据控制4个部分。数据查询是数据库中最常见的操作,通过select语句可以得到所需的信息。SQL语言的数据操作语句(DML)主要包括数据插入、数据修改和删除数据3中语句。SQL语言使用数据定义语言(DDL)实现数据定义功能,可对数

3、据库用户、基本表、视图、索引进行定义和撤销。数据控制语句(DCL)用于对数据库进行统一的控制管理,保证数据在多用户共享的情况下能够安全。基本的SQL语句有select、insert、update、delete、create、drop、grant、revoke等。四、内连接和外链接有什么区别内连接也称为自然连接,只有二个表相匹配的行才能在结果集中出现。返回的结果集是二个表中所有相匹配的数据,而舍弃不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配行的所有行,所以内连接可能会造成信息的丢失。五、什么是事物事物是数据库中一个单独的执行单元(unit),它通常由高级数据库操作语言(如SQL

4、)或编程语言(如C+)书写的用户程序的执行所引起的。当在数据库中更改数据成功时,在事物中更改的数据变回提交,不再改变。否则,事物就取消或者回滚,更改无效。例如:网上购物的交易过程至少包括以下几个步骤的操作:(1) 更新客户端所购物商品的库存信息。(2) 保存客户付款信息(3) 生成订单并且保存到数据库中(4) 更新用户相关信息,如购物数量等。 在正常的情况下,这些操作都将顺利进行,最终交易成功,与交易相关的所有数据信息也成功更新。但是,如果遇到突然掉电或是其他意外情况,导致这一系列过程任何一个环节出现错误,如在更新商品库存信息时发生异常、顾客银行账户余额不足等,都将导致整个交易过程失败。而一旦

5、交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态。即原有的库存信息没有被更新、用户也没有付款、订单也没有生成。否则,数据库的信息将会不一致,或者出现更为严重的不可预测的后果,数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。事务必须满足4个属性,即原子性、一致性、隔离性、持久性。(1) 原子性。事务是一个不可分割的整体,为了保证事务的总体目标,事务必须具有原子性,即当数据修改时,要么全执行,要么全都不执行。即不允许事务部分地完成,避免了只执行这些操作的一部分而带来的错误。原子性要求事务必

6、须被完整的执行。(2) 一致性。一个事务执行之前和执行之后数据库数据必须保持一致性状态。数据库的一致性状态应该满足模式所指定的约束,那么在完整执行事务后数据库仍然处于一致性状态。为了维护所有数据的完整性,在关系数据库中,所有的规则必须应用到事务的修改上。数据库的一致性状态由用户来负责,由并发控制机制来实现。例如,银行转账,转账前后二个账户余额之和应该保持不变。由并发操作带来的数据不一致性包括丢失数据修改、读脏数据、不可重复读和产生幽灵数据。(3) 隔离性。隔离性也被称为独立性,是指并行事务的修改必须与其它事务的修改相互独立。当一个事务处理数据时,要么是其它事务执行之前的状态,要么是其它事务执行

7、之后的状态。例如,对任何一对事务T1,T2,对T1而言,T2要么在T1之前已经结束,要么在T1完成之后开始执行。数据库有4种类型的事务隔离级别:不提交的读、提交的读、可重复的读和串行化。因为隔离性使得每个事务的更新在它被提交之前,对其它事务都是不可见的,所以实施隔离性是解决临时更新与消除级联回滚问题的一种方式。(4) 持久性。持久性也被称为永久性,事务完成以后,DBMS保证他对数据的修改是永久的,当系统或介质发生变化时,该修改也永久保持。持久性一般通过数据库备份与恢复来保证。严格来说,数据库事务属性都是由数据库管理系统来进行保证的,在整个应用程序运行过程中应用无需去考虑数据的ACID实现。一般

8、情况下,通过执行COMMIT或ROLLBACK语句终止事务,当执行语句时,自从事务启动以来对数据库所做的一切更改以称为永久性的了,即被写入到磁盘;而当执行语句时,自动事务启动以来对数据库所做的一切更改都会被撤销,并且数据库的内容返回到事务开始之前所处的状态,无论什么情况,在事务完成时,都能保证回到一直状态。六什么是存储过程,它与函数由什么区别和联系语句执行的时候需要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。创建存储过程的常用语法如下:参七什么事主键?什么是外键主键也称为主码,是数

9、据库中一个或多个字段,是表中记录的唯一标识符。主键不能为空。一个表中只能有一个主键,主键列不一定只有一列,可以有多列。由概念克制,主键可唯一地标识一行。另外。主键可作为一个可以被外键有效使用的对象,因此主键需遵循以下原则:() 主键对用户而言没有意义。() 主键不能为空() 主键保持不变。因为主键的用途是唯一地标示一行数据。() 主键不应包含动态变化的时间戳() 主键原则上应当由计算机自动生成,而非用户指定。外键也称为外码,标示的是二个关系之间的联系。当共有关键字在一个关系中为主键时,这个公告关键字被称为另外一个关系的外键。假设有二个表,是的主键,同时也是的字段,那么称为的外键。学号为学生表中

10、的主键,同时也是成绩表中的字段,所以学号为成绩表的外键。外键用来和其它变建立联系,实现表之间的关联。保持数据的一致性,实现参照完整性等约束。一个表可以有多个外键,也可以为空。总之,主键时表中的唯一标识符。外键,是二个关系之间的联系。八什么是死锁在操作系统中有若干程序并发执行,他们不断的申请,释放资源,在此过程中,由于争夺资源而处于无限期的等待状态,造成程序无法继续执行,若无外力作用,他们将无法推进下去,这时成系统处于死锁状态或系统产生了死锁。此时便只能通过外力来打破这种状态。产生死锁的原意有以下点。首先,系统资源不足,在系统中常常有多个进程共享资源的情况,如打印机,这些资源在同一时刻只能被一个

11、进程调用,当资源数目不能满足进程时,便可能因为抢占资源产生死锁。其次,进程运行推进顺序不对,进程在运行中具有异步性,当进程推进不当时,便发生死锁。进程产生死锁的个必要条件:) 互斥,每个资源每次只能被一个进程使用) 请求与保持等待,一个进程因请求资源被阻塞时,对已获得的资源保持不放) 不可剥夺,进程已获得的资源,在未使用完之前,不能被强制剥夺。) 环路等待,若干进程之间形成首位相连的等待资源关系。所以,为了预防死锁,就要打破产生死锁的个条件中的一个或多个,因此需要最大限度的增加系统资源,合理安排进程的顺序并确定合理的分配资源的算法。避免死锁在资源的动态分配过程中,采取有效的方法防止系统进入不安

12、全状态,达到预防死锁的目的,其中最具代表性的方法就是银行家算法。九什么是共享锁?什么是互斥锁在数据库中,锁主要是对数据进行读写的一种保护机制,从数据库系统的角度来看,一般可以将锁分为共享锁和互斥锁。共享锁简称锁,也叫读锁用于不更改或不更新数据的操作(只读操作),如语句。如果事务对数据加上共享锁后,则其他事务只能对再加共享锁,不能加排它锁。共享锁可以阻止其他并发运行的程序获取重叠的独占锁定,但是允许改程序获取重叠的共享锁定。其他用户可以获取共享锁锁定的资源,但是不能进行修改共享锁。在执行命令时。通常会对对象进行共享锁锁定。若事务对数据加锁,则其他事务只能对加锁,而不能加锁,知道释放上的锁,一般要

13、求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。通常加共享锁的数据页被读取完毕后,共享锁就会立即被释放。互斥锁简称锁,也叫排他锁,用于数据修改操作,如或。确保不会同时对同一资源进行多重更新。为了确保数据操作的完整性,引入了互斥锁。用互斥锁来保证在任意时刻,只能有一个线程访问对象。若事务对数据加锁,则其他任何事务都不能再对加任何类型的锁,直至释放上的锁;一般要求在修改数据前要向该数据加排他锁,所以排他锁又称为写锁。而对于锁的使用,也有一定的限制,需要遵循二个事项:) 先锁后操作;) 事务结束之后必须解锁。十一二三四范式有何区别在设计与操作维护数据库时,最关键的问题就是要确保数据正确的分布

14、到数据库的表中,使用正确的数据结构,不仅有助于对数据库进行相应的存取操作,还可以极大地简化应用程序的内容。按照数据库规范化对表进行设计的目的就是减少数据库中的数据冗余,从而增加数据的一致性。范式是在识别数据库中的数据元素关系以及所需的表和各表中的项目这些初始工作之后的一个细化的过程。常见的范式有2NF 3NF 4NF .1NF,第一范式。第一范式是指数据库的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体有重复的属性构成,新实体与原实体之间为一对多关系。第一范式的模式要求属性值不可

15、在分裂成更小部分,即属性项不能是属性组合或由组属性组成。简而言之,第一范式就是无重复的列。2NF,第二范式。要求数据库表中的每个实体或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则R成为第二范式模式。如果A是关系模型R的候选键的一个属性,则称A是R的主属性,否则A是R的非主属性。3NF,第三范式。每个非主属性都不传递依赖于R的候选键,则称R是第三范式模式十一 什么是CHECK约束CHECK约束是指限制表中某一列或某些列中可接受的数据值或数据格式,它用于限制列的取值方位,使用形式

16、为:CHECK(约束表达式)。如果对单列定义CHECK约束,那么该列只允许特定的值;如果是对一个表定义CHECK约束,那么此约束会在特定的列中对只进行限制。例如,对于一个员工信息表,给员工的年龄属性添加了一个约束,即年龄必须大于0且小于120,那么用户在输入年龄的时候,就必须遵守该约束,输入负数或者121就无法输入。十二 什么是视图视图是由从一个数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表。它是一个虚表,在数据表中,存放的只是视图的定义而已,不存放视图包含的数据项,这些项目仍然存在原来的基本表结构中视图的作用非常多,主要有以下几点:首先可以简化数据查询语句;其次可以使用户能从多角

17、度看待同一数据;然后,通过引入视图,可以提高数据的安全性;最后,视图提供了一定程度的逻辑独立性等。通过引入视图机制,用户可以将注意力集中在其关心的数据上而非全部数据,这样就大大提高了用户效率和用户满意度,而且如这些数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分来源于其他视图,并且搜索条件又比较复杂时,需要编写的查询语句就会比较繁琐,此时定义视图就可以使数据的查询语句变得简答可行。定义视图可以将表与表之间复杂的操作连接和搜索条件对用户不可见,用户只需要简单的对一个视图进行查询即可,所以增加了数据的安全性,但是不能提高查询的效率。十三 什么是触发器触发器是一种特殊类型的存储过程

18、,它由事件触发,而不是程序调用或手工启动。当数据库有特殊的操作时,对这些操作有数据库中的事件来触发,自动完成这些SQL语句。使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束。十二 什么是索引索引就是一种提高数据库查询速度的机制,它是一个在数据库的表或视图上按照某个关键字段的值,升序或降序排序创建的对象。当用户查询索引字段时,它可以快速地执行检索操作,借助索引,在执行查询的时候不需要扫描整个表就可以快速的找到所需要的数据。索引是与表或视图关联的磁盘上结构,即对表中列值得一种结构,可以加快从表或视图中检索行的速度,执行查询时不必扫描整个表就能更加快速的访问数据库中的信息。十三

19、 数据备份有哪些种类在网络运行与维护的过程中,经常有一些难以预料的因素会导致数据的丢失,如硬件损坏、操作失误等,而且丢失的数据通常又会对企业的业务产生非常不利的影响,所以必须不定期地对数据进行及时 备份,以便在灾难发生后能够迅速地恢复数据。数据备份就是保存数据的备份,目的就是为了预防灾难造成的数据丢失。它一般分为完全备份、差异备份、事务日志备份、增量备份几大类。完全备份是将数据库中的全部信息进行备份,它是恢复的基线,在进行完全备份时,不但备份数据库的数据文件、日志文件,还需要备份文件的存储位置信息以及数据库中的全部对象和相关信息,在对数据库进行完全备份时,所有未完成的事务或发生在备份过程中的全

20、部对象被忽略,如果使用完全数据库备份类型,那么从开始备份到开始恢复这段时间内发生的任何针对数据库的修改都将无法修复。所以,只有在一定的要求或条件下才使用这种类型。差异备份时备份从最近的完全备份之后对数据所做的修改,它以完全备份为基准点,备份完全备份之后变化了的数据文件、日志文件以及数据库中其他被修改的内容。差异备份耗费的时间比完全备份少,但也会占用一些时间,同完全备份一样,差异备份的过程中也允许用户访问数据库并对数据进行操作,并且在差异备份过程中会把这些操作也一起备份起来。事务日志备份是备份从上次备份之后的日志记录,而且在默认情况下,事务日志备份完成后要截断日志,事务日志备份记录了用户对数据进

21、行的修改操作。随着时间的推移,日志中的记录数会越来越多,容量有事比数据备份大,这样势必会占满整个磁盘空间。因此,为了避免这种情况的发生,必须定期地将日志记录中不必要的记录清除掉,以节省空间。清除掉无用日志记录的过程叫做截断日志。增量备份时针对上一次备份的,备份上一次备份后所有发生改变的文件。在增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,即备份后标记文件十四 并发环境如何保证数据的一致性并发一般是指多用户同时访问相同的数据。数据一致性是指系统中每个用户都能够取得具备一致性的数据,同时还能够看到自己活其他用户所提交的事务对数据的修改。并发环境下,一般可以采用多种机制来保证数据的一

22、致性。例如,oracle系统提供的事务级的一致性、行机锁、表级锁等。提交读和串行事务都使用行级锁,都会试图修改一个没有提交的并行事务更新的行时产生等待。第二个事务等待其他事务提交或者撤销来释放它的锁,才能更新给定的行。不管等待的是什么级别的隔离事务,若其他事务回滚了,都可以对以前锁定的行进行修改。但是如果其他事务提交并释放了它的锁,提交事务科执行它想要的修改。 十五 如果数据库日志满了,会出现什么情况日志文件记录所有对数据库数据的修改,主要是保护数据库以防止故障,以及恢复数据时使用。其特点如下:() 每一个数据库至少包含二个日志文件组。每个日志文件组至少包含二个日志文件成员() 日志文件组以循

23、环方式进行写操作() 每一个日志文件成员对应一个物理文件通过日志文件来记录数据库事务可以最大限度地保证数据的一致性与安全性,但一旦数据库中日志满了,就只能执行查询等读操作,不能执行更改、备份等操作。其原因是任何写操作都要记录日志,也就是说基本上处于不能使用的状态。网络与通信一 OSI七成模型上三成称为高层,用于定义应用程序之间的通信和人机界面下四成称为底层,用于定义数据如何进行端到端的传输,物理规范以及数据与光电信号间的转换。具体而言,从上往下每一层的功能如下:() 应用层。应用层也称为应用实体,一般是应用程序,该层主要负责确定通信对象,并确保有足够的资源用于通信。常见的应用层协议有FTP、H

24、TTP、SNMP等。() 表示层。表示层一般负责数据的编码与转化,确保应用层能够正常工作。该层是二进制代码间互相转化的地方,同时该层负责数据的压缩、解压、加密、解密等,该层也可以根据不同的应用目的将数据处理为不同的格式,表现出来就是各种各样的文件名。() 会话层。会话层主要负责在网络中的二个节点之间建立、维护、控制会话,区分不同的会话,以及提供单工、半双工、全双工3种通信式服务。NFS、RPC、X Windows等都工作在该层。() 传输层。传输层是OSI模型中最重要的一层,它主要负责分割、组合数据,实现端到端的逻辑连接。数据在上三层是整体的,到了这一层开始被分割,这一层分割后的数据被称为段。

25、三次握手、面向连接或非面向连接的服务、流量控制等都发生在此层。常见的传输层协议有TCP、UDP、SPX。() 网络层。网络层是将网络地址翻译成物理地址,并决定将数据从发送方路由到接收方,主要负责管理网络地址、定位设备、决定路由,路由器就工作在该层。上层的数据段在这一层被分割,封装后叫做包。包邮二中:一种为用户数据包,是上层传下来的用户数据;另一种为路由更新包,是直接由路由器发出来的,用来和其他路由器进行路由交换信息。常见的网络层协议有IP,RIP,OSPF。() 数据链路层。数据链路层为OSI模型的第二层,控制物理层与网络层之间的通信,主要负责物理传输的准备,包括物理地址寻址、CRC检验、错误

26、通知、网络拓扑、流量控制、重发等。MAC地址和交换机都工作在这一层。上层传下来的包在这一层被分割封装后叫做帧。常见的数据链路层协议有SDLC、STP、帧中继、HDLC等。() 物理层。物理层是实实在在的物理链路,它规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。它为上层协议提供了一个传输数据的物理媒体,负责将数据以比特流的方式发送、接受。常见的物理媒体有双绞线、同轴电缆等。属于物理层相关的规范有。设计模式一 单例模式在某些情况下,有些对象只需要一个就可以了。即每个类只需要一个实例。;例如,一台计算机上可以连接多个打印机,但是这个计算机上的打印程序只能有一个,这里就

27、可以通过单例模式来避免二个打印作业同时输出到打印机,即在整个的打印过程中只有一个打印程序的实例。简单来说,单例模式的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。单利模式只应在有真正的单一实例的需求是才可以用。需要区分一下全局变量和单例模式。首先,全局变量是对一个对象的静态引用,全局变量确实可以实现单例模式实现的全局访问这个功能,但是它并不能保证应用程序中只有一个实例,同时在编码规范中,也明确指出应该要少用全局变量,因为过多地使用全局变量,会造成代码难读,还有就是全局变量并不能实现继承。而单例模式的话,其在类中保存了他的唯一实例,这个类可以保证只创建一个实例,

28、同时它还提供了一个访问该唯一的全局访问点。使用单例模式,需要注意的是,单例模式用来保证系统中一个类只有一个实例。单列了的构造函数必须为私有,同时单例类必须提供一个全局访问点。二 工厂模式工厂模式专门负责实例化大量公共接口的类。工厂模式可以动态的决定哪一个类实例化,而不必事先知道每次要实例化那一个类。客户类和工厂类是分开的。消费者无论什么时候需要某种产品,需要做的只是向工厂提出请求即可。消费者无需修改就可以接纳新产品。当然,也存在缺点,就是当产品修改时,工厂类也要做相应的修改。工厂模式包括以下几种形态:() 简单工厂模式。简单工厂模式的工厂类是根据提供给它参数,返回的是几个可能产品中的一个类的实例,通常情况下它返回的类都有一个公共的父类和公共的方法。() 工厂方法模式。工厂方法模式是类的创建模式,其用意是定义一个用于创建产品对象的工厂的接口,而将实际创建工作推迟到工厂接口的子类中。它属于简单工厂模式的进一步抽象和推广。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论