考研复试问题汇总

计算机考研复试问题总结

文章目录

  • 计算机考研复试问题总结
  • 一 . 计算机网络
    • 1.TCP连接建立(三次握手)
    • 2.TCP连接释放(四次挥手)
    • 3.计算机网络的主要功能?
    • 4.谈下你对五层网络协议体系结构的理解?
    • 5.流量控制的常见方式?
    • 6.可靠传输机制有哪些?
    • 7.虚电路和数据报的区别(网络层提供的两种服务,比较其优缺点)
    • 8.端到端通信和点到点通信的区别?
    • 9.MAC地址与IP地址的区别
    • 10.解决IPv4地址紧缺的办法
    • 11.TCP与UDP的区别
    • 12.对于视频网站和视频聊天,用 TCP 还是用 UDP
    • 13.TCP的可靠性如何保证?
    • 14.TCP拥塞控制的四种算法
    • 15.如果要做简单网络应用OSI哪些层可以不要
    • 16.数据链路层和网络层怎么实现安全
    • 17.计网交换技术包括什么
    • 18.一台主机是否只能有一个ip?
    • 19.流量控制在那层实现
    • 20.曼彻斯特编码与差分曼彻斯编码的区别
    • 21.对称加密算法
    • 22.CSMA/CD协议
    • 23.计算机网络分层优点
    • 24.网络协议特点
    • 25.网络延迟有哪些
  • 二 . 操作系统
    • 1.操作系统
    • 2.进程和程序
    • 3.进程和线程
    • 4.进程状态
    • 5.进程通信
    • 6.作业调度(获得处理机资源)
    • 7.进程调度算法
    • 8.进程同步和互斥
    • 9.进程同步的四个准则
    • 10.死锁和饥饿
      • 死锁
      • 产生死锁原因
      • 死锁的四个必要条件
      • 预防死锁
      • 避免死锁
      • 死锁的检测和解除
      • 饥饿
      • 饥饿和死锁的区别
    • 11.存储器管理的功能
    • 12.内存连续分区分配
      • 碎片
    • 13.动态分区分配算法
    • 14.内存非连续分区分配
      • 分段和分页的区别
      • 页面置换算法
    • 15.虚拟存储器
      • 覆盖与交换技术
    • 16.文件逻辑结构
    • 17.文件物理结构
    • 18.文件存储管理
    • 19.Spooling
    • 20.磁盘调度算法
    • 21.windows系统和实时操作系统区别
    • 22.OS为什么提供系统调用
    • 23.互斥在临界区的作用
    • 24.OS内外碎片如何解决
    • 25. 操作系统如何防止用户使用特权指令
    • 26.进程调度两种方式
  • 三、离散数学
    • 1.简单图和多重图区别
    • 2.群偏序关系并举例
    • 3.自反闭包是什么
    • 4.如何判断一个有向图是欧拉图
    • 5.群的性质
    • 6.集合三要素
  • 四、计算机前沿、相关知识
    • 1.人工智能学习方法是什么
    • 2.对人工智能的未来怎么看
    • 3.人工智能会超越人类智慧吗
    • 4.迁移学习用处
    • 5.朴素贝叶斯为什么朴素
    • 6.软件工程模块与模块之间,模块内部应该怎样
    • 7.C++一个函数如何返回多个值
    • 8.图书管理系统如何保证用户密码安全
    • 9.数据库如何实现原子性和回滚
      • 原子性
      • ACID性质
      • 回滚
    • 10.科研精神是什么
    • 11.中断
    • 12.人工智能学习方法
    • 13.对人工智能的未来怎么看
    • 14.虚析构函数作用
    • 15.C++结构体和联合的区别
    • 16.数组指针和指针数组区别
    • 17.C++,java,python区别
    • 18.智能科学与技术和计算机科学与技术区别
    • 19.B/S和C/S区别
    • 20.软件设计


一 . 计算机网络

1.TCP连接建立(三次握手)

第一次握手:客户机的TCP首先向服务器的TCP发送连接请求报文段。客户端发送syn包(syn=x)到服务器,并进入同步已发送状态,等待服务器确认;


第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入同步收到状态


第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入已建立连接状态,完成三次握手。

2.TCP连接释放(四次挥手)

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,但是,此时主动关闭方还可以接受数据。


第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。


第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送。


第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1。

3.计算机网络的主要功能?

1、数据通信
用来实现联网计算机之间各种信息的传输,并将分散在不同地理位置的计算机联系起来,进行统一的调配、控制、管理。


2、资源共享
可以是软件共享、数据共享、硬件共享,极大提高资源利用率。


3、提高可靠性
计算机网络中的各台计算机可以通过网络互为替代。


4、分布式处理
当计算机网络中某个计算机系统负荷过重时,可以将其处理的某个复杂任务分配给网络中的其他计算机系统,从而利用空闲计算机资源以提高整个系统的利用率。
5、负载均衡
将工作任务均衡地分配给计算机网络中的各台计算机。

4.谈下你对五层网络协议体系结构的理解?

应用层解决通过 应用进程 的交互来实现特定网络应用的问题
运输层解决 进程 之间基于网络的 通信 问题
网络层解决分组在 多个网络上传输(路由) 的问题
数据链路层解决分组在 一个网络(或一段链路)上传输 的问题
物理层解决使用何种 信号来传输比特 的问题

5.流量控制的常见方式?

1、停止-等待流量控制方式基本原理(发送窗口大小=1,接受窗口大小=1)
2、后退N帧协议(GBN)(发送窗口大小>1,接收窗口大小=1)
3、选择重传协议(SR)(发送窗口大小>1,接收窗口大小>1)

6.可靠传输机制有哪些?

数据链路层的可靠传输通常使用确认超时重传两种机制来完成。

7.虚电路和数据报的区别(网络层提供的两种服务,比较其优缺点)

虚电路和数据报都是物理层的分组交换技术(除此之外还有电路交换、报文交换)。


(1)数据报是无连接的服务,而虚电路是面向连接的;


(2)数据报的分组都是通过独立的路由选择和转发,而同属于一条虚电路的分组按照同一路由转发;


(3)数据报服务中每个分组都有完整的目的地址,但虚电路中每个分组仅存放长度较短的虚电路号。


4)数据报不保证数据的可靠交付,虚电路可靠性由网络保证;


(5)数据报不保证分组的有序到达,虚电路保证分组的有序到达。

8.端到端通信和点到点通信的区别?

由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务, 而传输层为网络中的主机提供端到端的通信。


直接相连的结点之间的通信称为点到点通信, 它只提供一台机器到另一台机器之间的通信,不涉及程序或进程的概念。同时,点到点通信并不能保证数据传输的可靠性。


端到端通信建立在点到点通信的基础上,完成应用程序(进程) 之间的通信。”端” 是指用户程序的端口,端口号标识了应用层中不同的进程。

9.MAC地址与IP地址的区别

地址性质不同:MAC地址是物理地址,IP地址是逻辑地址。
可变性不同:MAC地址具有唯一性,每个硬件出厂时候的MAC地址是固定的;而IP地址是不固定的。
工作层次不同:数据链路层基于MAC地址转发数据帧,网络层基于IP地址转发报文。
长度不同:MAC地址为48位,IPv4是32位长,IPv6是128位。
分配依据不同:IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。

10.解决IPv4地址紧缺的办法

1.网络地址转换NAT:在自治系统内部的专用主机使用互联网提供的专用IP地址,该IP地址只能在专用网内部使用,任何路由器对于专用IP地址都不予转发,同时利用网络地址转换NAT路由器将专用IP地址转换成在全球范围唯一的IP地址与互联网上的其他主机进行通信。


2.CIDR构成超网:CIDR消除了子网划分的概念,将IP地址由原来的三级编址又转换成二级编址,每个地址都属于一个CIDR地址块,根据CIDR地址块进行路由转发,更加有效地分配IPv4的地址空间。


3.动态分配


4.升级IPv6(隧道技术,双协议栈技术):IPv6 并不是 IPv4 的简单升级版,他们是两个互不相干的协议,彼此并不兼容。而 IPv6 用 16 个字节 128 个比特位来表示一个地址。

11.TCP与UDP的区别

1、TCP 面向连接,UDP 是无连接的;


2、TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,不保证可靠交付


3、TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道。每一条 TCP 连接只能是点到点的(一对一);UDP 支持一对一,一对多,多对一和多对多的交互通信


4、TCP 面向字节流;UDP 是面向报文的


5、UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)


6、TCP 首部开销20字节;UDP 的首部开销 8 字节

12.对于视频网站和视频聊天,用 TCP 还是用 UDP

对于视频网站,完全可以缓冲20秒再播放,不会带来什么影响,可以用TCP。


而对于视频聊天,如果缓冲5秒,相信整个聊天已经没法愉快的进行了,而这时出现一些画面质量的损失是可以接受的,所以用UDP。

13.TCP的可靠性如何保证?

(1)确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。


(2)数据校验:检测数据在传输过程中是否发生变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据超时后会重发数据。


(3)数据合理分片和排序:TCP会根据最大传输单元合理分片,以防止在传输过程中进行二次分片。接收方会缓存未按序到达的数据,重新排序后再交给应用层。


(4)流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出。TCP使用的流量控制协议是可变大小的滑动窗口协议。


(5)拥塞控制:当网络拥塞时,TCP会减少数据的发送,以防止全网中网络负载过重。

14.TCP拥塞控制的四种算法

拥塞控制是指防止过多的数据注入网络,防止网络中的路由器或链路过载。

(1)慢开始算法


在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口为1,即一个最大报文段的长度。每收到一个对新报文段的确认后,拥塞窗口加倍。慢开始一直把拥塞窗口增大到慢开始门限,然后改用拥塞避免算法。


(2)拥塞避免算法
发送端的拥塞窗口每经过一个往返时延就增加1,使拥塞窗口按线性规律缓慢增长,也就是加法增大。而当出现一次超时时,令慢开始门限等于当前拥塞窗口的一半,并重置拥塞窗口为1,也就是乘法减少。


(3)快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。


(4)快恢复
发送端收到连续三个冗余ACK时,把慢开始门限设置为出现拥塞时发送方拥塞窗口的一半。与慢开始的不同之处是,它把拥塞窗口的值设置为慢开始门限改变后的数值,而不是1,然后开始执行拥塞避免算法使拥塞窗口缓慢地线性增大

15.如果要做简单网络应用OSI哪些层可以不要

一般情况下,可以省略OSI模型中的一些较为基础的层次,比如物理层和数据链路层,因为这些层次主要处理物理传输介质和数据传输的基础细节,对于一些简单的网络应用来说并不需要关注这些细节。

16.数据链路层和网络层怎么实现安全

在数据链路层,常用的安全机制包括:

  1. MAC地址过滤:只允许特定的MAC地址访问网络,可以防止未经授权的设备接入网络。

  2. VLAN隔离:将网络划分为不同的虚拟局域网,可以隔离不同的用户和设备,提高网络安全性。

  3. 802.1X认证:通过认证机制限制网络访问,只有通过认证的设备才能访问网络。

在网络层,常用的安全机制包括:

  1. 防火墙:通过过滤和限制网络流量,保护网络免受恶意攻击和未经授权的访问。

  2. VPN:通过加密和隧道技术,建立安全的远程访问连接,保护数据传输的安全性。

  3. IPsec:通过加密和认证机制,保护IP数据包的安全性,防止数据被窃听、篡改和伪造。

17.计网交换技术包括什么

计算机网络中的交换技术包括以下几种:

  1. 电路交换:在通信开始前,建立一条专用的物理连接,通信过程中一直占用这条连接,直到通信结束后释放连接。电路交换适用于长时间的通信,如电话通话。

  2. 报文交换:将数据分成一段一段的报文,每个报文都带有目的地址和源地址,通过网络传输到目的地,然后再将报文组装成完整的数据。报文交换适用于短时间的通信,如电子邮件。

  3. 分组交换:将数据分成一段一段的数据包(也称为分组),每个数据包都带有目的地址和源地址,通过网络传输到目的地,然后再将数据包组装成完整的数据。分组交换是计算机网络中最常用的交换技术,如互联网中的IP协议。

  4. ATM交换:使用异步传输模式(ATM)进行交换,将数据分成固定长度的小单元(称为ATM单元),每个ATM单元都带有目的地址和源地址,通过网络传输到目的地,然后再将ATM单元组装成完整的数据。ATM交换适用于高速数据传输和实时应用,如视频会议和在线游戏。

18.一台主机是否只能有一个ip?

一台主机可以有多个IP地址。
每个IP地址都是唯一的,用于标识主机在网络中的位置。主机可以拥有多个网卡,每个网卡都可以配置一个IP地址。 此外,主机还可以通过虚拟化技术创建多个虚拟机,每个虚拟机也可以拥有自己的IP地址。

19.流量控制在那层实现

数据链路层,传输层

20.曼彻斯特编码与差分曼彻斯编码的区别

曼彻斯特编码,是一种用电平跳变来表示1或0的编码方法,其变化规则很简单,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但0码和1码的相位正好相反。由于曼彻斯特编码在每个时钟位都必须有一次变化,因此,其编码的效率仅可达到50%左右。


差分曼彻斯特编码,和曼彻斯特码不同的是,这种编码的码元中间的电平转换边只作为定时信号,而不表示数据。数据的表示在与每一位开始处是否有电平转换,有电平转换表示0,无电平转换表示1。差分曼彻斯特码用在令牌环网中。

21.对称加密算法

数据发信方将明文(原始数据)和加密密钥(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

DES
初试置换和终止置换
扩展置换
初试置换的64位数据分为32、32,其中一个32位数据扩展为48位
S盒压缩处理
AES
非对称加密算法
A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
A将这个消息发给B(已经用B的公钥加密消息)。
B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
公钥算法
这是一种不对称加密算法。公钥算法包括快速公钥算法与传统公钥算法。快速公钥算法与传统公钥算法相比具有更广泛地应用前景,对快速公钥系统的研究是当前公钥系统研究的一个热点。
REA、ECC椭圆加密算法

链路加密
使用链路加密装置能为某链路上的所有报文提供传输服务。即经过一台节点机的所有网络信息传输均需加、解密,每一个经过的节点都必须有密码装置,以便解密、加密报文。如果报文仅在一部分链路上加密而在另一部分链路上不加密,则相当于未加密,仍然是不安全的。与链路加密类似的节点加密方法,是在节点处采用一个与节点机相连的密码装置(被保护的外围设备),密文在该装置中被解密并被重新加密,明文不通过节点机,避免了链路加密关节点处易受攻击的缺点。

窃听攻击
网络监听是一种监视网络状态、数据流程以及网络上信息传输的管理工具,它可以将网络界面设定成监听模式,并且可以截获网络上所传输的信息。也就是说,当黑客登录网络主机并取得超级用户权限后,若要登录其它主机,使用网络监听便可以有效地截获网络上的数据,这是黑客使用最好的方法。但是网络监听只能应用于连接同一网段的主机,通常被用来获取用户密码等。

SQL注入
通过SQL查询漏洞,注入一些非法信息,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

22.CSMA/CD协议

数据通信前先检测信道是否空闲,如果空闲则发送方开始发送数据并持续监听信道,检测到信道数据冲突后停止发送数据,执行指数退避算法重新发送数据。

23.计算机网络分层优点

  1. 分层结构使得网络的设计更加模块化,每一层都有自己的功能和任务,可以独立地进行设计和实现,从而提高了网络的可靠性和可维护性

  1. 分层结构使得网络的协议栈更加清晰,每一层都有自己的协议,协议之间的关系也更加明确,方便了网络的管理和维护

  1. 分层结构使得网络的发展更加容易,提高了网络的灵活性和可扩展性

  1. 分层结构使得网络的性能优化更加容易,可以通过对某一层的优化,提高整个网络的性能

24.网络协议特点

  1. 标准化
  2. 分层结构
  3. 开放性
  4. 可靠性
  5. 灵活性
  6. 安全性

25.网络延迟有哪些

排队时延,传播时延,处理时延,发送时延

====================================

二 . 操作系统

1.操作系统

定义

控制和管理计算机软件、硬件资源,合理组织计算机工作流程,以供用户使用的程序的集合。

特征

并发,共享,虚拟,异步

功能

处理及管理,存储器管理,文件管理,设备管理,作业管理

2.进程和程序

1.程序是静态的,有序代码集合;进程是动态的,是程序的一次执行
2.程序是永久的、无生命周期、可长久保存;晋城市暂时的、有生命周期、动态变化
3.进程是OS资源分配和保护的基本单位


进程=PCB+程序+数据
PCB是进程存在的唯一标识

3.进程和线程

4.进程状态

创建态
就绪态
运行态
阻塞态
终止态

就绪态可以到运行态,被CPU调度
运行态可以到就绪态,被抢占、时间片到
运行态到阻塞态,申请的资源不足

5.进程通信

低级通信方式 PV操作
高级通信方式 共享存储、消息传递、管道通信

6.作业调度(获得处理机资源)

高级调度(作业调度):为后被状态的作业建立进程并进入主机
中级调度(对换调度):进程在内存和辅存交换区间的对换,缓解内存资源的紧张状态
低级调度(进程调度):决定内存中哪个进程可以占据CPU,使其处于运行状态

7.进程调度算法

先来先服务
短作业优先
时间片轮转
高响应比优先
多级反馈队列

8.进程同步和互斥

信号量可以分为整形信号量、记录型信号量(包括资源个数、等待队列)
信号量的值可以通过PV操作改变
信号量可以实现进程的同步和互斥


临界资源 一次仅允许一个进程使用的资源
临界区 进程访问共享资源的那段程序


同步 多个进程因为合作而使得进程的执行有一定的先后顺序
互斥 多个进程在同一时刻只有一个进程能进入临界区

9.进程同步的四个准则

空闲让进 临界区空闲,进程可以进入
忙则等待 临界区已有进程访问,其他进程等待
有限等待 应保证进程等待进入临界区的时间是有限的
让权等待 当进程不能进入临界区时,应释放处理机

10.死锁和饥饿

死锁

死锁是指两个或两个以上的进程执行过程中,因争夺资源而造成的一种互相等待的现象,从而无法继续推进下去。

产生死锁原因

1.进程推进顺序不合理
2.系统资源不足

死锁的四个必要条件

互斥条件
不剥夺条件
零散请求条件
循环等待条件

预防死锁

破坏死锁产生的四个必要条件

破坏互斥条件:SPOOLing技术
破坏不剥夺条件:剥夺
破坏零散请求条件:静态资源分配策略
破坏循环等待条件:系统依据一定的策略给资源编号,进程必须按照从小到大的顺序申请资源

避免死锁

避免系统进入不安全状态,使用安全性算法判断是否存在安全序列,银行家算法

死锁一定是不安全状态,不安全状态不一定死锁

死锁的检测和解除

检测死锁:
资源分配图


解除死锁:
重新启动法
资源剥夺法
撤销进程法
进程回退法

饥饿

进程长时间得不到处理机调度的现象叫做饥饿

饥饿和死锁的区别

饥饿进程可以只有一个,死锁必须有两个
饥饿进程可以是一个就绪进程,而死锁进程必定是阻塞进程

11.存储器管理的功能

内存分配和回收
地址变换
扩充内存
存储保护

12.内存连续分区分配

单一连续分配 只支持单道程序 有内部碎片
固定分区分配 支持多道程序,设置分区表,每个分区装入一道程序 有内部碎片
动态分区分配 支持多道程序,根据进程大小动态建立分区 ** 有外部碎片**

碎片

内部碎片 已经被分配出去却不能被利用的内存空间
外部碎片 未被分配出去且因太小而无法利用的内存空间
拼接技术(紧凑技术) 将分散的外部碎片连成一个大的空闲区,解决碎片问题

13.动态分区分配算法

首次适应
邻近首次适应
最佳适应
最差适应

14.内存非连续分区分配

非连续分区分配可以在内存中离散地分配程序,更好的内存利用和管理

分页(内碎片)
分段(外碎片)
段页式(内碎片)

分段和分页的区别

页是为了实现离散分配,减少外部碎片,提高内存利用率,段是为了能够更好地满足用户需要


页的大小是固定的,由系统决定,段的长度不固定,取决于用户编写的程序


分页的地址空间是一维的,分段的地址空间是二维的


页表项由页号和块号组成,将块号和页内偏移拼接在一起就可以得到物理地址
段表项由由段号、段首址、段长、装入位组成,将段首址和段内偏移拼接在一起得到物理地址

页面置换算法

最佳置换算法OPT
先进先出算法
最近未使用算法NRU
最近最少使用算法LRU
CLOCK算法
改进的CLOCK算法

15.虚拟存储器

基于局部性原理,仅将要运行的少数页面或段装入内存,其余暂时不调入内存。
当程序运行时访问缺页,在利用请求调页功能将页面从外存中调入内存
若此时内存已满,则采用页面置换算法,将内存中暂不使用的页面调入到外存的对换区中(对换)。故从用户角度出发,该系统的内存容量似乎比实际内存容量大得多

覆盖与交换技术

覆盖 将程序运行时不要求同时装入内存的组成一组,成为覆盖段
交换技术 将外存分为对换区和文件区,内存紧张时,将某些进程换出到外存的对换区


覆盖技术需要开发人员给定覆盖结构,交换技术是在在不同进程情况下,覆盖技术在同一进程情况下

16.文件逻辑结构

流式文件
顺序文件
索引文件
索引顺序文件

17.文件物理结构

顺序分配 为文件分配一组连续的磁盘块
隐式链式分配,每个磁盘块都有指向下一个磁盘块的指针
显式链式分配,建立一张文件分配表FAT,根据FAT还有文件的起始块号,我们可以快速的查找到文件的数据
索引分配 为数据块建立索引表

18.文件存储管理

空闲表法 记录每个连续空闲区起始块号和盘块数
空闲盘块链 以块为单位组成一条链
空闲盘区链 以盘区为单位组成一条链
位示图法 用二进制一位表示磁盘使用情况,0表示空闲,1表示已使用

19.Spooling

将独占设备虚拟化为共享设备,采用软件的方式模拟脱机技术,通过预输入、缓输出的方法。使用了多道程序设计技术和通道技术。

20.磁盘调度算法

先来先服务
最短寻道时间优先算法
扫描算法
循环扫描算法

21.windows系统和实时操作系统区别

Windows系统和实时操作系统的主要区别在于其针对的应用场景和处理方式不同。

Windows系统是一种通用的操作系统,主要用于个人电脑、服务器等设备,其主要特点是具有用户友好的图形界面和强大的通用功能,如文件管理、多任务处理、网络连接等。Windows系统的响应时间相对较长,实时性较差,不适合对响应时间要求较高的应用场景,比如工控、航空航天、医疗等领域。
实时操作系统(RTOS)则是一种专用的操作系统,主要用于嵌入式系统、工控系统、航空航天、医疗设备等领域。实时操作系统的主要特点是具有高度可预测性和实时性,可以在规定时间内完成指定任务,保证系统的可靠性和稳定性。实时操作系统的响应时间非常短,可以在微秒或毫秒级别内完成任务,适合对响应时间要求较高的应用场景。
总之,Windows系统注重通用性和易用性,而实时操作系统则注重实时性和可靠性,适用于不同的应用场景。

22.OS为什么提供系统调用

(1)操作系统提供系统调用是为了让应用程序能够访问操作系统的功能和资源。 通过系统调用,应用程序可以请求操作系统执行某些特定的操作,例如读写文件、创建进程、分配内存等。
(2)系统调用提供了一种安全、可控的方式,使应用程序能够与操作系统进行交互,同时也保护了操作系统的稳定性和安全性
(3)系统调用还可以提高应用程序的性能和效率,因为操作系统可以优化系统调用的执行,从而提高整个系统的性能。

23.互斥在临界区的作用

互斥在临界区的作用是保证在同一时间只有一个线程可以进入临界区执行代码,避免多个线程同时访问共享资源而导致的数据竞争和不一致性问题。

24.OS内外碎片如何解决

内碎片是指分配给进程的内存空间中,有一部分空间没有被利用,但是由于大小不足以分配给其他进程使用,因此造成了浪费。外碎片是指空闲内存块之间被占用的内存空间,这些空间虽然总和足够分配给其他进程使用,但是由于分散在不同的内存块中,无法被利用,也造成了浪费。


解决内碎片的方法是采用动态分配内存的方式,即根据进程的实际需要分配内存空间,避免浪费。


解决外碎片常见的方法是内存紧缩。内存紧缩是指将内存中的空闲块合并成更大的块,以便分配给需要内存的进程使用。另外,还可以采用内存池技术,将多个小的内存块合并成一个大的内存块,以减少外碎片的产生。

25. 操作系统如何防止用户使用特权指令

为了防止用户程序中使用特权指令,计算机硬件结构区分两种操作模式:目态和管态
其中目态下只能使用除特权指令以外的指令,管态下可以使用全部指令。 可以把 用户程序置在目态下运行,而操作系统中必须使用特权指令的那部分程序可在管态下运行,这样可保证计算机系统的安全可靠。

26.进程调度两种方式

操作系统中的进程调度有两种方式:

  1. 非抢占式调度:也称为协作式调度,是指进程在运行时不会被强制中断,而是由进程自己决定何时释放CPU资源,让其他进程运行。这种调度方式适用于对实时性要求不高的应用场景,如文本编辑器、计算器等。
  1. 抢占式调度:是指操作系统可以在任何时候强制中断正在运行的进程,将CPU资源分配给其他进程运行。这种调度方式适用于对实时性要求较高的应用场景,如多媒体应用、游戏等。

在实际应用中,操作系统通常采用抢占式调度方式,以保证系统的稳定性和响应性。

三、离散数学

1.简单图和多重图区别

简单图:没有环和平行边
多重图:有环或有平行边

2.群偏序关系并举例

考研复试问题汇总_第1张图片

例子:整除关系,大于等于,小于等于

3.自反闭包是什么

自反闭包是一个自反性最小的关系,使得原来的关系也是它的子集。

4.如何判断一个有向图是欧拉图

判断有向图的所有顶点入度等于出度。
判断是否为强连通图

5.群的性质

封闭,结合律,幺元,逆元

6.集合三要素

确定性、互异性、无序性

四、计算机前沿、相关知识

1.人工智能学习方法是什么

监督学习:从标注好的数据中学习模式和规律,比如分类、回归、序列预测等任务。


无监督学习:从未标注的数据中寻找模式和规律,比如聚类、降维等任务。


强化学习:通过试错的方式,不断优化决策策略,比如游戏、机器人控制等任务。


半监督学习:结合有标注和无标注数据进行学习,可以提高学习效果。


迁移学习:将已经学习好的模型应用到新的任务上,可以加速学习和提高效果。


元学习:学习如何学习,自动优化模型的学习算法和超参数。
不同的任务和场景可以采用不同的学习方法,也可以结合多种方法进行学习。

2.对人工智能的未来怎么看

人工智能将催生出更多的应用场景,比如智能家居、智能医疗、智能交通等,人们的生活和工作将会更加智能化和便捷化。


人工智能将会进一步推动自动化和智能化生产,提高生产效率和质量,同时也会改变工业生产的模式和组织形式。


人工智能在医疗领域的应用将会越来越广泛,包括疾病诊断、药物研发、智能医疗设备等,将会为人们的健康保障提供更好的服务。


人工智能将会在教育、金融、文化娱乐等领域得到广泛应用,为人们的学习、生活、娱乐提供更加智能化、个性化的服务。


人工智能的发展将会带来一些新的挑战和问题,比如人工智能的道德和伦理问题、数据隐私和安全问题等,需要人们共同来解决。


总之,人工智能的未来发展前景非常广阔,将会在各个领域发挥重要的作用,同时也需要我们注意其带来的新问题和挑战。

3.人工智能会超越人类智慧吗

这是一个备受争议的话题。人工智能的快速发展和广泛应用,已经在许多领域展现出了惊人的能力,比如在图像识别、语音识别、自然语言处理、游戏等方面已经超过了人类的水平。但是,人工智能是否会超越人类智慧仍然存在很大的不确定性
从目前的发展趋势来看,人工智能在某些特定领域的表现已经非常优秀,但是**人类智慧具有很多独特的特点,比如创造力、情感、道德和价值观等,这些特点目前还无法被人工智能完全取代。**此外,人工智能也存在一些局限性,比如需要大量的数据和计算资源、对环境和输入数据的变化比较敏感等,这些局限性也限制了人工智能的发展。
虽然人工智能在某些方面已经展现出了惊人的能力,但是要超越人类智慧还需要很长时间的发展和探索。无论如何,人工智能的发展仍然需要人类的智慧和创造力来引导和控制,以确保它的发展符合人类的价值观和利益。

4.迁移学习用处

提高模型性能:通过从源领域中迁移学习到的知识和经验,可以提高目标领域中的模型性能,减少数据量和时间成本,提高学习效率。


适应新领域:在新的领域中,可能会遇到数据量不足、数据分布不均、数据质量差等问题,迁移学习可以通过从源领域中学习到的知识和经验,适应新领域的数据特点,提高模型的泛化能力。


融合多领域知识:迁移学习可以将多个领域中的知识和经验进行融合,构建更加全面和准确的模型,提高模型的表现和效果。


降低人工成本:在某些情况下,人工标注数据的成本非常高昂,迁移学习可以通过从源领域中学习到的知识和经验,减少目标领域中需要人工标注的数据量,降低人工成本。


推动科学研究:通过迁移学习,可以将不同领域中的知识和经验进行交叉和融合,推动科学研究的进展和发展,促进学术交流和合作。

5.朴素贝叶斯为什么朴素

朴素贝叶斯算法之所以被称为“朴素”,是因为它做了一个朴素的假设,即假设所有特征之间相互独立

6.软件工程模块与模块之间,模块内部应该怎样

模块与模块之间应该通过接口进行通信,接口应该定义清楚输入和输出的数据格式、数据类型、数据范围等信息,以确保模块之间的数据传递正确无误。


模块内部应该遵循高内聚、低耦合的原则,即模块内部的各个部分应该紧密相关,但与其他模块的关联应该尽可能少。这样可以提高模块的可维护性和可重用性;应该遵循良好的编程规范,包括命名规范、注释规范、代码风格等,以提高代码的可读性和可维护性。

7.C++一个函数如何返回多个值

  1. 使用结构体或类:可以定义一个结构体或类,将多个需要返回的值作为结构体或类的成员变量,然后将结构体或类作为函数的返回值返回。

  1. 使用指针或引用参数:可以将需要返回的值作为指针或引用参数传递给函数,在函数内部修改指针或引用指向的变量的值。

  1. 使用数组或向量:可以定义一个数组或向量,将多个需要返回的值作为数组或向量的元素,然后将数组或向量作为函数的返回值返回。

8.图书管理系统如何保证用户密码安全

  1. 加密存储:将用户密码进行加密处理后再存储到数据库中,防止密码被恶意获取。
  2. 强制修改密码:在用户首次登录或者一段时间后,强制用户修改密码,以防止密码被泄露或猜测。
  3. 密码复杂度要求:要求用户设置复杂度较高的密码,包括数字、字母、符号等,以增加密码的安全性。
  4. 登录失败锁定:在用户连续多次登录失败后,锁定账户一段时间,以防止恶意攻击。

9.数据库如何实现原子性和回滚

原子性

数据库实现原子性的方法是使用事务。事务是一组操作,这些操作要么全部执行成功,要么全部失败回滚。在事务中,所有的操作都被视为一个整体,要么全部执行成功,要么全部失败回滚,保证了数据的原子性。

ACID性质

  1. 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部失败回滚。

  2. 一致性(Consistency):事务执行前后,数据库的状态必须保持一致。

  3. 隔离性(Isolation):事务之间是相互隔离的,一个事务的执行不会影响其他事务的执行。

  4. 持久性(Durability):事务执行成功后,对数据库的修改是永久性的,即使系统崩溃也不会丢失。

回滚

数据库实现回滚的方法是使用事务。当一个事务执行失败或者被取消时,数据库会自动回滚到事务开始之前的状态,撤销所有已经执行的操作,保证数据的一致性。

在数据库中,回滚操作可以通过以下两种方式实现:

  1. 自动回滚:当一个事务执行失败时,数据库会自动回滚到事务开始之前的状态,撤销所有已经执行的操作。

  1. 手动回滚:在某些情况下,需要手动回滚事务。可以使用ROLLBACK语句来回滚事务,将事务中的所有操作都撤销,恢复到事务开始之前的状态。

10.科研精神是什么

  1. 探索精神:科学家具有强烈的好奇心和求知欲,对未知的领域充满探索的热情,不断地寻求新的知识和发现。
  2. 创新精神:科学家具有创造性思维和创新能力,能够提出新的理论、方法和技术,推动科学的发展和进步。
  3. 严谨精神:科学家具有严谨的科学态度和方法,注重实验设计和数据分析的准确性和可靠性,保证研究结果的科学性和可信度。
    4.== 合作精神==:科学家具有合作精神,能够与其他科学家进行交流和合作,共同推进科学研究的进展。
  4. 坚韧精神:科学家具有坚韧不拔的精神,能够克服困难和挫折,不断地追求科学真理和发现。
    科研精神是科学家必备的素质,也是科学研究的重要保障。只有具备了科研精神,才能够进行高质量的科学研究,取得有意义的科学成果。

11.中断

中断是计算机系统中的一种机制,它允许外部设备或程序在执行过程中打断CPU的正常执行流程,使CPU暂停当前的任务,转而执行与中断相关的处理程序。
中断可以分为硬件中断和软件中断两种类型。
硬件中断是由外部设备发出的信号,例如键盘输入、鼠标移动、网络数据传输等
软件中断则是由程序内部发出的信号,例如系统调用、异常处理等。
中断机制可以提高计算机系统的响应速度和处理能力,使系统更加灵活和可靠

12.人工智能学习方法

  1. 监督学习通过给算法提供带有标签的数据集,让算法学习如何将输入映射到输出。常见的应用包括图像识别、语音识别、自然语言处理等。
  2. 无监督学习不需要给算法提供标签,让算法自己发现数据中的模式和结构。常见的应用包括聚类、降维、异常检测等。
  3. 强化学习通过给算法提供一个环境和一个奖励机制,让算法自己学习如何在环境中采取行动,以获得最大的奖励。常见的应用包括游戏AI、机器人控制等。
  4. 半监督学习结合监督学习和无监督学习的方法,利用少量带标签的数据和大量无标签的数据来训练算法。常见的应用包括图像分类、文本分类等。
  5. 迁移学习将已经学习好的模型应用到新的任务中,可以加快新任务的学习速度和提高准确率。常见的应用包括图像识别、自然语言处理等。
  6. 深度学习利用多层神经网络来学习数据中的特征和模式,可以处理大规模的复杂数据。常见的应用包括图像识别、语音识别、自然语言处理等。

13.对人工智能的未来怎么看

我认为人工智能的未来是非常光明的。随着技术的不断发展和创新,人工智能将会在各个领域发挥越来越重要的作用,包括医疗、金融、教育、交通等等。人工智能将会帮助我们更好地理解和解决各种问题,提高生产效率和生活质量。 同时,人工智能也会带来一些 挑战和风险,比如数据隐私、就业岗位等问题,我们需要在发展人工智能的同时,积极应对这些问题,确保人工智能的发展是有益于人类的。

14.虚析构函数作用

虚析构函数的作用是在继承关系中正确地释放资源。
当一个类被继承时基类的析构函数是虚函数,那么在删除一个派生类对象时,会先调用派生类的析构函数,然后再调用基类的析构函数,这样就能够正确地释放基类中的资源,避免内存泄漏等问题。

15.C++结构体和联合的区别

  1. 结构体是一种用户自定义的数据类型,可以包含多个不同类型的成员变量,每个成员变量占用不同的内存空间,结构体的大小等于所有成员变量大小之和加上对齐空间的大小。
  2. 联合也是一种用户自定义的数据类型,可以包含多个不同类型的成员变量,但是联合的所有成员变量共用同一块内存空间,联合的大小等于最大成员变量的大小。
  3. 结构体的成员变量可以同时被访问,而联合的成员变量只能访问其中一个。
  4. 结构体的成员变量可以有不同的值,而联合的成员变量只能有一个值。
  5. 结构体的成员变量可以被定义为指针类型,而联合的成员变量不能被定义为指针类型。
  6. 结构体的成员变量可以被初始化,而联合的成员变量只能被初始化其中一个。
  7. 结构体的成员变量可以被定义为静态变量,而联合的成员变量不能被定义为静态变量。

16.数组指针和指针数组区别

数组指针是指一个指向数组的指针变量,它可以指向一个数组的首地址,也可以指向一个数组中的某个元素。
指针数组是指一个数组,其中的每个元素都是一个指针变量,它们可以指向不同的数据类型,也可以指向同一种数据类型。
数组指针是指针变量,指向一个数组;而指针数组是数组,其中的每个元素都是指针变量。

17.C++,java,python区别

  1. 应用领域:C++主要用于系统编程、游戏开发、图形界面等领域;Java主要用于企业级应用开发、Android应用开发等领域;Python主要用于数据分析、人工智能、Web开发等领域。

  2. 性能:C++是一种编译型语言,执行速度快,但需要手动管理内存;Java是一种解释型语言,执行速度比C++慢,但不需要手动管理内存;Python是一种解释型语言,执行速度比Java慢。

18.智能科学与技术和计算机科学与技术区别

智能科学与技术是一门跨学科的科学,它涉及到计算机科学、数学、物理学、生物学、心理学等多个学科领域,旨在研究人工智能、机器学习、自然语言处理、智能控制等方面的问题。
计算机科学与技术则是一门专门研究计算机系统、软件和硬件的学科,它包括计算机体系结构、操作系统、编程语言、数据库、网络等方面的内容。
虽然智能科学与技术和计算机科学与技术有一些重叠的部分,但它们的研究方向和方法不同,前者更注重人工智能的应用和发展,后者则更注重计算机系统和软件的设计和开发。

19.B/S和C/S区别

B/S和C/S是两种不同的软件架构模式,其主要区别如下:

  1. B/S(Browser/Server)架构模式是基于浏览器和服务器的模式,用户通过浏览器访问服务器上的应用程序。C/S(Client/Server)架构模式是基于客户端和服务器的模式,用户通过客户端访问服务器上的应用程序。

  2. B/S架构模式的应用程序可以在任何支持浏览器的设备上运行,如PC、手机、平板等。而C/S架构模式的应用程序需要在特定的客户端上运行,如PC端的Windows应用程序、移动端的iOS或Android应用程序等。

  3. B/S架构模式的应用程序通常具有更好的跨平台性和可移植性,而C/S架构模式的应用程序则更加依赖于特定的操作系统和硬件平台。

  4. B/S架构模式的应用程序通常具有更好的安全性和可维护性,因为应用程序的逻辑和数据都存储在服务器端;而C/S架构模式的应用程序则需要在客户端和服务器端之间进行数据传输和处理,存在一定的安全风险和维护难度。

20.软件设计

软件设计是指在软件开发过程中,根据需求和功能要求,对软件进行结构化的设计和规划,以便于实现高效、可靠、易于维护和扩展的软件系统。软件设计包括以下几个方面:

  1. 需求分析:确定软件的功能和性能要求,以及用户需求和期望。

  2. 架构设计:确定软件的整体结构和组成部分,包括模块、接口、数据结构等。

  3. 模块设计:对软件的每个模块进行详细设计,包括算法、数据结构、接口等。

  4. 数据库设计:设计软件所需的数据库结构和数据存储方式。

  5. 用户界面设计:设计软件的用户界面,包括界面布局、交互方式、图形设计等。

  6. 测试设计:设计软件的测试方案和测试用例,以确保软件的质量和稳定性。

软件设计是软件开发过程中非常重要的一环,它直接影响软件的质量、可维护性和可扩展性。好的软件设计能够提高软件的开发效率,降低开发成本,同时也能够提高软件的用户体验和用户满意度。

你可能感兴趣的:(考研)