每天一套面试题Day35-八股高频(16)
81.MySQL 的锁类型有哪些?
82.说说你对IoC的理解。
answer1: IoC(Inversion of Control,控制反转)是一种设计原则,用于将对象创建和依赖管理的控制权从应用程序代码中转移出去,交给外部容器或框架来处理。在传统的程序设计中,我们直接在对象内部通过new来创建依赖对象,这会导致对象之间的紧耦合。而IoC原则通过将对象的创建和依赖注入从使用它们的类中分离出来,从而实现松耦合。 在Java中,IoC主要通过依赖注入(DI)来实现。依赖注入是指对象不直接创建或查找依赖对象,而是通过容器在运行时动态地将依赖关系注入到对象中。常见的依赖注入方式有:
构造器注入:通过构造函数传递依赖对象。
Setter注入:通过Setter方法传递依赖对象。
answer2: 控制反转IoC(Invension of Control) 控制反转是一种新型的设计模式 交出的权力 new对象的权力 对象之间的关系(到底用的是哪一个实现类)
Spring 是实现类IoC的容器。 IOC是思想,DI是实现。通过DI实现bean管理(有bean对象的创建和bean与bean之间关系的维护)。 DI(依赖注入)有set注入和构造注入 ———————————————— 版权声明:本文为CSDN博主「Arva .」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/2301_80096362/article/details/149358893
83.TCP 的粘包 / 拆包机制
首先要明确核心:TCP协议本身没有“包”的概念,它只保证字节流的可靠、有序传输。发送端写入的次数和接收端读取的次数没有任何必然联系。 所谓的“粘包”和“拆包”是应用层数据在TCP字节流中的表现形式问题,是应用层没有正确划分消息边界导致的。
- 粘包:接收端一次读取到的数据中包含了多个发送端发送的消息。
- 原因:发送方多次写入的数据被TCP缓冲,合并成一个大的数据包发送;或接收方读取缓冲区数据不及时,导致多个数据包堆积。(接收端应用程序没有及时从自己的接收缓冲区中读取数据,导致多个TCP数据包在接收缓冲区中累积,当应用程序最终读取时,可能一次读取到多个应用层消息,从而出现粘包现象)
- 拆包:接收端一次读取到的数据只包含了某个发送消息的一部分。
- 原因:发送的消息大于TCP缓冲区剩余空间;或大于MSS。
固定长度消息,每个数据包长度固定(例如,每个消息都是100字节),不足则用空格或0补足。
使用特定分隔符,在每个消息的末尾加上一个特殊的分隔符(例如换行符 \n、\r\n、$$等)
长度字段 + 内容(最常用、最推荐),在消息头中定义一个固定长度的字段(如4字节的int),用来表示消息体的长度。接收方先读固定长度的头,解析出长度N,再读取后续N个字节,这就是一个完整的消息。
记录刷过的面试真题
查看14道真题和解析
