面试题
### OSI七层模型
OSI七层模型是网络通信的一种理论框架,它把整个通信过程分成了七个层次。从最底层开始,首先是物理层,它负责传输原始的比特流;然后是数据链路层,它确保数据能够正确地从一个节点传送到另一个节点;接着是网络层,它处理数据包的路由选择;第四层是传输层,它确保数据可靠地从源头传送到目的地;第五层是会话层,它管理应用程序之间的会话;第六层是表示层,它处理数据的格式转换和加密;最后是应用层,它直接跟用户交互,提供各种服务。
### TCP与UDP的区别
TCP是一种面向连接的协议,在数据传输之前需要建立连接,它提供了一种可靠的服务,确保数据按顺序、无丢失地到达。但是这种可靠性是以牺牲一定的传输效率为代价的,所以它更适合那些对数据完整性要求很高的应用。相比之下,UDP是一种无连接的协议,发送数据前不需要建立连接,它不能保证数据的可靠传输,数据可能会丢失或者乱序,但它传输速度快,适用于实时性要求较高的场景,比如视频会议或在线游戏。
### TCP三次握手
TCP三次握手是建立TCP连接的过程。首先客户端发送一个SYN报文给服务器,请求建立连接;接着服务器收到这个请求后,会回复一个SYN+ACK报文表示接受连接;最后客户端再发送一个ACK报文确认已收到服务器的响应,这时连接就建立完成了。
### 死锁及其解决方法
死锁是指两个或多个进程因为相互等待对方占用的资源而不前进的情况。解决死锁通常有几种方法:预防死锁,通过设置规则来避免死锁发生的条件;避免死锁,使用某种算法来确保系统不会进入不安全的状态;检测死锁,定期检查系统状态,一旦发现死锁就采取措施;解除死锁,则是在检测到死锁后,通过撤销进程或剥夺资源的方式来解决问题。
### MySQL索引
MySQL索引是一种数据结构,用来加快数据的查询速度。常见的索引类型有B-tree索引,适用于范围查询和排序;哈希索引,适用于等值查询但不支持范围查询;还有全文索引,用于全文搜索。
### Spring Boot
Spring Boot是基于Spring框架的一个项目,它的目的是简化Spring应用的搭建和开发过程。Spring Boot提供自动配置,可以根据你添加的依赖自动配置Spring;它还内置了像Tomcat这样的Web服务器,使得部署变得简单;同时Spring Boot还简化了Maven或Gradle的配置,提供了很多starter依赖来减少项目构建的复杂度;最后,Spring Boot还提供了健康检查和指标收集等生产就绪的功能,方便我们监控和管理应用。
### Kafka消息中间件
Kafka是一种高吞吐量的分布式消息中间件,非常适合处理实时数据流。它可以用于日志收集、流处理、消息队列等多种应用场景。