3年经验Java面试,题目和答案
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,如何保证消息不重复消费?
10、垂直分表和水平分表的区别?
垂直分表:适用于一个表有很多个字段的情况,将原先一个表中的某些字段拆出来,单独放到一个或者多个表。
11、一致性哈希算法的原理
12、MySQL索引底层原理
13、innodb引擎MVCC原理
14、MySQL回表
MySQL里有2种类型的索引:一类是聚簇索引,一类是非聚簇索引(也叫二级索引)。
聚簇索引存储了完整的行记录数据,而非聚簇索引只存储索引列的数据和主键id或者行号(InnoDB里是存主键id,MyISAM里是存行号)。
文章都看完了不点个 吗