计算机考研面试总结

计算机网络
1.OSI参考模型有几层?其中每一层的作用是什么?
(1)OSI参考模型分为七层结构,从下到上顺序依次为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
(2)每一层的作用如下:
层 作用
应用层 为应用软件提供服务
表示层 用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等
会话层 维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等
传输层 向用户提供的端到端服务,处理数据报错误,数据包次序,向高层屏蔽了下层数据通讯细节
网络层 为分组通过网络选择合适的路径,实现路由选择和分组转发拥塞控制等
数据链路层 在物理层提供的服务基础上,数据链路层在数据实体之间建立数据链路连接,传输以帧为单位的数据包,在采用差错控制和流量控制方法,是有差错的物理链路便成无差错的数据链路
物理层 利用传输介质为数据链路层提供物理连接,负责处理数据传输率并监控数据出错率,实现数据流的透明传输
2.什么是网络中的时延?它包括什么?
时延是指数据(一个报文或分组)从网络(或链路)的一端传送到另一端所需要的总时间,它由4部分构成:发送时延(或称传输时延)、传播时延、处理时延和排队时延。
3.计算机网络的拓扑结构有哪些?
网络拓扑结构按照几何图形的形状可分为四种类型:总线拓扑、环型拓扑、星型拓扑和网状拓扑。这些形状也可混合构成混合拓扑结构。不同的网络拓扑结构适用于不同的网络规模。例如局域网应用的是总线、星型或环型拓扑结构,而广域网则采用网状拓扑结构
4.你认为计算机网络的定义是什么?
广义观点:实现远程信息处理的系统或者能进一步达到资源共享的系统
资源共享观点(以能够相互共享资源的方式互联起来的自治计算机系统的集合)–目的:资源共享、组成单元:分布在不同地理位置的多台独立的“自治计算机”、网络协议:网络中计算机必须遵循的统一规则
用户透明性观点︰能为用户自动管理资源的网络操作系统,能够调用用户所需要的资源,整个网络就像一个大的计算机系统一样对用户是透明的
5.交换机,路由器和集线器三者的区别是什么?
路由器 交换机 交换机 集线器
工作层次 网络层 数据链路层 工作层次 数据链路层 物理层
转发依据 IP地址 Mac地址 宽带影响 独享 共享
功能 连接不同的网络 连接局域网中的电脑 数据传输 有目的发送 广播发送
宽带影响 共享宽带 独享宽带 传输模式 全双工或半双工 半双工
交换机最大的好处是快速,路由器最大的好处是控制能力强
6.IP地址的作用什么是?它分为几个部分?各个部分分别有什么作用?
IP地址的作用是为网络中的每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机,使它们能够进行通信。
IP地址分为网络号和主机号两个部分。
7.TCP和UDP有什么区别?它们有哪些应用?
TCP UDP
可靠性 可靠 不可靠
连接性 面向连接 无连接
报文 面向字节流 面向报文
效率 传输效率低 传输效率高
双工性 全双工 一对一、一对多、多对一、多对多
流量控制 滑动窗口 无
拥塞控制 慢开始、拥塞避免、快重传、快恢复 无
传输速度 慢 快
TCP有以下特点:
·TCP充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。
·TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
·根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)。
UDP有以下特点:
·UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
·传输途中出现丢包,UDP 也不负责重发。
·当包的到达顺序出现乱序时,UDP没有纠正的功能。
·并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
·如果需要以上的细节控制,不得不交由采用 UDP 的应用程序去处理。
UDP 常用于以下几个方面:
1.包总量较少的通信(DNS、SNMP等);
2.视频、音频等多媒体通信(即时通信);
3.限定于 LAN 等特定网络中的应用通信;
4.广播通信(广播、多播)。
8.TCP粘包问题如何解决?
·TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成
·粘包出现原因:
简单地说,在流传输中出现,UDP不会出现粘包,因为它有消息边界
1)发送端需要等缓冲区满才发送出去,造成粘包
2)接收方不及时接收缓冲区的包,造成多个包接收
·为避免粘包现象,可采取一下几种措施:
1)对于发送方引起的粘包现象,用户可通过编程设置来避免,TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满;
2)对于接收方引起的粘包,则可通过优化程序设计、精简接收进程工作量、提高接收进程优先级等措施,使其及时接收数据,从而尽量避免出现粘包现象;
3)由接收方控制,将一包数据按结构字段,人为控制分多次接收,然后合并,通过这种手段来避免粘包。
9.TCP 协议如何保证可靠传输?
(1)应用数据被分割成 TCP 认为最适合发送的数据块。
(2)TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
(3)校验和:TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
(4)TCP 的接收端会丢弃重复的数据。
(5)流量控制:TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。(TCP 利用滑动窗口实现流量控制)
(6)拥塞控制:当网络拥塞时,减少数据的发送。
(7)停止等待协议:也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。 超时重传:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
10.TCP怎么解决拥塞控制?
TCP的拥塞控制采用了四种算法,即慢开始、拥塞避免、快重传和快恢复。
(1)慢开始算法
在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd = 1,即一个最大报文段长度MSS。每收到一个对新报文段的确认后,将cwnd指数型增加,即增大一个MSS。用这样的方法逐步增大发送方的拥塞窗口 cwnd,可使分组注入网络的速率更加合理。
(2)拥塞避免算法
拥塞避免算法的做法如下:发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS的大小,而不是加倍,使cwnd按线性规律缓慢增长(即加法增大),而当出现一次超时(网络拥塞)时,令慢开始门限ssthresh等于当前cwnd的一半(即乘法减小)。
(3)快重传
快重传技术使用了冗余ACK来检测丢包的发生。同样,冗余ACK也用于网络拥塞的检测(丢了包当然意味着网络可能出现了拥塞)。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
(4)快恢复
快恢复算法的原理如下:发送端收到连续三个冗余ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh设置为出现拥塞时发送方cwnd的一半。与慢开始(慢开始算法将拥塞窗口cwnd 设置为1)的不同之处是,它把cwnd 的值设置为慢开始门限ssthresh改变后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
11.HTTP 与 HTTPS 的区别是什么?
(1)HTTPS 协议需要到CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。
(2)HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
(3)HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
12.在浏览器中输入网址后到呈现页面经历了那些步骤?
网站文件都是放在服务器上的,服务器地址是一串数字,为方便记忆会为其绑定一个域名。大致过程为:输入网址—DNS域名解析—建立TCP连接—发送HTTP请求—服务器处理并返回结果—浏览器生成页面。
(1)域名解析:先查询本地域名服务器,然后根域名服务器,然后顶级域名服务器,最后权限域名服务器
(2)建立TCP连接:三次握手(客户端向服务器发送带有syn标识的数据包、服务端返回ack/syn数据包、客户端发送ack数据包)确保建立连接。
(3)发送http请求:发送请求报文(报文首部、空行、主体),报文首部包含请求行和首部信息,十分重要。
(4)服务器处理:如果是首次访问则直接返回页面资源,非首次则判断缓存文件是否需要更新,返回响应报文和相关文件。
(5)浏览器生成页面:先解析html、渲染布局。

计算机组成原理
1.什么是局部性原理?
局部性原理可以分为时间局部性和空间局部性。
(1)时间局部性:如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。程序循环、堆栈等是产生时间局部性的原因。
(2)空间局部性:在最近的将来将用到的信息很可能与正在使用的信息在空间地址上是临近的。
2.Cache是什么,为很么要采用Cache,原理是什么?
(1)Cache存储器,电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM之间,规模较小,但速度很高的存储器,通常由SRAM组成。它是位于CPU与内存间的一种容量较小但速度很高的存储器
(2)Cache可以提高CPU访问主存的速度和计算机系统处理速度,中央处理器绝大多数存取主存储器的操作能为存取高速缓冲存储器所代替,能极大缓和中央处理器和主存储器之间速度不匹配的矛盾。
(3)高速缓冲技术就是利用程序访问的局部性原理。
3.Cache有几种地址映射方法,分别有什么优缺点?
直接映射、全相联映射、组相联映射
4.PC、IR和MAR、MDR及其联系
PC:程序计数器,用于存放下一条指令的地址,当取完一个字节以后,PC的值会自动加一,为取在下一条指令做准备。
IR:指令寄存器。用于存放当前正在执行的指令。
MAR:主存地址寄存器。存在于CPU中,存放的是将要访问主存的地址。注意,MAR之中存放的只有地址,即存储单元的索引地址
MDR:主存数据寄存器。存在于CPU中,存放的是某一个存储单元
CPU从PC中取出指令所在的地址单元(取指阶段),之后进行译码,将该地址放进MAR中。MAR找到对应的存储单元,读取数据并将其放到MDR中,此时MDR存放的是指令加数据。之后把指令部分放到IR中进行指令操作,数据放到寄存器或者ACC中计算。
5.计算机系统5层层次结构
微程序机器、传统机器、操作系统机器、汇编语言机器、高级语言机器;微程序机器和传统机器是物理机,其他是虚拟机。
6.冯诺依曼机器的主要特点
1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部分组成;
2)指令和数据存储在存储器中,并可以按地址访问;
3)指令和数据均以二进制表示;
4)指令由操作码和地址码构成,操作码指明操作的性质,地址码表示操作数在存储器中的位置;
5)指令在存储器内按顺序存放,通常按自动的顺序取出执行;
6)机器以运算器为中心,I/O设备与存储器交换数据也要通过运算器。
7.CPU的功能
中央处理器(CPU)由运算器和控制器组成。CPU 的具体功能包括:
指令控制(完成取指令、分析指令和执行指令的操作,即程序的顺序控制)
操作控制(一条指令的功能往往由若干操作信号的组合来实现。CPU 管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作)
时间控制(对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号)
数据加工(对数据进行算术和逻辑运算)
中断处理(对计算机运行过程中出现的异常情况和特殊请求进行处理)
8.引入总线目的
在冯诺依曼结构中,各个部件之间均有单独连线,不仅线多,而且导致扩展I/O设备很不容易。即扩展一个I/O设备,需要连接很多线。 因此,引入了总线连接方式,将多个设备连接在同一组总线上,构成设备之间的公共传输通道。
9.总线的两大基本特征是什么?
1)共享:多个部件连接在同一组总线上,各个部件之间都通过该总线进行数据交换。
2)分时:同一时刻,总线上只能传输一个部件发送的信息;
10.系统总线按照传输信息的不同,分成哪几类?是单向的,还是双向的?
数据总线、地址总线以及控制总线
·数据总线:各个功能部件之间传送数据信息,双向传输;
·地址总线:用来指明数据总线上,源数据或目的数据所在的主存单元的地址。单向:由CPU发出
·控制总线:用来发送各种控制信号。对于控制总线中的单根线,是单向的,即只能由一个部件发向另一个部件。而一组控制总线中,有输入也有输出,因此,控制总线也可以看成是双向的。
11.总线通信控制分类
同步通信、异步通信、半同步通信、分离式通信
12.存储器按存取方式,可以分成哪四类?哪些属于随机访问存储器,哪些属于串行访问存储器?
1)可以分为随机存储器、只读存储器、顺序存储器和直接存储器;
2)随机存储器和只读存储器属于随机存储器,即存取时间与物理地址无关;
3)顺序存储器(典型的如磁带)和直接存储器(典型的如磁盘)属于串行存储器,即存取时间与物理地址有关。
13.常见的存储系统层次结构有哪两种?透明性如何?各自用来解决什么问题的?
1)缓存-主存层次:用来缓解CPU和主存速度不匹配的问题,由硬件来完成,对所有的程序员完全透明。
2)主存-辅存层次:用来解决主存容量不够的问题,由操作系统和硬件共同完成,对应用程序设计者透明,对系统程序设计者不透明。
14.Cache常用的替换算法有哪些?哪个命中率最高?
先进先出、近期最少使用算法和随机替换算法,命中率最高的是近期最少使用算法
15.中断的概念
计算机在执行程序过程中,当出现异常清空或特殊请求时,计算机停止现行程序的运行,转去处理这些异常清空或特殊请求,处理结束后,再返回现行程序的间断处,继续执行原程序,即为中断。
16.中断服务程序的基本流程包括哪四部分?
保护现场、中断服务、恢复现场、中断返回
17.什么是DMA?
直接内存访问。在主存和I/O设备之间建立独立的总线连接。

计算机操作系统
1.什么是操作系统
操作系统是管理硬件和软件的一种应用程序。操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层,使应用软件和硬件进行分离。
2.操作系统的主要功能
进程管理: 进程管理的主要作用就是任务调度,在单核处理器下,操作系统会为每个进程分配一个任务,进程管理的工作十分简单;而在多核处理器下,操作系统除了要为进程分配任务外,还要解决处理器的调度、分配和回收等问题
内存管理:内存管理主要是操作系统负责管理内存的分配、回收,在进程需要时分配内存以及在进程完成时回收内存,协调内存资源,通过合理的页面置换算法进行页面的换入换出
设备管理:根据确定的设备分配原则对设备进行分配,使设备与主机能够并行工作,为用户提供良好的设备使用界面。
文件管理:有效地管理文件的存储空间,合理地组织和管理文件系统,为文件访问和文件保护提供更有效的方法及手段。
提供用户接口:操作系统提供了访问应用程序和硬件的接口,使用户能够通过应用程序发起系统调用从而操纵硬件,实现想要的功能。
3.软件访问硬件的几种方式
直接访问:由用户进程直接控制主存或 CPU 和外围设备之间的信息传送。直接程序控制方式又称为忙/等待方式,CPU循环等待I/O设备准备完成
中断驱动:为了减少程序直接控制方式下 CPU 的等待时间以及提高系统的并行程度,系统引入了中断机制。中断机制引入后,外围设备仅当操作正常结束或异常结束时才向 CPU 发出中断请求。在 I/O 设备输入每个数据的过程中,由于无需 CPU 的干预,一定程度上实现了 CPU 与 I/O 设备的并行工作
DMA直接内存访问:为了进一步减少 CPU 对 I/O 操作的干预,防止因并行操作设备过多使 CPU 来不及处理或因速度不匹配而造成的数据丢失现象,引入了 DMA 控制方式。CPU和外设之间独立建立一条总线。
通道控制方式:通道,独立于 CPU 的专门负责输入输出控制的处理机,它控制设备与内存直接进行数据交换。有自己的通道指令,这些指令由 CPU 启动,并在操作结束时向 CPU 发出中断信号
4.进程和线程的关系
·一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
·进程作为资源分配的最小单位,资源是分配给进程的,同一进程的所有线程共享该进程的所有资源
·真正在处理机上运行的是线程。
·线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
·进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
·在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
5.进程间的通信方式
·消息传递:进程间的交流不需要共享变量,直接就可以进行通信;消息传递分为发送方和接收方(消息头+消息体)
·先进先出队列:先进先出队列指的是两个不相关联进程间的通信,两个进程之间可以彼此相互进程通信,这是一种全双工通信方式
·管道:管道用于两个相关进程之间的通信,这是一种半双工的通信方式,如果需要全双工,需要另外一个管道。
·直接通信:在这种进程通信的方式中,进程与进程之间只存在一条链接,进程间要明确通信双方的命名。
·间接通信:间接通信是通信双方不会直接建立连接,而是找到一个中介者,这个中介者可能是个对象等等,进程可以在其中放置消息,并且可以从中删除消息,以此达到进程间通信的目的。
·消息队列:消息队列是内核中存储消息的链表,它由消息队列标识符进行标识,这种方式能够在不同的进程之间提供全双工的通信连接。
·共享内存:共享内存是使用所有进程之间的内存来建立连接,这种类型需要同步进程访问来相互保护。
6.进程间状态
·新建态:进程的新建态就是进程刚创建出来的时候
·就绪态:就绪态指的是可运行,但因为其他进程正在运行而处于就绪状态
·运行态:进程正在运行的状态
·阻塞态:阻塞态又被称为睡眠态,它指的是进程不具备运行条件,正在等待被 CPU 调度
·终止态:进程的终止态就是指进程执行完毕,到达结束点,或者因为错误而不得不中止进程。
7.调度算法都有哪些
先来先服务、最短作业优先(非抢占式)、最短剩余时间优先(抢占式)、时间片轮转、优先级调度、多级反馈队列
8.分页和分段
共同点:两者都采用离散分配方式,且都地址映射机构来实现地址的转换
不同点:
·页是信息的物理单位采用分页存储管理方式是为了实现离散分配方法。提高内存的利用率,采用分段目的主要在于能更好的满足用户的需求
·页的大小固定且有系统决定,在采用分页存储管理方式中直接由硬件实现。而段的大小不固定,决定于用户所编写的程序
分页的地址空间是一维的,分页完全是系统完全是行为,分段系统中是二维的。
段页式存储管理方式
基本原理是分段和分页相结合,逻辑上分段在按照段进行物理分页。
9.页面置换算法
·最佳置换算法–选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面,无法实现
·先进先出算法–淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰
·最近最久未使用算法–算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问一来所经历的时间T,当需要淘汰一个页面时,选择现有页面中T值最大的,即最近最久未使用的页面予以淘汰
·最不经常使用算法–算法赋予一个计数器访问一次后计数器加一,淘汰计数器最小的
·时钟算法
10.磁盘臂调度算法
先来先服务算法–根据进程请求访问磁盘的先后顺序进行调度
最短寻找时间优先算法(饥饿)–优先处理与当前磁头最近的磁道(贪心思想)
扫描算法–只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移
Look扫描算法–基于扫描算法,在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向
循环扫描算法–只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。
C-Look 调度算法–基于循环扫描算法,在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向。
11.DMA方式特点
·数据传送以数据块为基本单位
·所传送的数据从设备直接送入主存,或者从主存直接输出到设备上
·仅在传送一个或多个数据块的开始和结束时才需 CPU 的干预,而整块数据的传送则是在DMA控制器的控制下完成。
12.死锁产生的必要条件
·互斥条件:资源不共享
·保持和等待条件:已经获取资源的进程申请其他资源且占着自己的资源不放
·不可抢占条件:分配给一个进程的资源不能强制的从其他进程抢占资源,只能主动释放
·循环等待:死锁发生时,系统中一定有两个或者两个以上的进程组成一个循环,循环中的每个进程都在等待下一个进程释放的资源
13.死锁的恢复方式
通过抢占进行恢复–某个资源从进程中强制取走给其他进程使用,使用完后又送回
通过回滚进行恢复–从上一个较早的检查点上开始,这样所需要资源的进程会回滚到上一个时间点,在这个时间点上,死锁进程还没有获取所需要的资源,可以在此时对其进行资源分配
杀死进程恢复–直接杀死一个死锁进程
14.如何破坏死锁
破坏互斥条件(假脱机技术)
破坏保持等待的条件(进程在请求其他资源时,先释放所占用的资源,然后再尝试一次获取全部的资源)
破坏不可抢占条件(虚拟化)
破坏循环等待条件(如果需要另外一种资源,必须释放当前资源)

数据结构
1.时间复杂度和空间复杂度的区别是什么?
时间复杂度是对一个算法运行所占用CPU时间多少的量度
空间复杂度是对一个算法在运行过程中临时占用的存储空间的大小的量度
2.数据结构的4种逻辑结构
集合结构:结构中的数据元素之间除了同属于一种类型外,无其他关系。
线性结构:结构中的数据元素之间存在一对一的关系。
树形结构:结构中的数据元素之间存在一对多的关系。
图状结构或网状结构:结构中的数据元素之间存在多对多的关系。
3.数据结构中的存储结构有哪几种?各有什么有优缺点?
顺序存储结构 链式存储结构 索引存储结构 哈希(或散列)存储结构
原理 顺序存储结构是一种物理结构,是按存储单元的顺序依次连续存放逻辑结构中所有结点形成的结构。逻辑上彼此相邻的结点,在存储器上的物理位置也彼此比邻 链式存储结构的结点是在元素数据存储的同时附加存储一个指针数据。指针的作用是指出该结点逻辑上的后继结点的存储位置 在存储数据元素信息的同时还建立附加的索引表,存储所有数据元素信息的表称为主数据表,其中每个数据元素有一个关键字和对应的存储地址 根据元素的关键字通过哈希(或散列)函数直接计算出一个值,并将这个值作为该元素的地址
优点 存储效率高,可实现对元素的随机存取 便于数据修改 查找效率高效 查找速度快
缺点 不便于数据修改,对元素的插入或删除操作可能需要移动一系列的元素 存储空间的利用效率低,且不能对元素进行随机存取 需要建立索引表,增加了空间开销 一般只适合要求对数据能够进行快速查找和插入的场合
4.最小生成树的算法有哪些?说明一下它们的时间复杂度以及各自的特点
普里姆(Prim)算法 克鲁斯卡尔(Kruskal)算法
思想 Prim算法基于一种贪心的思想,通过局部最优策略,每次将一条边加入所构建的生成树中,加完n-1条边后,保证最后所得的生成树是整体最优的,即最小生成树 Kruskal算法同样是基于贪心策略,但是它和Prim算法不同的是,在算法过程中它并不维护一个连通的分量,而是将多个连通分量合并到一起得到一颗生成树。
时间复杂度 O(n2) O(e2)
特点 Prim算法的执行时间与图中的边数e无关,所以特别适合用稠密图求最小生成树 Kruskal算法的执行时间仅与图中的边数e有关,所以特别适合用稀疏图求最小生成树
5.最短路径的算法,迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd)算法有什么不同?
迪杰斯特拉(Dijkstra)算法 弗洛伊德(Floyd)算法
思想 Dijkstra算法是典型的最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 弗洛伊德(Floyd)算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径算法描述如下:a.从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大;b.对于每一对顶点u和 v,看看是否存在一个顶点w 使得从u到w再到v比己知的路径更短。如果是更新它。
时间复杂度 O(n2) O(n3)
特点 求解的是单源最短路径问题、属于贪心算法、不能算有负权的图、对图中的每个顶点都使用该算法,就可以得到与Floyd算法相同的效果 求解的是每对顶点之间的最短路径问题、属于动态规划、可以算有负权的图、可以通过Dijkstra算法实现
6.图的存储方式有哪些?每一种方式各有什么优缺点?
邻接矩阵表示法 邻接表表示法
优点 直观、简单;适合存储表示稠密图;方便计算任一顶点的度 适合存储表示稀疏图,能节省存储空间;给定一顶点,能很容易地找出它的所有邻边
缺点 适合表示稀疏图,会浪费较大的存储空间 存储有向图时,所需的存储空间为存储无向图的2倍,比较浪费存储空间
7.图的深度和广度遍历是什么,工程上有什么实际应用?以及它们的时空复杂度是多少?
图的深度优先搜索(Depth First Search),简称DFS
从图中某顶点v出发:
① 访问顶点v;
② 依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
③ 若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。
广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS
广度优先搜索使用队列来实现,整个过程也可以看做一个倒立的树形:
① 把根节点放到队列的末尾。
② 每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。
③ 找到所要找的元素时结束程序。
④ 如果遍历整个树还没有找到,结束程序。
实际运用:
DFS算法:求解迷宫问题时可以搜索从入口到出口的所有迷宫路径、拓扑排序
BFS算法:求解迷宫问题时可以搜索从入口到出口的最短路径、扫雷游戏
8.排序
比较类排序
冒泡排序(通过无序区中相邻元素关键字间的比较和位置的交换使关键字最小的元素如气泡一般逐渐往上“漂浮”直至“水面”)
快速排序
·在待排序的 n 个元素中任取一个元素(通常取第一个元素,也可随机选取)作为基准,把该元素放入适当位置后,数据序列被此元素划分成两部分。所有关键字比该元素关键字小的元素放置在前一部分,所有比它大的元素放置在后一部分,并把该元素排在这两部分的中间(称为该元素归位),这个过程称为一趟快速排序,即一趟划分;
·之后对产生的两个部分分别重复上述过程,直至每部分内只有一个元素或者空为止。简而言之,每趟使序列的一个元素放入适当为止,将序列一分为二,对子序列按递归方式继续这种划分,直至划分的子序列的长位 1 或 0(递归出口)
插入排序
直接插入排序、折半插入排序、希尔排序
选择排序
简单/直接选择排序
堆排序(大根堆和小根堆)
归并排序
二路归并排序
基数排序(通过“分配”和“收集”过程来实现排序,不需要进行关键字间的比较,是一种借助于多关键字排序的思想对单关键字排序的方法)
排序算法 最好时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定
冒泡排序 O(n) O(n2) O(n2) O(1) 是
直接插入排序 O(n) O(n2) O(n2) O(1) 是
简单/直接选择排序 O(n2) O(n2) O(n2) O(1) 否
折半插入排序 O(n) O(n2) O(n2) O(1) 是
希尔排序 O(n) 约O(n1.3) O(n2) O(1) 否
快速排序 O(nlog2n) O(nlog2n) O(n2) O(log2n) 否
堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 否
二路归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 是
基数排序 O(d(n + r)) O(d(n + r)) (d(n + r)) O® 是

数据库
1.描述一下数据库的锁机制
从数据库系统角度分为三种:排他锁、共享锁、更新锁。
共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页;通常是该页被读取完毕,S锁立即被释放。
排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。
更新(U)锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放
2.什么是事务?
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务和程序是两个概念。一般来说 一个程序中包含多个事务
3.什么是事务的ACID特性?恢复技术能保证事务的哪些特性?
原子性–事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性–事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。即指系统从一个正确的状态到另一个正确的状态。
隔离性(一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰)
持续性–持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
恢复技术能保证事务的原子性、一致性和持续性。
4.数据库中的B/S和C/S的区别是什么
B/S结构(浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用
C/S(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到客户端和服务端,降低了系统的通讯开销,充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准
5.存储过程和函数分别是什么
存储过程:存储在数据库目录中的一些的声明性SQL语句,具有运行效率高、降低客户机和服务器之间的通信量以及方便实施企业规则等优点。
函数分为单行函数和组函数
单行函数:针对SQL语句影响的每一行都进行处理,并针对这一行返回一个结果SQL影响多少行就返回多少个结果
组函数:对SQL语句影响的所有行进行综合处理,最终返回一个结果无论SQL语句影响多少行都只返回一个结果(组函数会忽略空值)
6.什么是索引?其作用是什么?
索引是数据库中专门用于帮助用户快速查找数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取,加快查找速度。
索引可以帮助用户快速地查找数据,利用索引可以快速访问数据库表中的特定信息。
7.什么是主键和外键?他们的特点和用途是什么?
主键 外键
定义 表用于唯一标识一条记录的一个或多个字段 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键
特点 不能为空,不能重复 只能引用外表中的列的值或用空值,可以重复
用途 唯一地标识一条记录;保证实体的完整性;加快数据库的操作速度 保持数据一致性、完整性;控制存储在外键表中的数据,使两张表形成关联(用来和其他表建立联系用的)
8.什么是基本表?什么是视图?两者的区别和联系是什么?
基本表是本身独立存在的表,在SQL中一个关系就对应一个表。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
视图是从一个或几个基本表(或视图)导出的表。它与基本表不同。视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化,它可以和基本表一样被查询、被删除。也可以在一个视图之上再定义新的视图,但对视图的更新(增、删、改)操作则有一定的限制。
基本表与视图的区别和联系:
区别:视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。
联系:视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。所以基本表中的数据发生变化,从视图中查询出的数据也就随之发生改变。
9.视图有哪些优点?
·视图能够简化用户的操作
·视图使用户能以多种角度看待同一数据
·视图对重构数据库提供了一定程度的逻辑独立性
·视图能够对机密数据提供安全保护
·使用视图可以更清晰的表达查询。
10.什么是E-R图?
E-R图也称实体-联系图,提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。
11.简述数据库软件系统的建立流程
需求分析:了解用户的数据需求、处理需求、安全和完整性需求。
概念结构设计:通过数据抽象,设计系统的概念模型,一般为E-R模型。
逻辑结构设计:设计系统的模式和外部模式,特别是关系模型的基本表和视图。
物理结构设计:设计数据的存储结构和访问方法,如索引的设计。
系统实现:组织数据存储,编写应用程序,试运行。
运行和维护:系统投入运行,进行长期维护。
12.什么是数据字典?其作用是什么?
数据字典–系统中各类数据描述的集合。数据字典的内容通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。数据项是组成数据的最小组成单位,若干个数据项可以组成-一个数据结构。数据字典通过对数据项和数据结构的定义来描述数据流和数据存储的逻辑内容。
数据字典的作用–数据字典是关于数据库中数据的描述,在需求分析阶段建立,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实、完善。
13.什么是游标?其作用是什么?
游标–系统为用户开设的一一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。
作用–用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。
14.什么是触发器?有什么功能
触发器–用户定义在关系表上的一-类由事件驱动的特殊过程。一旦定义,任何用户对表的增删改操作均由服务器自动激活相应的触发器,在DBMS(数据库管理系统)核心层进行集的完整性控制。
触发器类似于约束,但是比约束更加灵活,可以实施比外键约束、CHECK约束更为复杂的检查和操作,具有更精细和更强大的数据控制能力。
15.数据库并发操作带来的数据不一致包括哪些?产生不一致的主要原因是什么?
丢失修改:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。
不可重复读:事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次得到读取结果。
读“脏”数据:事务T1修改某一数据并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时被T1修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则此时T2读到的数据就为“脏”数据。
产生不一致的主要原因是并发操作破坏了事务的隔离性。
16.数据库的并发控制的主要技术有哪些?
并发控制的主要技术有封锁、时间戳和乐观控制法,DBMS(数据库管理系统)一般都采用封锁方法
17.什么是数据库范式?有什么作用?
关系数据库中的关系满足一定要求的,满足不同程度要求的为不同的范式。满足最低要求的叫第一范式,简称1NF;在第一范式的基础上满足进一步要求的称为第二范式,简称2NF,其余范式以此类推
第一范式 1NF(属于第一范式关系的所有属性都不可再分,即数据项不可分)
第二范式 2NF(若某关系R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,则关系R属于第二范式)
第三范式 3NF(非主属性既不传递依赖于码,也不部分依赖于码)
BC范式 BCFN(关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>属于BCFN)
第四范式 4NF(限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖)
第五范式 5NF(必须满足第四范式;表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键)
规范化: 一个低一级的关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合,这个过程叫做规范化。
作用:可以尽量减少数据冗余、避免插入异常、删除异常和更新异常
18.什么是数据库的完整性?其目的是什么?数据库完整性有哪些?
数据库的完整性是指数据的正确性和相容性,其目的是为了防止数据库中的数据存在不符合语义的数据,也是防止数据库中存在不正确的数据。
数据库的完整性有以下三种:实体完整性、参照完整性和用户定义的完整性。前两种是关系型数据库必须要满足的,用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
实体完整性:要求每个表中只有一个主键,且主键必须唯一,不能为空。
参照完整性:表中的外键必须是另一个表的主键的有效值,或者取空值。它是数据表间数据参照引用的约束,也就是对外键的约束。
用户自定义的完整性:针对某一具体关系型数据库的约束条件,它反映某一具体应用涉及的数据必须满足的语义要求。
19.什么是数据库系统模式?
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仪涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新的。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
20.数据库的三级模式是什么?数据库系统的三级模式结构
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一个模式。
外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集。一个数据库可以有多个外模式。
内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述是数据在数据库内部的组织方式。
21.什么是数据库的两级映像和数据库的数据独立性?
为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
外模式/模式映像–模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。
模式/内模式映像–数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
数据独立性–当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
22.数据库的活锁与死锁是什么?
活锁–如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待;T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待;然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求…T2有可能永远等待。
死锁–如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
23.数据库DBA、DBMS的作用是什么?
数据库管理系统(DBMS)–数据库管理系统是位于用户与操作系统之间的一层数据管理软件。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。它的主要功能包括以下几个方面:
数据定义功能–数据库管理系统提供数据定义语言(DDL),用户通过它可以方便地对数据库中的数据对象的组成与结构进行定义。
数据组织、存储和管理–数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存取方法(如索引查找、 hash查找、顺序查找等)来提高存取效率。
数据操纵功能–数据库管理系统还提供数据操纵语言(DML),实现对数据库的基本操作,如查询、插入、删除和修改等。
数据库的事务管理和运行管理–数据库在建立、运用和维护时由数据库管理系统统一管理和控制,以保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
数据库的建立和维护功能–数据库的建立和维护功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。
其他功能–其他功能包括通信功能;数据转换功能;互访和互操作功能等。
数据库系统(DBS)–数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹤离᭄ꦿ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值