Skip to main content

综合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 的启动流程?

展开
  • 策略模式是一种行为模式,它定义了一系列算法,并将它们封装在独立的类中,通过上下文类管理并且给客户端调用。
  • 策略模式的组成是策略接口,具体策略和上下文。
  • 策略模式适用于需要解耦相似的算法,需要客端动态调用算法的场景

39.Redis 实现分布式锁时可能遇到的问题有哪些?

展开

队列绑定了死信队列,并且消息被拒绝或者消息设置了ttl过期或者队列满时旧消息会丢弃进入死信队列

40. 工厂模式和抽象工厂模式有什么区别?

展开
  • 首先B+树具有B树的特性,是一种平衡树,可以用二分法的查找到叶子节点的key,并且B树的节点可以存放多个key,一般的大小是一页,这使得B+树可以使用很少的层数去 存储更多的数据。
  • 相对于B树来说,B+树的数据集中在叶子节点,能够在叶子节点形成双向链表,方便顺序扫描和范围扫描,并且非叶子节点只存放key,增加了扇出的大小。