一、 异步处理面试题
1. 什么是异步处理?核心应用场景有哪些?
答案:异步处理是指发起请求后,主线程不阻塞等待结果,直接继续执行后续任务,任务由后台线程/服务异步执行完成,执行结果通过回调、消息通知、轮询等方式返回。核心场景:短信/邮件推送、文件解析/报表生成、日志记录、消息推送、订单异步核销、大模型推理任务等。
2. 同步处理和异步处理的区别是什么?
答案:同步处理是发起请求后阻塞等待任务执行完成,才能继续后续操作;异步处理不阻塞主线程,后台异步执行任务。核心区别:同步响应及时但性能低、并发差;异步响应延迟但性能高、并发能力强,适合耗时操作。
3. 异步处理的实现方式有哪些?
答案:主流实现方式包括:消息队列(RabbitMQ、Kafka、RocketMQ)、线程池、定时任务(Quartz、XXL-Job)、异步框架(Spring Boot @Async)、回调函数等。
4. 异步处理中如何处理任务失败?
答案:核心方案包括:重试机制(固定间隔重试、指数退避重试)、死信队列(失败任务存入死信队列人工/自动处理)、日志记录+人工补偿、事务消息保证最终一致性、超时机制兜底。
5. 什么是最终一致性?异步处理如何保证分布式系统的最终一致性?
答案:最终一致性是分布式系统中,数据在短暂不一致后,通过补偿机制最终达到一致状态。异步处理通过消息队列、事务消息、重试机制、补偿任务等方式,保证分布式系统中数据最终一致,适用于订单、支付、库存等核心业务。
二、 事务处理面试题
1. 什么是数据库事务?事务的ACID特性是什么?
答案:数据库事务是数据库管理系统执行过程中的一个逻辑工作单元,保证一组数据库操作要么全部成功,要么全部失败回滚。ACID特性:原子性(Atomicity,操作不可分割)、一致性(Consistency,数据约束不被破坏)、隔离性(Isolation,并发事务互不干扰)、持久性(Durability,提交后数据永久生效)。
2. 数据库的隔离级别有哪些?分别解决了什么问题?
答案:MySQL InnoDB支持4种隔离级别,从低到高:
- 读未提交(Read Uncommitted):存在脏读、不可重复读、幻读;
- 读已提交(Read Committed,默认):解决脏读,存在不可重复读、幻读;
- 可重复读(Repeatable Read,InnoDB默认):解决脏读、不可重复读,通过MVCC解决幻读;
- 串行化(Serializable):解决所有并发问题,性能最低。
3. 什么是脏读、不可重复读、幻读?
答案:脏读:一个事务读取到另一个事务未提交的修改数据;不可重复读:同一事务中,多次查询同一数据,结果因其他事务提交的修改而不同;幻读:同一事务中,相同查询条件返回的记录数量因其他事务插入/删除数据而变化。
4. 分布式事务的解决方案有哪些?适用场景是什么?
答案:主流方案:
- 2PC(两阶段提交):强一致性,性能低,适用于短事务、核心金融场景;
- TCC(Try-Confirm-Cancel):补偿型事务,适用于高可用、长事务场景;
- 本地消息表/RocketMQ事务消息:最终一致性,适用于分布式系统、电商订单等场景;
- SAGA模式:长事务拆分,适用于微服务、复杂业务流程场景。
5. Spring中如何实现声明式事务?核心注解是什么?
答案 :通过@Transactional注解实现声明式事务,核心注解为@Transactional;支持配置传播行为、隔离级别、超时时间、回滚异常等属性,底层基于AOP实现。
三、 Redis面试题
1. Redis是什么?核心特点是什么?
答案:Redis是基于内存的键值型NoSQL数据库,支持多种数据结构(字符串、哈希、列表、集合、有序集合等),核心特点:高性能(读写速度快)、持久化、高可用、支持发布订阅、原子性操作、过期策略等。
2. Redis的常用数据结构及应用场景?
答案:
- String:缓存、计数器、分布式锁、会话存储;
- Hash:用户信息、商品属性存储;
- List:消息队列、最新动态列表、评论列表;
- Set:去重、好友关系、标签系统;
- ZSet(有序集合):排行榜、热度排名、延时任务。
3. Redis的持久化机制有哪些?区别是什么?
答案:两种核心持久化机制:
- RDB(快照):定时将内存数据写入磁盘,恢复速度快,数据可能丢失;
- AOF(追加文件):记录所有写操作,恢复数据完整,性能开销大;
混合持久化:结合两者优势,是Redis默认优化方案。
4. Redis的过期策略和内存淘汰策略是什么?
答案:过期策略:惰性删除+定期删除;内存淘汰策略:volatile-lru(最近最少使用)、allkeys-lru、volatile-random、allkeys-random、volatile-ttl、noeviction(不淘汰)等。
5. Redis如何实现分布式锁?核心原理是什么?
答案 :基于SETNX(set if not exists)命令实现,结合过期时间防止死锁,Lua脚本保证原子性;核心原理:抢占锁的客户端写入键值,释放锁时删除键值,其他客户端通过判断键值是否存在获取锁。
四、 数据库面试题
1. 索引的作用是什么?MySQL索引的底层数据结构是什么?
答案 :索引是数据库优化查询的结构,加速查询、排序、分组操作;MySQL InnoDB索引底层数据结构是B+树,B+树是平衡多叉树,支持范围查询、区间查询,磁盘IO少。
2. 什么是联合索引?最左前缀原则是什么?
答案:联合索引是对多个字段建立的索引;最左前缀原则:查询时,索引匹配从最左侧字段开始,依次匹配,跳过中间字段会导致索引失效,例如索引(a,b,c),查询条件仅用b、c无法命中索引。
3. 什么是索引失效?常见原因有哪些?
答案 :索引失效是指查询未使用索引,全表扫描导致性能下降;常见原因:违反最左前缀原则、使用%xxx%模糊查询、函数操作索引字段、隐式类型转换、OR连接非索引字段、NOT IN/!=等。
4. 数据库优化的常用手段有哪些?
答案 :合理设计索引、避免SELECT *、分库分表、读写分离、SQL语句优化、使用缓存、优化事务设计、调整数据库参数等。
5. 什么是分库分表?适用场景是什么?
答案:分库分表是将单库单表的数据拆分到多个数据库、多个表中,解决单库单表数据量过大、性能瓶颈问题;水平分表按数据范围/哈希拆分,垂直分表按字段拆分;适用于亿级数据量、高并发场景。
五、 大模型与Agent面试题
1. 什么是大语言模型(LLM)?核心能力是什么?
答案:大语言模型是基于Transformer架构的生成式AI模型,核心能力:文本生成、理解、对话、翻译、摘要、代码生成、逻辑推理等,基于海量文本数据预训练+微调实现。
2. 什么是RAG(检索增强生成)?核心流程是什么?
答案:RAG是结合检索系统与大模型的技术,核心流程:数据预处理→向量库构建→用户查询向量化→检索相关文档→将文档与查询拼接喂入大模型→生成答案;解决大模型幻觉、知识过时问题,适用于知识库问答、企业内部文档问答等场景。
3. 什么是Agent(智能体)?核心组成部分是什么?
答案:大模型智能体是具备自主规划、工具调用、执行任务能力的AI系统;核心组成部分:规划模块、工具调用模块、记忆模块、执行模块、反馈优化模块;基于大模型的推理能力,结合外部工具(搜索、数据库、API)完成复杂任务。
4. 大模型幻觉是什么?如何解决?
答案:大模型幻觉是指模型生成与事实不符、无依据的内容;解决方法:RAG检索增强、提示词工程、微调训练、事实核查、工具调用验证、后处理校验等。
5. 大模型的推理优化手段有哪些?
答案:模型量化(INT8/FP16)、模型裁剪、推理加速框架(vLLM、TensorRT)、批处理推理、缓存机制、分布式推理、Token压缩等。
六、 综合场景题(面试高频)
1. 电商场景中,订单创建+扣库存+支付的全流程如何设计?如何保证数据一致性?
答案:流程:用户下单→创建订单→扣减库存→支付回调→订单状态更新;数据一致性:通过分布式事务(本地消息表/事务消息)、Redis缓存库存、幂等性设计、重试机制保证,库存扣减采用乐观锁/分布式锁防止超卖。
2. 高并发场景下,如何防止接口重复提交?
答案:基于Redis实现分布式锁、Token机制、幂等键设计、请求防抖、限制请求频率(限流)、唯一标识校验等。
3. 微服务架构中,服务间通信的方式有哪些?适用场景是什么?
答案:同步通信(HTTP/REST、gRPC):适用于实时性要求高的场景;异步通信(消息队列):适用于非实时、耗时操作、解耦场景;RPC框架:适用于内部服务高性能通信。