1. TCP 和 UDP 区别,TCP怎么保证可靠性,TCP为什么三次握手?
TCP | 面向连接 | 点对点 | 可靠交付 | 面向字节流 | 首部20字节 |
---|---|---|---|---|---|
UDP | 无连接 | n对n | 不保证可靠交付 | 面向报文 | 首部8字节 |
TCP通过序列号、确认机制、重传机制保证可靠交付(不丢失、不重复、按序到达)
TCP的三次握手过程:
客户端——服务器端:SYN=1,seq=100
服务器端——客户端:ACK=1,ack=101,SYN=1,seq=200
客户端——服务器端:ACK=1,ack=201
采用三次握手是为了防止客户端第一次握手发送的数据包延迟到达服务器端而造成影响。若第一次发送的连接请求数据包传输过程延迟了,导致客户端没有接收到确认信号,就会重传,然后服务器端接受后发送确认信号给客户端。假如此时第一次发送的请求连接到达服务器端,那么服务器端会以为客户端又一次的发起连接请求,于是,发送确认信号,等待数据传输,但实际上是干等,这就浪费了服务器的资源。
所以在服务器端收到连接请求后,服务器除了发送确认信号之外,还需要发送一个连接请求,客户端收到后,发出确认信号后开始传输数据。
2. 应用层的常用协议工作流程。
DNS:域名系统,完成域名到IP地址的转换
递归查询:主机—本地服务器—顶级域名服务器—根域名服务器—权限域名服务器——再原路返回
迭代查询:主机—本地服务器—顶级域名服务器、本地—根域名服务器、本地—权限域名服务器
HTTP:超文本传输协议——简单快速、无连接、无状态、灵活(任意类型数据)、基于TCP
①建立TCP连接
②客户端发送HTTP请求
③服务器端响应并返回数据
④释放TCP连接
⑤浏览器解析返回的数据并显示
FTP:文件传送协议
①打开熟知端口号21,使得客户进程得以连接上
②等待客户进程发出连接请求,主进程负责接收新的请求
③启动从属进程处理客户请求
④从属进程处理完毕后回到等待状态
SMTP:邮件传输协议
①发送方客户端——发送方邮件服务器:SMTP
②发送方邮件服务器——接收方邮件服务器:SMTP
③接收方邮件服务器——接收方客户端:POP3
3. OSI模型与TCP/IP模型的区别。
OSI模型 | TCP/IP模型 |
---|---|
应用层 | 应用层 |
表示层 | |
会话层 | |
传输层 | 传输层 |
网络层 | 网际层 |
数据链路层 | |
物理层 | 网络接口层 |
5. 网络层有什么协议,作用是什么?(IP / ARP / RIP / OSPF)
IP:网际协议,负责IP数据包再不同网络之间的传输,主要功能是路由和转发,分片与重组
ARP:地址解析协议,根据IP地址获得MAC地址,工作过程如下:
①查询本地ARP缓存,若存在与对应的IP地址,则直接使用。否则②
②发送广播,包含本主机的IP地址、MAC地址以及目的IP地址;
③目的主机收到广播并确认与之匹配后,先将数据包中的IP地址和MAC保存到本地ARP高速缓存;
④目的主机以单播的方式发送包含其MAC地址的数据包给源主机;
⑤源主机保存到本地ARP高速缓存。
RIP:基于距离-向量的路由协议
OSPF:基于链路分布的路由协议
6. 对称加密和非对称加密的区别,他们的使用场景是什么?
对称加密:加密密钥和解密密钥相同,加密解密速度快,但是维护双方密钥具有一定的风险。双方互相告知密钥过程不安全。
非对称加密:属于公钥密码体制。对于每个接收方都有两个密钥——公钥和私钥,公钥用于发送方加密,私钥用于接收方解密。此外,公钥和私钥还有一个重要的功能,私钥用于发送方数字签名,公钥用于接收方验证数字签名,确保数据正确性。
若要保证数据的安全性,用非对称加密;
若要快速加密解密,对安全性要求不高,用对称加密。
7. 输入www.baidu.com 的相应过程 ,GET 和 POST 的区别。
①浏览器通过DNS解析域名,得到IP地址
②三次握手建立TCP连接
③客户端发起HTTP请求
④服务器端响应并返回数据
⑤四次挥手释放TCP连接
⑥浏览器解析数据并显示
GET | POST |
---|---|
参数直接url | Request Body |
有长度限制 | 无限制 |
一个数据包 | 两个数据包 |
不安全 | 安全 |
8. 进程和线程的区别,为啥引入线程?
- 进程是对运行的程序的封装,是系统资源分配的最小单位,能实现操作系统的并发;
- 线程是进程的子任务,是cpu调度的最小单位,能实现进程内部的并发。
- 引入线程的原因:
进程可能因为等待资源而处于阻塞状态,但进程中可能有些操作不需要正在该资源,所以就降低了系统执行效率,因此把cpu调度的最小单位划为一个个的线程。 - 线程的优点:
多任务并发执行,提高执行效率。
改善程序结构,已于阅读和维护。
9. 死锁产生条件以及解决方案?
- 产生条件
①互斥条件
②请求与保持条件
③不可剥夺条件
④循环等待条件 - 解决方案
银行家算法——每次分配资源前用算法计算是否会造成不安全的情况
10. 操作系统的特点以及性能指标是什么?
- 特点
①共享
②并发
③虚拟
④异步 - 性能指标
①可靠性
②吞吐量——单位时间处理的数据量
③响应时间——从提交作业到得出结果的时间
④资源利用率
⑤可移植性
11. 介绍一下虚拟内存以及页面置换算法。
- 虚拟内存:系统内存管理的一种技术,程序运行时,只需将部分页面装入内存,后续页面可通过置换的方式进入内存,这样就使得内存看起来大了许多。
- 页面置换算法
①OPT——最佳置换算法:理想化算法,很难实现,预知不到哪个页面以后都不会使用。
②FIFO——先进先出算法:顾名思义
③LRU——最近最久未使用算法:目前为止最久未使用的页面,将之替换
④CLOCK——时钟算法
12. 常见的进程调度算法。
- 先来先服务
- 优先级调度
- 短作业优先
- 高响应比优先
- 时间片轮转
- 多级队列
13. 常见的磁盘调度算法。
- 先来先服务
- 最短寻找时间
- 扫描(电梯)调度
- 循环扫描调度
14. 数据库事务。
- 事务:若干个SQL操作的整合单元,这些操作要么全部执行,要么全部不执行
- 事务的ACID特性
- Atomicity:原子性——不可分的整体,要么成功,要么回滚
- Consistency:一致性——事务由提交前的一致性状态
- Isolation:隔离性——事务之间互不影响
- Durability:持久性——事务一旦提交,永久保存
15. 数据库三大范式。
- 1NF——关系中的每个属性都不能再分解
- 2NF——在1NF基础上消除部份依赖
- 3NF——在2NF基础上消除传递依赖
16. 数据库索引及实现方式。
- 索引是对数据库表一列或多列数据进行排序的结构,为某一列添加索引可提高查询速度,但索引需要占用物理空间,需要维护。
- 实现方式
- B+数索引
- 散列索引
- 位图索引
17. 数据库的三级模式
- 外模式
- 概念模式
- 内模式
个人理解:
把现实中的数据在纸上(或者脑子里)画出一张表——概念模式
存储到数据库中我们看到的可视化界面——外模式
数据库数据存储在哪块内存,结构是怎样的——内模式
18. 什么是存储过程,怎么调用,触发器是什么?
-
存储过程——用于执行某项操作的一组SQL语句,一次编译,永久有效
-
调用方法
command命令下,基本语法为:exec sp_name [参数名]; SQL环境下,基本语法为:call sp_name [参数名]; PL/SQL环境下,基本语法为:begin sp_name [参数名] end;
-
触发器——特殊的存储过程,执行某操作时自动调用(隐式调用)
19. 什么是视图,游标作用?
- 视图——虚拟的表,可以是查询到的结果集。对视图进行增删改查不会影响基本表
- 游标——可对结果集中指定行进行操作的一种手段,可类比指针加以理解。