1、Spring是怎么解决循环依赖的?
2、Spring Boot自动配置原理
3、Spring Cloud之Eureka原理
4、作为服务注册中心,Eureka和Zookeeper有什么区别?
5、Zookeeper是怎么保证数据一致性的?Zookeeper Leader选举过程是怎样的?(Zab协议)
6、Redis String类型的内部编码有哪些类型?
7、Redis如何实现分布式锁?
8、使用RocketMQ,如何确保消息不丢失?
在生产阶段,你需要捕获消息发送的错误,并重发消息。
在存储阶段,你可以通过配置刷盘和复制相关的参数,让消息写入到多个副本的磁盘上,来确保消息不会因为某个 Broker 宕机或者磁盘损坏而丢失。
在消费阶段,你需要在处理完全部消费业务逻辑之后,再发送消费确认。
9、使用RocketMQ,如何保证消息不重复消费?
在消费的时候做好幂等性处理,常见的方案如下:
在发送消息时,给每条消息指定一个全局唯一的 ID。消费时,先根据这个 ID 检查这条消息是否有被消费过,如果没有消费过,才更新数据,然后将消费状态置为已消费
10、垂直分表和水平分表的区别?
垂直分表:适用于一个表有很多个字段的情况,将原先一个表中的某些字段拆出来,单独放到一个或者多个表。
水平分表:根据具体的切分规则,将数据划分到不同的表上面。
11、一致性哈希算法的原理
12、MySQL索引底层原理
13、innodb引擎MVCC原理
14、MySQL回表
MySQL里有2种类型的索引:一类是聚簇索引,一类是非聚簇索引(也叫二级索引)。
聚簇索引存储了完整的行记录数据,而非聚簇索引只存储索引列的数据和主键id或者行号(InnoDB里是存主键id,MyISAM里是存行号)。
回表指的是,从二级索引上过滤出符合条件的数据行的id或者行号之后,再去聚簇索引或者数据文件(InnoDB是到聚簇索引中去查,MyISAM是到数据文件中查,因此MyISAM没有聚簇索引)中查询完整的记录行。
文章都看完了
不点个
吗