3年java面试题_3年经验Java面试,题目和答案

073ea8c58e5df984e053df8280139cec.png

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没有聚簇索引)中查询完整的记录行。

文章都看完了

649f2074b68ca939f7663f4553d43938.gif不点个

cb36ff7fa10587c498b8c786d3633db6.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值