Git分支模型(参考阿里Aone Flow)
技术面试复习清单(Java 后端 + AI 应用方向)
✅ 第一部分:Java 后端面试重点复习
🍃 Java 核心
Java基础:
集合类实现原理(HashMap 的哈希冲突解决、负载因子、扩容机制)
示例:HashMap源码剖析
属性 说明 哈希冲突解决 链表法 + 红黑树 默认负载因子 0.75 扩容阈值 当前容量 × 负载因子 扩容倍数 每次扩容为原来的 2 倍 红黑树转化阈值 链表长度 > 8,且桶数组长度 > 64
List 与 Set 的区别,线程安全集合使用(CopyOnWriteArrayList、ConcurrentHashMap)
说明:集合类对比总结
项目 List Set 是否允许重复元素 ✅ 允许 ❌ 不允许 是否有顺序 ✅ 有插入顺序 ❌ 无顺序( HashSet
),但TreeSet
有排序常见实现类 ArrayList
,LinkedList
,Vector
HashSet
,LinkedHashSet
,TreeSet
底层结构 ArrayList
: 数组LinkedList
: 双向链表HashSet
: HashMap 实现TreeSet
: 红黑树查找效率 ArrayList
是 O(1)(索引查找)HashSet
是 O(1),TreeSet
是 O(logN)使用场景 需要按顺序存储、可重复数据 要求元素唯一性、不关注顺序
多线程与并发:
JVM:
- JVM 内存区域(堆、栈、方法区、直接内存)
- 类加载机制(双亲委派)、类卸载机制
- 参考:JVM类加载机制详解
- GC 垃圾回收算法(标记-清除、复制、CMS、G1)
- 可视化演示:JVM GC动画讲解
- 性能调优工具(jstack、jmap、jvisualvm)
🌐 Spring & Spring Boot
- IOC / AOP原理:BeanFactory 与 ApplicationContext,动态代理、切面编程
- Bean 生命周期:构造 -> set 属性 -> 初始化 -> 销毁
- 常用注解原理(@Transactional 的事务传播行为与回滚机制)
- 自动配置原理:SpringFactoriesLoader、条件注解(@ConditionalOnMissingBean)
🛠️ 数据库 & 缓存
- MySQL:
- 索引类型(B+树)、覆盖索引、联合索引与最左匹配原则
- SQL 调优(explain 分析、慢查询日志)
- 事务隔离级别(Read Uncommitted、Repeatable Read 等)与幻读、MVCC 实现
- MVCC讲解:图解MVCC
- Redis:
- 数据结构(String、List、Set、Hash、ZSet)典型应用场景
- 持久化机制(RDB vs AOF)、主从复制、哨兵机制
- 缓存击穿(互斥锁)、穿透(布隆过滤器)、雪崩(过期时间错开)处理
- 分布式锁(SET NX PX 实现原理、Redlock 分布式算法)
- 源码分析:Redlock 机制
🧱 中间件
- Kafka:
- Producer/Consumer 原理、分区机制、消费位移管理
- 消费模式(at most once、at least once)、幂等性保证
- RabbitMQ:
- 交换机类型(Direct、Fanout、Topic)、消息确认与重试
- Netty:事件驱动模型、零拷贝、Reactor 模式
- Nginx:反向代理、负载均衡、location 匹配规则、缓存设置
- 配置案例:Nginx使用详解
- 分布式ID:UUID 特点、雪花算法结构(时间戳+机器ID+序列号)
⚙️ 系统设计 / 分布式
- 微服务架构:服务注册发现(Eureka/Nacos)、配置中心(Spring Cloud Config)
- 分布式事务:
- TCC(Try-Confirm-Cancel)原理与应用
- 可靠消息最终一致性(RocketMQ事务消息)
- SAGA 状态机模式(流程编排)
- 限流熔断降级:
- Hystrix:断路器、舱壁、降级策略
- Sentinel:滑动窗口限流、预热、熔断规则设置
- 官方示例:Sentinel 使用文档
✅ 第二部分:AI 应用相关知识点
🤖 LLM 应用开发基础(LangChain / Flowise / OpenAI API)
- Prompt Engineering:角色设定、上下文拼接、few-shot 提示设计
- LangChain 模块:
- LLMChain:单轮调用链
- RetrievalQA:向量搜索增强问答
- Agent:动态任务调度
- Memory:对话历史上下文管理(BufferMemory、SummaryMemory)
- 向量数据库:
- Faiss:本地索引(Flat、IVF、HNSW)、Index 保存/加载方式
- Chroma / Weaviate:文档分片、元数据存储与过滤检索
- Embedding:
- OpenAI text-embedding-ada-002 使用方式、维度、成本
- HuggingFace Sentence Transformers 示例(all-MiniLM)
- RAG:文档分片 ➝ embedding ➝ 存入向量库 ➝ 查询补全 context ➝ LLM 回答
- OpenAI 接口:API Key、temperature、top_p、stream 流式输出、速率限制处理
- 官方文档:OpenAI API
💾 向量库与检索应用
- Faiss 操作:
- 构建索引:IndexFlatL2、IndexIVFFlat
- 插入数据:add_with_ids
- 查询相似向量:search(query, k)
- 快速入门:Faiss官方示例
- 向量检索原理:L2距离、Cosine 相似度、内积
- 本地 vs 云部署:FastAPI + Uvicorn 封装 Faiss API 远程调用
- 项目示例:本地部署Faiss + FastAPI
🧠 Java 接入 AI 方向
- 接入方式:
- 使用 WebClient / OkHttp / Feign 调用 OpenAI 接口
- 解析 JSON 响应并集成流式 SSE 输出
- LangChain4j:
- 使用 PromptTemplate + OpenAiLanguageModel 构建聊天功能
- 与 Redis / 向量库集成构建知识问答
- 项目参考:LangChain4j
- Demo 项目:
- Java ChatPDF 实现:上传 PDF ➝ 分词 ➝ embedding ➝ 存储 ➝ 问答接口
📋 Bonus:系统设计类面试常见题目(准备简要方案)
- 高并发电商下单系统:库存缓存、异步削峰(MQ)、分布式锁、防重提交
- 聊天记录搜索:切分聊天文本 ➝ embedding ➝ 存 Faiss ➝ 模糊匹配
- 智能问答机器人系统:文档预处理 ➝ 向量库 ➝ RAG 模式 ➝ LLM 调用
- Java 服务接 GPT-4 生成摘要:接口设计、鉴权、token 管控、缓存存储
- 简易 LangChain Chat Bot:Java 封装接口 + LangChain4j agent + memory 实现