综合41-60
21.MySQL 的乐观锁和悲观锁是什么?
展开
- 默认行为是将消息直接丢弃
- 可以指定主交换机的备用交换机,然后消息会转发到备用交换机
- 可以配置将消息返回给生产者,生产者需要监听basic.return 事件
22.什么是责任链模式?一般用在什么场景?
展开
- 计算方法为:根节点存储行数*第二层节点存储行数*叶子节点存储行数
- 根节点和第二层节点存储行数:假设一页16KB,一个keyj加上指针占十几B,大概1000行
- 叶子节点要看是二级索引还是主键索引,主键索引大概16行,大概2000w数据,二级索引大概能存16亿数据
23.MySQL 中如果发生死锁应该如何解决?
展开
todo:在 Kafka 旧架构,Zookeeper负责存储集群元数据,控制选举,配置管理和集群成员管理。
24.什么是模板方法模式?一般用在什么场景?
展开
- 连接器,客户端和服务端建立连接,客户端向服务端发送请求
- 查询缓存,8.0已移除
- 分析器,进行词法和语法的分析
- 优化器,决定使用哪个索引,调整sql执行顺序
- 执行器,据优化器的计划,调用存储引擎接口执行查询。
25.MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
展开
todo
- 一个分布式协调服务,负责管理 Kafka 集群的元数据和协调分布式操作。
- 存储和管理元数据(主题、Broker、消费者组)。
- 协调控制器选举(确保单一控制器)。
- 管理集群成员(跟踪 Broker 状态)。
- 维护分区和副本状态(支持 Leader 选举和分配)。
- 存储动态配置(主题和 Broker 参数)。
26. 什么是观察者模式?一般用在什么场景?
展开
- 通过锁,日志和MVCC实现的
- undo log保证了事务的原子性
- redo log保证了事务的持久性
- 锁和MVCC实现了四种隔离级别,保证了事务的一致性和隔离性
27.MySQL 中如何进行 SQL 调优?
展开
todo
28.什么是代理模式?一般用在什么场景?
展开
todo
29.说说 Spring 启动过程?
展开
先写redo log,再写bin log
30. Redis 集群的实现原理是什么?
展开
todo
31. 如何使用 MySQL 的 EXPLAIN 语句进行查询分析?
展开
多版本并发控制,通过uodo log获取版本链,通过read view(读视图),记录当前事务的事务id等信息,查询的时候根据read view和行记录里的隐藏字段去版本链中对应的版本,实现了无锁的视图一致,解决了对等值查询的并发读。
32.你了解的 Spring 都用到哪些设计模式?
展开
- 为分布式环境中各服务的通信提供了中间件
- 可以持久化消息,提供了可靠性保证
- 可以异步的消费消息,提供响应速度
- 削峰填谷,缓冲突发流量
- 系统解耦,消费者单独处理消息,不影响主业务
33. Redis 集群会出现脑裂问题吗?
展开
- 读未提交
- 读已提交
- 可重复读
- 可串行化
34. 请描述简单工厂模式的工作原理。
展开
todo
35. Spring 有哪几种事务传播行为?
展开
- 可重复读
- 这个级别解决了幻读,不可重复度,脏读的问题,就是说这个级别不会读到其他事务未提交数据,并且通过MVCC保证了单行读的一致性,通过next-key lock保证了范围读的一致性
36. Redis 中如何实现分布式锁?
展开
- 单例模式,用于需要全局共享对象或者资源的场景,比如说某些中间件的客户端对象,线程池,数据库连接处等对象的创建。
- 工厂模式,提供一个创建对象的接口,由子类决定实例化哪一个类,当业务中需要根据不同条件生成不同实例时,但这些实例都有同样接口的时候。
- 观察者模式,相当于回调,钩子函数,当一个对象状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。比如需要异步的接收任务处理结果。
- 装饰器模式,可以在不修改原有对象的基础上,增强 原对象,动态地为其添加新功能。一般是将装饰器作为新类型的一个属性。
- 策略模式,定义一系列算法,把它们封装起来,并使它们可以互换。策略模式让算法独立于使用它的客户端而变化。比如说不同的支付方式,优惠策略
- 代理模式,通过代理对象控制对原始对象的访问。
37. MySQL 中如何解决深度分页的问题?
展开
- 行锁
- 表锁
- 间隙锁
- 意向锁
- 元数据锁
38. 说说 Springboot 的启动流程?
展开
- 策略模式是一种行为模式,它定义了一系列算法,并将它们封装在独立的类中,通过上下文类管理并且给客户端调用。
- 策略模式的组成是策略接口,具体策略和上下文。
- 策略模式适用于需要解耦相似的算法,需要客端动态调用算法的场景