软件工程—复试总结分析

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

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

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

资源描述

软件工程复试总结一、数据库部分数据库绪论1、简述三层模式、两级映射,分别有什么作用?模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是数据库系统模式结构的中间层,即不涉及数据的物理存储细节,也与具体应用程序开发工具语言无关。外模式(用户模式):是用户能看见和使用的局部数据的逻辑结构和特征描述,是与某一应用有关的数据的逻辑表示,是模式的子集,一个数据库可以有多个外模式。内模式(存储模式):数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,如存储方式是按照某个属性升序存储,什么索引等。外模式模式映像:当模式发生改变,数据库管理员对外模式模式映像作相应改变,可使外模式不变,从而应用程序不用修改。保证数据与程序的逻辑独立性。模式内模式映像:当数据库的存储结构改变了,由数据库管理员对模式内模式映像作相应改变,可以保持模式不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。三级模式使用户能逻辑地抽象地处理数据而不关心数据在计算机内具体表示方式与存储方式,两级映像保证了数据库系统中的数据有较高的逻辑独立性和物理独立性。2、说出至少三种数据库类型(层次,网状,关系)并简要解释了一下层次模型:用树形结构来表示各类实体以及实体间的联系,有且只有一个节点没有双亲节点(根节点),其他的都有且只有一个双亲节点。只能能直接表示的是一对多联系。优点:效率高结构清晰,性能优于关系数据库,不低于网状。缺点:现实世界很多联系都不是层次的,如节点间多对多联系,还有一个节点具有多个双亲的情况都不好表示。网状模型:对于非层次关系的联系,用层次表示非树形结构是很不直接的,网状模型可以很好的表示,它允许有一个以上的节点没有双亲,一个节点也可以有多个双亲,可以更直接地描述现实世界。优点:更直接描述现实世界,性能也较好,存取效率也较高。缺点:结构比较复杂不利于掌握,用户编程还得了解系统结构细节,加重了编程的负担。关系模型:通常来看关系就是一张规范二维表,实体还是实体间的联系都用关系来表示,对数据的检索和更新结果也是关系。优点:概念单一,用户易懂易用,而且存取路径是对用户透明的,从而有更高的数据独立性和安全性,也简化程序员的工作。缺点:查询效率往往不如格式化数据模型,为了提高性能,增加开发DBMS难度。关系数据库3、简述关系与关系模式的区别。关系实质是一张二维表,关系模式是对关系的描述,关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的,随时间不断变化的,因为关系操作不断更新数据库中的数据。通俗的说:关系是一张二维表,关系模式是表格的描述(表头),关系名是表名,元祖是一行,属性是列,分量一条记录中的一个列值。4、什么是关系数据库?关系和二维表有什么区别?关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。5、关系的完整性(实体完整性、参照完整性、用户自定义)和数据库主键的约束性实体完整性:关系的主码不能取空值,如果主码由若干属性组成都不能为空。实体以主码作为唯一性标识。参照完整性:一个关系中的外码,或者取空值(若属性组全为空),或者等于它参照的那个关系的主码值。用户自定义完整性:针对具体关系数据库的约束。数据库语言SQL6、什么是DDL、DML、DCL?(数据库语言有哪几种?)数据定义语言(DDL):Create、Drop、Alter数据操纵语言(DML):Insert、Update、Delete数据控制语言(DCL):Grant、Revoke数据查询语言:Select7、什么是视图,有什么作用?在数据库哪层?视图:是从一个或几个基本表导出的表,是一个虚表,数据库只存放视图的定义,不存放视图对应的数据,数据仍放在原来的基本表,基本表数据改变,通过视图查询也改变了,作用:1、能够简化用户操作,使数据库看起来更简单,清晰,简化查询操作。2、更安全,机密数据不出现在不应该看到这些数据的用户视图上。3、重构数据库时候,改变视图不用修改程序,使数据具有逻辑独立性。数据库设计8、简述数据库设计的几个阶段需求分析:详细调查现实世界要处理的对象,充分了解各种需求,在此基础确定新系统的功能。概念结构设计:经常采用自顶向下需求分析,自底向上概念结构设计。对需求分析收集到的数据进行分类组织形成实体、实体的属性,确定实体之间联系,设计分E-R图。逐一设计分E-R图,最后将所有分E-R图综合成一个系统的E-R图。逻辑结构设计:一般来讲把E-R图向关系模型转换,一个实体型转换为一个关系模式。一个一对一联系可以独立也可以和任意一端合并,一个一对多联系可以独立也可以和N端对应的关系模式合并,一个多对多联系独立转换为一个关系模式。对数据模型规范化,还根据具体需求设计相应的视图。数据库物理设计:关系模式存取方法的选择,比如索引、聚簇、哈希等存储方式。还应该确定数据库的存取结构,目前许多计算机有多个磁盘或磁盘阵列,因此可以将表和索引放在不同的磁盘上,在查询时磁盘驱动器并行工作,可以提高物理IO读写效率,也可以将比较大的表放在两个磁盘上,以加快存取速度。数据库的实施与维护:比如备份与恢复等待。9、什么是E-R图E-R图:实体-联系图,在概念结构设计中,对需求分析收集到的数据进行分类组织形成实体、实体的属性,确定实体之间联系,设计E-R图。10、分别解释1NF、2NF、3NF、BCNF、4NF范式:关系数据库中的关系是要满足一定要求的,满足不同程度的要求的为不同范式。规范化:一个低一级范式关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合。1NF:满足最低要求的叫第一范式,每一个分量必须是一个不可分的数据项。2NF:消除关系中的部分函数依赖就称为第二范式,部分函数依赖就是非主属性不完全依赖于码。3NF:每一个非主属性既不部分依赖于码,也不传递依赖于码。BCND:所有非主属性对每一个码都是完全函数依赖,没有任何属性完全依赖于非码的任何属性,就是除了码外一定不能有决定因素。数据库并发控制11、什么是事务,并发控制是保证事务的?事务:是一系列的数据操作,这些操作要么全不做,要么全做,不可分割。运行过程中发生某种故障不能继续执行,全部回滚到开始状态。并发控制中多个用户存取数据库时候可能会产生多个事务同时存取同一个数据的情况,不加控制就会破坏事务的一致性,为了保证事物的一致性所以进行并发控制。12、ACID(事物的四个性质)A原子性:要么都做,要么都不做。C一致性:如果运行中发生故障,必须回滚。不能让数据不一致。比如两人转钱,一半坏了,不一致俩人都没有钱。I隔离性:一个事物不能被其他事物干扰。D持续性:事物一旦提交,他对数据库的改变就应该是永久的。接下来的操作和故障不应该对刚才结果有任何影响。13、数据库中锁有什么作用?什么是只读锁、什么是只写锁?一个事物对数据加锁可以保证事物的四个特性,加锁后其他事物不能更新此数据对象,不会产生数据不一致性。写锁(排他锁/X锁):加写锁其他事物不能在对这个数据加任何类型锁,释放之前不能读取和修改。读锁(共享锁/S锁):事物对数据加读锁,其他事物可以读但不可以修改,可以加读锁不能加写锁。14、什么是触发器,有什么作用?用户定义在关系表上的一类由事件驱动的特殊过程,一旦定义了,用户对表的增、删、改操作均有数据库系统自动激活相应触发器触发器可以分为语句触发器和行级触发器,触发器动作体是一个匿名PL/SQL过程块,语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。行触发器用户可以用new和old引用数据,语句级不能。二、数据结构部分线性表15、单链表的就地逆置将头结点摘下,然后从第一节点开始,头插法建立单链表,直到最后一个节点为止。16、单链表可以用什么实现?指向结构体的指针实现,结构体中有两个成员,每个节点分为数据域和指针域,除了最后一个节点,每个节点指针域都指向下一个节点的地址,最后一个节点指针域指向NULL。也可以用结构体数组模拟这种操作,数组中每个下标都对应一个数据元素和游标,游标是下一个元素在数组中的下标,把未被使用的数组元素作为备用链表,下标为0的元素游标存放备用链表第一个节点的下标。数组最后一个元素游标存放第一个有效数值元素的下标,相当于头结点作用,游标为0表示指向为空。栈和队列17、实现一个队列的方法?为什么队列的顺序存储需要留一个空位?循环有什么好处?链式存储:把链表改装一下,加尾指针作为队列的尾部可以插入节点,头指针可以删除节点,相当于出队。顺序存储:正常的顺序存储想要利用空出的空间就必须移动元素,不移动还会浪费空间,循环队列可以解决这个问题,把这段连续的地址空间,想象成逻辑上的环,所以只要有空闲空间就能使用。但是当front和rear指针相等的时候有两种情况,一种是满,一种是空,为了区分这种情况,保留一个元素空间,我们假定当rear+1与front相等队列就满了。而空的时候是rear等于front。又因为是环也可能存在rearfront的情况,所以取模操作。另外计算队列长度的时候,rearfront队长为rear-front,但当rearfront队长为两段相加,所以通用公式为(rear-front+队列的总长度)%队列总长度树与二叉树18、什么是完全二叉树?完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。19、什么是二叉排序树,简述它的查找过程,二叉排序树的时间复杂度,遍历后得到什么样的序列?二叉排序树是一种二叉树,具有了一些独特性质,若左子树不为空,则左子树上所有节点的值均小于它的根节点的值,右子树不为空,则右子树上所有节点的值均大于它的根节点的值,而且它的左右子树也是二叉排序树。构造一个二叉排序树是为了提高动态查找中插入和删除的速度。查找过程:递归查找二叉排序树中是否存在要查关键字,若成功则指针指向该数据元素的节点,返回成功,如果关键字小于树中这个节点,则去它左子树中继续查找,大于则去右子树中查找。如果树中没有要查的关键字,则指针指向访问的上一个节点,以便于插入。插入过程:如果当查找失败且指针p为空,则新建根节点,如果要插入的关键字小于p指向节点的数据,则插入到左孩子,否则右孩子。删除过程:1叶节点直接删除2只有左或右子树删了接下面3左右子树都有的,找到要删除的节点的直接前驱或后继,用这个节点替换要删除的节点,然后在删除这个节点。二叉排序树,以链接的方式存储,有在执行插入或删除操作时候不用移动元素的优点,插入删除性能较好,而查找的时间复杂度取决与二叉排序树的形状。中序遍历后得到升序系列,所以也称为二叉排序树。20、什么是平衡二叉树?为了解决二叉查找树,查找时间依赖于形状的问题,平衡二叉树就是在建立二叉排序树的时候,对它做了一定的限制,使它保持平衡,使每一个节点的左子树和右子树的高度差至多为1。具体做法:找出距离插入节点最近且平衡因子绝对值大于一的节点,把它当为根的子树叫做最小不平衡子树,进行相应旋转,使之平衡。插入节点:LL型,向右旋转。RR型,向左旋转。RL型,先右转,再左转。LR型,先左转,再右转。21、什么是哈夫曼树?哈夫曼树的作用是什么?哈夫曼树:带权路径长度为从该节点到树根之间的路径长度与节点上权的乘积,带权路径长度WPL最小的二叉树称作哈夫曼树。构造过程:把带有权值的叶子节点按照从小到大的顺序排列成一个有序序列,取出前两个最小权值的节点作为一个新节点的两个子节点,左孩子一般比右孩子小,新节点权值为两个叶子的和,将新节点插入刚才有序序列适当位置,重新选出头两个最小的,重复上面过程。哈夫曼编码:为了解决当年远距离电报的数据传输的最优化问题,发明了哈夫曼编码,比如多英文文章传输,假设每个字母固定用一个

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

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

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

×
保存成功