回答话术:是什么为什么怎么用

Mysql问题

Mysql锁机制的理解

[[Mysql八股#MySQL的锁]]

Mysql事物隔离的理解

[[Mysql八股#MVCC]]

For Update 是什么锁 不同事务隔离级别有什么不同

行锁 行写锁X锁。同时会加一个意向写锁。
RR 临键锁 + 间隙锁
RC

为什么MySQL数据库索引普遍使用B+树结构?与B树、哈希索引相比有何优势?

什么是回表查询?在什么情况下会发生回表?如何避免?

什么是覆盖索引?请结合一个SQL示例说明。

请阐述SQL标准中定义的事务隔离级别,以及MySQL默认的隔离级别是什么。

MySQL的InnoDB存储引擎是如何通过MVCC机制实现可重复读(REPEATABLE READ)隔离级别的?

什么是幻读?在可重复读隔离级别下,MySQL是如何解决幻读问题的?

当你遇到一个慢查询时,你的排查和优化思路是怎样的?

什么是索引下推?它如何提升查询性能?

在分库分表的设计中,常见的分片键选择和分片策略有哪些?

请详细说明Cache Aside模式,以及如何保证数据库与缓存之间的数据一致性。

聊一下 InnoDB 的索引内存结构

B + 树与 B 树在数据结构上的区别是什么

B + 树的只在叶子节点存储数据的好处是什么?

为什么 B + 树层数低了效率会提高

B + 树如果索引查询 4 次和查询 5 次效率有显著差异的原因?

聊聊数据库的隔离级别

RR 和 RC 的区别是什么

具体讲一下不可重复读是什么意思

RR 是怎么解决不可重复读的问题的

具体讲一下快照读底层是怎么实现的

为什么 RR 级别的效率要比 RC 低

RR 与 RC 的差别体现在具体的业务场景,可以举一个很实际的例子嘛

讲一下数据库的锁,设置锁的语法

来讲讲事务的作用是什么

一般 SQL 优化就是怎么优化?

你刚刚提到没走索引,什么情况下会不走索引?

你提到手机号存储查的时候数字去查的对,为什么查询的条件和 SQL 里面表里面的类型不一样?

能提到分页,深分页一般是怎么优化的?

索引为什么能提高查询效率?数据结构是什么样的?

为什么联合索引不使用最左匹配可能会失效?

你知道什么是回表吗?

MySQL 的隔离级别有哪些? 每种隔离级别有什么区别。

MySQL 怎么解决幻读或者脏读的问题。

binlog 你知道吗? 和 redo log 的区别

MySQL 的索引结构是什么?(B+ 树)

覆盖索引是什么?如何避免回表查询?

深分页会有什么问题?怎么优化?

Redis问题

Redis是单线程的吗

Redis为什么快

Redis的key过期是怎么删除的

Redis支持哪些主要的数据类型?请举例说明每种数据类型的典型应用场景。

请对比Redis的两种持久化方式:RDB和AOF,它们各自的优缺点是什么?

请详细解释缓存穿透、缓存击穿和缓存雪崩的概念,以及你项目中使用的解决方案。

你是如何使用Redisson实现分布式锁的?它的看门狗机制是如何工作的?

Redis的过期键删除策略和内存淘汰策略分别有哪些?

布隆过滤器的原理是什么?它有什么优缺点?你在项目中是如何应用它来解决缓存穿透的?

请从多角度分析Redis性能高的主要原因。

请简述Redis主从复制的基本流程。

如何使用Redis的Zset数据结构实现一个实时排行榜?

Redis的事务与MySQL的事务有何本质区别?它能否保证原子性?

Redis 缓存。你之前项目中有用到过方式吗?

Redis 一般我们常用的有哪些数据结构?

有哪些你刚才介绍的一些使用场景,除了一些做缓存,做数据存储,还有其他的一些使用场景?

你前面提到就相当于把多个写操作合并成一个写操作,对吧? 缓存毕竟是不可靠的。你怎么保证缓存一致性?是缓存的数据和数据库的数据保持一致。

或者换种问法,就是你写缓存和写数据库,毕竟是两个操作,两个操作你不是原子性的。那你是先写缓存的话还是先写数据库呢?

那先写数据库和先写缓存会有什么问题?

你看你写的是缓存一致性的方案,我觉得可以更详细一点聊一下。

Redis 的持久化的方式有哪些?

Redis 过期策略和内存淘汰算法。

Redis 的使用场景有哪些?

什么样的数据适合放入缓存?

Redis 持久化方案有哪些?(RDB 和 AOF,RDB 和 AOF 的优缺点分别是什么?

你是如何使用Redis来管理AI对话的多轮对话历史的?数据结构是如何设计的?

使用Redis Zset实现实时刷题排行榜时,分数设计和高并发更新的考量是什么?

你如何结合布隆过滤器和逻辑过期方案来预防缓存穿透和缓存击穿?

Java基础问题

hashmap和hashtable

HashMap的底层数据结构是什么?JDK 1.8中相对于之前版本做了哪些优化?

ConcurrentHashMap是如何实现线程安全的?它与HashTable的区别是什么?

请详细解释Java反射机制,它的应用场景以及可能带来的性能问题。

注解的工作原理是什么?请阐述如何自定义一个注解并解析它。

请说明Java中强引用、软引用、弱引用和虚引用的区别及其典型应用场景。

深拷贝和浅拷贝的区别是什么?在Java中如何实现一个深拷贝?

Java 8中Stream流的底层实现原理是什么?它是如何实现惰性求值的?

Lambda表达式的本质是什么?JVM是如何处理Lambda表达式的?

Java动态代理有哪几种实现方式?JDK动态代理和CGLIB动态代理的原理与区别是什么?

为什么String类被设计为是不可变的?这种设计带来了哪些好处?

请解释Java泛型的类型擦除机制,以及它带来的局限性。

try-with-resources语句的底层原理是什么?它与传统的try-catch-finally相比有何优势?

如何自定义一个类加载器?打破双亲委派模型的场景和方式有哪些?

什么是SPI机制?它与API有什么区别?请列举一个SPI的实际应用。

泛型的创建方式

JAVAStreamAPI操作集合类

NIO和AIO区别

面向对象和面向过程

new一个对象的完整构建过程

介绍一下集合。ArrayList 和 LinkedList 区别?

对迭代器有什么了解?

用迭代器一般会需要注意什么问题吗?

Steam 流 Lambda 有用过吗?

描述一下 HashMap 的底层结构

HashMap 扩容的流程是怎样的?扩容后元素位置如何计算?

HashMap 是线程安全的吗?如果不是,如何实现线程安全?

ConcurrentHashMap 在 JDK 1.7 和 1.8 中的实现有何区别?

ConcurrentHashMap 从分段锁改为 CAS + synchronized 的原因是什么?

你之前工作的时候有没有自定义过异常?

那一般异常有哪几种? 一般异常我们一般会区分成运行时异常和其他的一般异常。你知道这两个区别吗? 为什么要做区分?

雪花 ID 是做什么的,解决什么问题?

你有了解它是怎么实现的吗?

如果让你做一个生成分布式 ID 的这种一个工具也好,或者一个中间件也好,你有什么想法?

JUC问题

对 Synchronized 的理解

线程池怎么知道一个线程是否执行完任务

synchronized关键字和ReentrantLock锁的区别是什么?在性能和高阶功能上各有何优劣?

volatile关键字的作用是什么?它的内存语义是如何实现的?

什么是CAS操作?它会导致什么问题(如ABA问题)?如何解决ABA问题?

请解释ThreadPoolExecutor的核心参数及其作用。如何合理地配置一个线程池?

使用CompletableFuture时,如何实现多个异步任务的并行执行与结果组合?

抽象队列同步器(AQS)的原理是什么?ReentrantLock是如何基于AQS实现的?

读写锁(ReadWriteLock)适用于什么样的场景?StampedLock有什么改进?

什么是死锁?产生死锁的必要条件是什么?如何避免和定位死锁?

ThreadLocal的实现原理是什么?为什么使用不当会导致内存泄漏?如何避免?

你是如何基于抽象模板方法模式构建本地缓存框架的?请描述其设计思路。

Semaphore和CountDownLatch有什么区别?各自的应用场景是什么?

什么是Fork/Join框架?它的工作窃取机制是如何工作的?

请详细说明你如何基于ReentrantLock与Condition实现了一个动态信号量闸门。

你了解Project Loom和虚拟线程吗?虚拟线程与平台线程(传统线程)有何根本区别?

在你实现的CompletableFuture超时控制工具中,applyToEither竞速机制是如何工作的?

CompletableFuture的底层原理是什么?你是如何实现异步任务超时控制工具的?

Java 线程的几种状态

Java 的 Running 状态只包括线程在跑起来的情况嘛?为什么?

Java 线程的状态的流转过程是什么?

Java 线程 wait 态和 time waiting 态的区别是什么

Java 线程怎么中断? interrupt 两阶段终止

别的线程怎么强制终止当前的线程?

线程池的参数

线程池的工作原理

为什么核心线程数这么设置?

IO 密集型的 2 倍怎么来的?

计算密集型为什么是 CPU 核心数 + 1,这个 + 1 是怎么来的?

核心线程数设置为 Integer 最大值的场景是怎么来的?

线程设置过大除了上下文切换还会对系统造成什么影响

为什么线程多了会占用很多内存空间?

线程里面的哪些结构占用的内存空间最多?

讲讲 ThreadLocal 的原理和应用场景

JUC 上面有哪些常用的工具?

你刚才提到锁,是我们一般使用的都哪几种分类?

Lock 和 synchronized 属于哪种锁?

Lock 和 synchronized 的区别是什么?

刚才提到公平锁和非公平锁,公平锁和非公平锁有什么区别?

CAS,你知道 CAS 会有什么问题吗?

之前还处理过线程池,对于线程池设置,线程池一般有哪些参数?

任务拒绝策略?

那一般核心性指数和最大线程数怎么设置?

就是这两个有什么关联,或者是和 CPU 和机器的一些环境有什么关系吗?

你有了解过死锁吗?

如果碰到如果怎么就怎么避免死锁?

就是设置时间是多大合适呢?

ThreadLocal 有了解过 ThreadLocal 的那些影响?

ThreadLocal 就是他数据是怎么存的?

就并发这一块,除了我刚才问的这些,其他的有感觉自己有特别了解的,或者能比较说的很清楚的?

线程池的工作原理是什么?(核心线程、队列、非核心线程、拒绝策略)

如何设计线程池参数?(核心线程数、队列类型等)

无界队列可能带来什么问题?

核心线程数设置过大会有什么问题?

如何合理评估线程池参数?

请详细说明基于Redisson分布式锁实现的"判断-校验-执行"原子操作,是如何解决"一人一单"并发问题的。

JVM问题

jvm组成(类加载子系统 运行时数据区子系统 执行引擎子系统)

请详细描述JVM的内存区域划分(运行时数据区),并说明每个区域的作用。

什么是类加载的双亲委派模型?为什么要使用这个模型?如何打破它?

请对比常见的垃圾回收算法(如标记-清除、复制、标记-整理)。G1垃圾收集器与CMS的区别有哪些?

什么是GC Roots?哪些对象可以被作为GC Roots?

如何判断一个对象是否可以被回收?可达性分析算法的基本思路是什么?

什么是内存泄漏?在Java中如何排查内存泄漏问题?

你了解哪些常用的JVM调优参数?请举例说明它们的作用。

什么是逃逸分析?栈上分配是什么?它们对性能有何影响?

请描述一个类从被加载到JVM到被卸载的完整生命周期。

你了解ZGC或Shenandoah等新一代垃圾收集器吗?它们的目标和主要特点是什么?

JVM 这边内存结构

GC 算法

有哪些垃圾回收器。

MQ问题

RabbitMQ有哪些主要的工作模式?如简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。

在RabbitMQ中,如何保证消息能够可靠地投递,不丢失?

如何防止消息被重复消费(保证消费的幂等性)?

如何保证消息的顺序性?

什么是死信队列?它是如何形成的?有什么用途?

在RabbitMQ中如何实现一个延迟队列?

当消息队列中出现消息堆积时,可能的原因是什么?如何处理?

RabbitMQ与Kafka在设计理念和适用场景上有什么主要区别?

你在项目中是如何利用RabbitMQ进行异步削峰,提升系统吞吐量的?

请描述你基于消息唯一ID和Redisson分布式锁实现的消息重置消费机制。

Spring问题

Aop切面编程@aspect注解的理解(如何配置切入点和通知)

spring中@Autowrite注解的理解和实现原理

Spring 事物隔离级别

SpringBoot中对REST API 进行流量控制限制请求速率怎么实现

Spring 怎么进行事务管理

Spring 事务一个方法加了事务注解之后几个 Insert 语句是在同一个连接嘛

如果不在同一个连接事务还会生效嘛

Spring 是怎么保证事务内的 sql 语句都在同一个连接的呢

Spring AOP 的实现机制是什么?

有没有自己实现过自定义注解形式的 AOP?如果业务方法执行失败,你们是怎么处理的?

Spring 如何解决循环依赖问题?三级缓存的核心思想是什么?

请详细说明你基于自定义注解和Spring AOP实现的API签名鉴权切面的工作流程。

你如何基于Spring AOP设计统一的权限校验切面?如何保证其性能和灵活性?

在你的项目中,模板方法模式是如何应用于特征加载链路设计的?

抽象工厂模式与工厂方法模式有什么区别?

代理模式有哪几种?Spring AOP默认使用的是哪种动态代理?为什么?

责任链模式的核心思想是什么?请描述一个适合使用责任链模式的场景。

请阐述你设计高性能本地缓存框架时的架构选择,特别是三级存储(ConcurrentHashMap+Redis+数据库)的设计考量。

你是如何设计并封装限流注解组件的?支持哪些限流算法?

微服务问题

什么是服务注册与发现?Nacos作为注册中心,其核心原理是什么?

什么是服务熔断与降级?对比Sentinel和Hystrix的实现机制和特点。

分布式配置中心解决了什么问题?Nacos作为配置中心是如何实现配置动态刷新的?

Spring Cloud Gateway的核心概念"路由"和"过滤器"是如何工作的?请举例说明。

OpenFeign是如何实现声明式REST调用的?它的负载均衡是如何与Ribbon整合的?

在设计一个高可用的微服务架构时,你需要考虑哪些关键方面?

什么是分布式事务?常见的解决方案(如Seata的AT模式、TCC、Saga模式)的思想是什么?

你了解服务网格(Service Mesh)吗?它与传统的微服务架构有何不同?

如何实现服务的灰度发布?有哪些常见的策略?

微服务中服务发现的机制是什么?

请求在微服务中的执行链路是怎样的?

Spring Cloud 生态有哪些核心组件?

分布式事务主流方案有哪些?(二阶段,三阶段)

TCC 模式的三个阶段是什么?TCC 会出现 “悬挂” 问题,解释一下?

场景问题

金融交易系统高并发事物优化(乐观锁,悲观锁,serializable,read uncommitted)

设计一个高并发的餐厅排队系统,你会考虑哪些核心模块和技术选型?

在设计一个支持RAG的AI智能刷题系统时,你是如何规划技术架构和数据流程的?

如何设计一个支持WebSocket实时推送的系统?需要考虑哪些连接管理和容错机制?

在实习中,你具体通过哪些技术手段将接口的QPS提升到5000+?

请详细说明你实现的"动态信号量闸门"的设计背景、具体实现和达到的效果。

你实现的CompletableFuture超时控制工具,是如何支持异常抛出和默认值降级两种策略的?

在你设计的RAG解决方案中,"智能路由"和"Prompt工程"具体是如何应用的?

在AI刷题系统中,异步生成AI答案和审核用户提交题目的流程是如何设计的?如何保证可靠性?

什么是幂等性?如何实现幂等?

提交订单时,前端和后端分别如何保证幂等?

高并发下如何实现幂等?

限流算法有哪些?(固定窗口、滑动窗口、令牌桶)令牌桶拿不到令牌怎么办?

分布式环境下如何实现限流?

极高流量下有没有更好的限流方式?

客户端发起请求但服务端未收到,可能的原因有哪些?如何排查?

必须依赖一个 “不稳定” 的三方接口时,如何设计可靠业务?有没有预处理或兜底方案?

从 0 到 1 设计系统的整体流程 / 思路是怎样的?

平时有没有做过 Code Review?自己如何评估代码可读性与质量?

DDD(领域驱动设计)是什么?你的理解是什么?

项目中的 AI 智能客服的功能和实现原理是什么?

如何让 AI 回答更准确?(预设信息、上下文关联)

如果 AI 无法回答用户刁钻的问题,如何处理?

如何设计一个更智能的 AI 系统 (包括 AI 能直接操作下单这类的功能,而不是仅仅对话)?

在排队系统中,WebSocket连接的生命周期是如何管理的?如何实现用户排队状态和管理员叫号信息的实时推送?

其他

如何做流量控制

http和https

三次握手和四次挥手

IO多路复用

用过哪些 Linux 命令

用过哪些 git 命令

用过哪些 AI coding 工具?写什么代码会用?对你效率提升大概多少?会让它写前端代码吗?效果如何?

如何让 AI 生成更符合需求的代码?(Prompt 优化、专用模型)

你通常通过什么方式学习新技术?