小工具知识网

当前位置: 首页 > 行业知识 > 计算机复试面试基础知识(八股文)(数据库、数据结构、操作系统、计网、机组等)

行业知识

计算机复试面试基础知识(八股文)(数据库、数据结构、操作系统、计网、机组等)

2026-11-02 06:49:31 来源:互联网转载

一、数据库部分

���据库绪论

()

1、简述三层模式、两级映射,分别有什么作用?

模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是数据库系统模式结构的中间层,即不涉及数据的物理存储细节,也与具体应用程序开发工具语言无关。

()

外模式(用户模式):是用户能看见和使用的局部数据的逻辑结构和特征描述,是与某一应用有关的数据的逻辑表示,是模式的子集,一个数据库可以有多个外模式。

内模式(存储模式):数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,如存储方式是按照某个属性升序存储,什么索引等。

外模式模式映像:当模式发生改变,数据库管理员对外模式模式映像作相应改变,可使外模式不变,从而应用程序不用修改。保证数据与程序的逻辑独立性。

模式内模式映像:当数据库的存储结构改变了,由数据库管理员对模式内模式映像作相应改变,可以保持模式不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。

三级模式使用户能逻辑地抽象地处理数据而不关心数据在计算机内具体表示方式与存储方式,两级映像保证了数据库系统中的数据有较高的逻辑独立性和物理独立性。

2、说出至少三种数据库类型(层次,网状,关系)并简要解释了一下

层次模型:用树形结构来表示各类实体以及实体间的联系,有且只有一个节点没有双亲节点(根节点),其他的都有且只有一个双亲节点。只能直接表示的是一对多联系。

优点:效率高结构清晰,性能优于关系数据库,不低于网状。

缺点:现实世界很多联系都不是层次的,如节点间多对多联系,还有一个节点具有多个双亲的情况都不好表示。

网状模型:对于非层次关系的联系,用层次表示非树形结构是很不直接的,网状模型可以很好的表示,它允许有一个以上的节点没有双亲,一个节点也可以有多个双亲,可以更直接地描述现实世界。

优点:更直接描述现实世界,性能也较好,存取效率也较高。

缺点:结构比较复杂不利于掌握,用户编程还得了解系统结构细节,加重了编程的负担。

关系模型:通常来看关系就是一张规范二维表,实体还是实体间的联系都用关系来表示,对数据的检索和更新结果也是关系。

优点:概念单一,用户易懂易用,而且存取路径是对用户透明的,从而有更高的数据独立性和安全性,也简化程序员的工作。

缺点:查询效率往往不如格式化数据模型,为了提高性能,增加开发DBMS难度。

关系数据库

3、简述关系与关系模式的区别。

关系实质是一张二维表,关系模式是对关系的描述,关系是关系模式在某一时刻的状态或内容。

关系模式是静态的、稳定的,而关系是动态的,随时间不断变化的,因为关系操作不断更新数据库中的数据。

通俗的说:关系是一张二维表,关系模式是表格的描述(表头),关系名是表名,元组是一行,属性是列,分量是一条记录中的一个列值。

4、什么是关系数据库?关系和二维表有什么区别?

关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。

在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。

5、关系的完整性(实体完整性、参照完整性、用户自定义)和数据库主键的约束性

实体完整性:关系的主码不能取空值,如果主码由若干属性组成都不能为空。实体以主码作为唯一性标识。

参照完整性:一个关系中的外码,或者取空值(若属性组全为空),或者等于它参照的那个关系的主码值。

用户自定义完整性:针对具体关系数据库的约束。

数据库语言SQL

6、什么是DDL、DML、DCL?(数据库语言有哪几种?)

数据定义语言(DDL):Create、Drop、Alter

数据操纵语言(DML):Insert、Update、Delete

数据控制语言(DCL):Grant、Revoke

数据查询语言:Select

7、什么是视图,有什么作用?在数据库哪层?

视图:是从一个或几个基本表导出的表,是一个虚表,数据库只存放视图的定义,不存放视图对应的数据,数据仍放在原来的基本表,基本表数据改变,通过视图查询也改变了,

数据库设计

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、什么是脏读?幻读?不可重复读?

1、脏读:事务 A 读取了事务 B 更新的数据,然后 B 回滚操作,那么 A 读取到的数据是脏数据

2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务 A 多次读取的过程中,对数据作了更新并提交,导致事务 A 多次读取同一数据时,结果 不一致。

3、幻读:系统管理员 A 将数据库中所有学生的成绩从具体分数改为 ABCDE 等级,但是系统管理员 B 就在这个时候插入了一条具体分数的记录,当系统管理员 A 改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

不可重复读侧重于修改,幻读侧重于新增或删除(多了或少量行),脏读是一个事务回滚影响另外一个事务。

补:什么是活锁和***锁?解决办法是什么?

1、 活锁:由于系统调度原因,某些事务的加锁请求得不到响应而永远等待下去,称为

活锁。

解决办法:采用合理的调度方法,如先来先服务策略。

2、***锁:两个或多个事务都已封锁了一些数据对象,然后又都请求对方被封锁的数据对象,两个事务永远不能结束,形成***锁。

预防:一次封锁法:要求每个事务必须一次将所有要使用的事务加锁,否则不能继续执行。

顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

诊断与解除:超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了***锁。

等待图法:等待图是一个有向图,正运行的事务表示节点,事务等待的情况表示边,如果图中存在回路,则表示系统中存在回路。

二、数据结构部分

线性表

15、单链表的就地逆置

将头结点摘下,然后从第一节点开始,头插法建立单链表,直到最后一个节点为止。

16、单链表可以用什么实现?

指向结构体的指针实现,结构体中有两个成员,每个节点分为数据域和指针域,除了最后一个节点,每个节点指针域都指向下一个节点的地址,最后一个节点指针域指向NULL。

也可以用结构体数组模拟这种操作,数组中每个下标都对应一个数据元素和游标,游标是下一个元素在数组中的下标,把未被使用的数组元素作为备用链表,下标为0的元素游标存放备用链表第一个节点的下标。数组最后一个元素游标存放第一个有效数值元素的下标,相当于头结点作用,游标为0表示指向为空。

栈和队列

17、实现一个队列的方法?为什么队列的顺序存储需要留一个空位?循环有什么好处?

链式存储:把链表改装一下,加尾指针作为队列的尾部可以插入节点,头指针可以删除节点,相当于出队。

顺序存储:正常的顺序存储想要利用空出的空间就必须移动元素,不移动还会浪费空间,循环队列可以解决这个问题,把这段连续的地址空间,想象成逻辑上的环,所以只要有空闲空间就能使用。

但是当front和rear指针相等的时候有两种情况,一种是满,一种是空,为了区分这种情况,保留一个元素空间,我们假定当rear+1与front相等队列就满了。而空的时候是rear等于front。又因为是环也可能存在rear>front的情况,所以取模操作。

另外计算队列长度的时候,rear>front队长为rear-front,但当rear

上一篇:头歌实践教学平台Python-列表类型翻转教学

下一篇:服务器怎么共享电影?