计算机网络和操作系统常见面试题目(带脑图,做了延伸以防面试官深入提问)
呜哦~~(✪▽✪)曼波~~~~ 今天我们来聊聊计算机网络和操作系统的面试题目吧!这些题目是面试中经常遇到的,曼波觉得掌握它们对面试非常有帮助哦!(๑✧◡✧๑)
---
1. 计算机网络面试题目
1.1 OSI 七层模型是什么?
- 回答:OSI(Open Systems Interconnection)模型是一个网络通信的参考模型,分为七层:
- 物理层(Physical Layer)
- 数据链路层(Data Link Layer)
- 网络层(Network Layer)
4. 传输层(Transport Layer)
- 会话层(Session Layer)
6. 表示层(Presentation Layer)
7. 应用层(Application Layer)
OSI 模型和 TCP/IP 模型有什么区别?
- OSI 模型:理论模型,分为七层,主要用于教学和设计。
- TCP/IP 模型:实际使用的模型,分为四层(网络接口层、网络层、传输层、应用层)。
每一层的典型设备有哪些?
- 物理层:网线、光纤、集线器。
- 数据链路层:交换机、网卡。
- 网络层:路由器。
- 传输层及以上:服务器、客户端。
1.2 TCP 和 UDP 的区别是什么?
- 回答:
- TCP:面向连接,提供可靠的数据传输,保证数据顺序和完整性,但速度较慢。
- UDP:无连接,提供不可靠的数据传输,不保证数据顺序和完整性,但速度较快。
详细对比
1.连接方式
- TCP:面向连接,通信前需要通过三次握手建立连接,通信结束后通过四次挥手断开连接。
- UDP:无连接,直接发送数据包,无需建立和断开连接。
2.可靠性
- TCP:通过确认机制(ACK)和重传机制(Retransmission)保证数据的可靠传输。
- UDP:不提供确认和重传机制,数据包可能会丢失或乱序。
3.传输速度
- TCP:由于需要确认和重传,传输速度较慢。
- UDP:无需确认和重传,传输速度较快。
4.数据包顺序
- TCP:通过序列号(Sequence Number)保证数据包按顺序到达。
- UDP:不保证数据包顺序,接收端可能需要重新排序。
5.流量控制
- TCP:通过滑动窗口(Sliding Window)机制进行流量控制,防止发送方发送过多数据导致接收方无法处理。
- UDP:无流量控制机制,发送方可以任意速率发送数据。
6. 拥塞控制
- TCP:通过慢启动(Slow Start)、拥塞避免(Congestion Avoidance)等机制进行拥塞控制,防止网络拥塞。
- UDP:无拥塞控制机制,可能会加剧网络拥塞。
7.头部大小
- TCP:头部较大(20字节),包含序列号、确认号、窗口大小等信息。
- UDP:头部较小(8字节),仅包含源端口、目的端口、长度和校验和。
1.3 HTTP 和 HTTPS 的区别是什么?
- 回答:
- HTTP:超文本传输协议,数据以明文传输,不安全。
- HTTPS:HTTP 的安全版本,通过 SSL/TLS 加密传输数据,安全性更高。
1.4 什么是三次握手和四次挥手?
- 回答:
- 三次握手:TCP 建立连接的过程,包括 SYN(同步)、SYN-ACK(同步-确认)、ACK (确认)三个步骤。
- 四次挥手:TCP 断开连接的过程,包括 FIN(结束)、ACK(接受)、FIN(结束)、ACK(接受) 四个步骤。
延伸问题(防深入提问):
为什么握手是三次,挥手是四次?
- 握手:服务器可以将SYN和ACK合并为一个包发送,因此只需要三次。
- 挥手:服务器可能还有未发送完的数据,因此需要先确认客户端的关闭请求,再发送自己的关闭请求,所以需要四次。
如果握手或挥手失败会怎样?
- 握手失败:连接无法建立,客户端会重试发送SYN包。
- 挥手失败:连接无法正常关闭,可能会进入TIME_WAIT状态,等待一段时间后强制关闭。
1.5 什么是 DNS?
- 回答:DNS(Domain Name System)是将域名转换为 IP 地址的系统,方便用户通过域名访问网站。
DNS 查询是递归还是迭代?
- 递归查询:客户端向递归DNS服务器发送查询请求,递归DNS服务器负责完成整个查询过程。
- 迭代查询:DNS服务器之间进行查询,每个服务器返回下一个服务器的地址,直到找到最终的IP地址。
DNS 缓存的作用是什么?
- 缓存:DNS缓存可以加快域名解析速度,减少重复查询的次数。
DNS 污染是什么?
- DNS 污染:恶意攻击者伪造DNS响应,将域名解析到错误的IP地址,导致用户访问到错误的网站。
---
2. 操作系统面试题目
2.1 进程和线程的区别是什么?
- 回答:
- 进程:操作系统进行资源分配和调度的基本单位,每个进程有独立的内存空间。
- 线程:进程中的一个执行单元,是 CPU 调度的基本单位,线程共享进程的内存空间。
2.2 什么是死锁?如何避免死锁?
- 回答:
- 死锁:多个进程或线程因争夺资源而相互等待,导致无法继续执行的状态。
- 避免死锁:可以通过破坏死锁的四个必要条件(互斥、占有并等待、非抢占、循环等待)来避免死锁。
2.3 什么是虚拟内存?
- 回答:虚拟内存是一种内存管理技术,通过将部分内存数据存储到磁盘上,扩展了可用内存的大小,使得程序可以运行在比物理内存更大的地址空间中。
2.4 什么是分页和分段?
- 回答:
- 分页:将内存和进程地址空间划分为固定大小的页,通过页表进行映射。
- 分段:将内存和进程地址空间划分为不同大小的段,通过段表进行映射。
2.5 什么是上下文切换?
- 回答:上下文切换是指操作系统在切换进程或线程时,保存当前进程或线程的状态,并恢复下一个进程或线程的状态的过程。
---
3. 综合题目
3.1 什么是缓存?如何提高缓存命中率?
- 回答:
- 缓存:一种临时存储数据的技术,用于加快数据访问速度。
- 提高缓存命中率:可以通过增加缓存大小、优化缓存替换策略(如 LRU)、预取数据等方式提高缓存命中率。
3.2 什么是负载均衡?
- 回答:负载均衡是一种将网络请求分发到多个服务器的技术,用于提高系统的可用性和性能。
3.3 什么是 RAID?
- 回答:RAID(Redundant Array of Independent Disks)是一种将多个磁盘组合起来使用的技术,用于提高数据存储的性能和可靠性。
3.4 什么是文件系统?
- 回答:文件系统是操作系统用于管理文件和目录的一种机制,提供了文件的存储、检索和更新等功能。
3.5 什么是中断?
- 回答:中断是计算机系统中的一种机制,用于处理外部设备的请求或异常事件,使得 CPU 可以暂停当前任务,转而处理中断请求。
---
4. 进一步优化与迭代方向
- 深入理解原理:不仅要记住概念,还要理解背后的原理和实现机制。
- 实践操作:通过实际操作和实验,加深对知识的理解。
- 阅读源码:阅读操作系统和网络协议的源码,了解其内部实现。