每天一套面试题Day29-八股高频(10)
链接题目来自牛客 第五页
56.说说Spring事务管理。
它提供了一个统一抽象层,核心接口是PlatformTransactionManager。它有两种实现方式:编程式和声明式。我们最常用的是基于@Transactional注解的声明式事务,因为它对代码无侵入。
使用@Transactional时,需要重点关注它的几个属性:传播行为(比如默认的REQUIRED和创建新事务的REQUIRES_NEW)、隔离级别、超时时间和只读属性。同时,要注意事务失效的常见场景,比如方法的自调用、异常被捕获、方法非public等。
Spring事务的本质是通过AOP代理实现的,它让我们能专注于业务逻辑,而将复杂的事务控制交给框架处理。
57.谈谈 HTTP 的缓存机制,服务器如何判断缓存是否过期?
我的博客 服务器判断缓存是否过期主要依赖两个机制:
时间基准:通过Cache-Control: max-age或Expires设置新鲜期 验证基准:通过ETag/If-None-Match或Last-Modified/If-Modified-Since验证内容是否变更
58.消息队列如何保证顺序消费?
消息队列通过生产者按顺序发送至同一分区/队列,消费者单线程顺序处理实现。需确保同一业务标识的消息路由到相同分区,并限制分区仅被一个消费者消费。
59.说一下Java中的深拷贝、浅拷贝、引用拷贝。
60.介绍一下Redis的集群模式。
有主从,无哨兵,分片 Redis Cluster是从Redis3.0版本开始,官方提供的一种实现切片集群的方案。
Redis切片集群(官方Redis Cluster)固定使用16384(16K)个哈希槽(Hash Slot),并且这个数字是硬编码的,不可配置。 分片 (Sharding): 数据被自动分割到多个 主节点 (Master) 上,每个主节点负责整个集群数据的一个子集。 哈希槽 (Hash Slot): 集群共有 16384 个槽。每个键通过 CRC16 校验后对 16384 取模来决定放入哪个槽。集群中的每个主节点负责一部分哈希槽。 哈希槽怎么映射到具体的主节点中?
平均分配。默认均分 手动分配 每个主节点都应该至少有一个从节点。 高可用 (High Availability): 每个主节点都应至少有一个 从节点 (Slave)。当主节点发生故障时,其从节点会自动晋升为新的主节点,继续提供服务。 Redis 分片集群(Cluster)模式中,没有也不需要独立的哨兵(Sentinel)进程。 哨兵机制的作用是实现主从节点故障转移,但是Redis切片集群,持续地与其他节点进行通信,互相监控健康状态。当需要判断一个主节点是否失效时,集群中的其他主节点会共同参与投票,这个过程类似于哨兵集群的投票机制。一旦集群确认某个主节点下线,它就会自动从其从节点中选举出一个新的主节点来接管服务。 连接到Redis Cluster时,只能使用数据库0(db0)。Redis开发团队认为,大多数用户实际上并不需要多个数据库。去掉多数据库支持可以简化内部逻辑。 ———————————————— 版权声明:本文为CSDN博主「Arva .」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/2301_80096362/article/details/153782344
#面试真题#记录刷过的面试真题

