Skip to main content

综合41-60

21.MySQL 的乐观锁和悲观锁是什么?

展开 中等 MySQL 并发控制
  • 默认行为是将消息直接丢弃
  • 可以指定主交换机的备用交换机,然后消息会转发到备用交换机
  • 可以配置将消息返回给生产者,生产者需要监听basic.return 事件

22.什么是责任链模式?一般用在什么场景?

展开 简单 设计模式
  • 计算方法为:根节点存储行数*第二层节点存储行数*叶子节点存储行数
  • 根节点和第二层节点存储行数:假设一页16KB,一个keyj加上指针占十几B,大概1000行
  • 叶子节点要看是二级索引还是主键索引,主键索引大概16行,大概2000w数据,二级索引大概能存16亿数据

23.MySQL 中如果发生死锁应该如何解决?

展开 中等 MySQL

todo:在 Kafka 旧架构,Zookeeper负责存储集群元数据,控制选举,配置管理和集群成员管理。

24.什么是模板方法模式?一般用在什么场景?

展开 简单 设计模式
  • 连接器,客户端和服务端建立连接,客户端向服务端发送请求
  • 查询缓存,8.0已移除
  • 分析器,进行词法和语法的分析
  • 优化器,决定使用哪个索引,调整sql执行顺序
  • 执行器,据优化器的计划,调用存储引擎接口执行查询。

25.MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?

展开 简单 MySQL SQL

todo

  • 一个分布式协调服务,负责管理 Kafka 集群的元数据和协调分布式操作。
  • 存储和管理元数据(主题、Broker、消费者组)。
  • 协调控制器选举(确保单一控制器)。
  • 管理集群成员(跟踪 Broker 状态)。
  • 维护分区和副本状态(支持 Leader 选举和分配)。
  • 存储动态配置(主题和 Broker 参数)。

26. 什么是观察者模式?一般用在什么场景?

展开 简单 设计模式
  • 通过锁,日志和MVCC实现的
  • undo log保证了事务的原子性
  • redo log保证了事务的持久性
  • 锁和MVCC实现了四种隔离级别,保证了事务的一致性和隔离性

27.MySQL 中如何进行 SQL 调优?

展开 中等 MySQL 调优

todo

28.什么是代理模式?一般用在什么场景?

展开 简单 设计模式

todo

29.说说 Spring 启动过程?

展开 中等 Spring

先写redo log,再写bin log

30. Redis 集群的实现原理是什么?

展开 中等 Redis 分布式

todo

31. 如何使用 MySQL 的 EXPLAIN 语句进行查询分析?

展开 中等 MySQL 性能

多版本并发控制,通过uodo log获取版本链,通过read view(读视图),记录当前事务的事务id等信息,查询的时候根据read view和行记录里的隐藏字段去版本链中对应的版本,实现了无锁的视图一致,解决了对等值查询的并发读。

32.你了解的 Spring 都用到哪些设计模式?

展开 中等 Spring 设计模式
  • 为分布式环境中各服务的通信提供了中间件
  • 可以持久化消息,提供了可靠性保证
  • 可以异步的消费消息,提供响应速度
  • 削峰填谷,缓冲突发流量
  • 系统解耦,消费者单独处理消息,不影响主业务

33. Redis 集群会出现脑裂问题吗?

展开 中等 Redis 集群
  • 读未提交
  • 读已提交
  • 可重复读
  • 可串行化

34. 请描述简单工厂模式的工作原理。

展开 简单 设计模式

todo

35. Spring 有哪几种事务传播行为?

展开 简单 Spring 事务
  • 可重复读
  • 这个级别解决了幻读,不可重复度,脏读的问题,就是说这个级别不会读到其他事务未提交数据,并且通过MVCC保证了单行读的一致性,通过next-key lock保证了范围读的一致性

36. Redis 中如何实现分布式锁?

展开 中等 Redis 分布式锁
  • 单例模式,用于需要全局共享对象或者资源的场景,比如说某些中间件的客户端对象,线程池,数据库连接处等对象的创建。
  • 工厂模式,提供一个创建对象的接口,由子类决定实例化哪一个类,当业务中需要根据不同条件生成不同实例时,但这些实例都有同样接口的时候。
  • 观察者模式,相当于回调,钩子函数,当一个对象状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。比如需要异步的接收任务处理结果。
  • 装饰器模式,可以在不修改原有对象的基础上,增强原对象,动态地为其添加新功能。一般是将装饰器作为新类型的一个属性。
  • 策略模式,定义一系列算法,把它们封装起来,并使它们可以互换。策略模式让算法独立于使用它的客户端而变化。比如说不同的支付方式,优惠策略
  • 代理模式,通过代理对象控制对原始对象的访问。

37. MySQL 中如何解决深度分页的问题?

展开 中等 MySQL 性能
  • 行锁
  • 表锁
  • 间隙锁
  • 意向锁
  • 元数据锁

38. 说说 Springboot 的启动流程?

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

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

展开 中等 Redis 分布式锁

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

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

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