简历技术栈全量学习指南
朱宏晖 — 简历技术栈全量学习指南
本文档基于你简历中出现的所有技术栈,按学习优先级排列,每个技术附上官方文档、推荐教程和实战项目。 定位:假设你只会写 Java CRUD,从零开始补齐简历上每一个技术点。
目录
- 第一阶段:Java 核心内功(面试必问)
- 第二阶段:开发框架(吃饭的家伙)
- 第三阶段:数据库与缓存(性能调优核心)
- 第四阶段:中间件(高并发三剑客)
- 第五阶段:大数据(项目一&三核心)
- 第六阶段:AI 应用开发与 AI 编程(简历差异化亮点)
- 第七阶段:云原生与 DevOps(工程化能力)
- 第八阶段:可观测性(线上排障能力)
- 第九阶段:前端基础(全栈协作)
- 实战项目推荐清单
- 面试高频考点速查表
第一阶段:Java 核心内功(面试必问)
这是 CRUD 开发者最容易被问穿的层面。简历写了“JUC并发编程、JVM调优、G1/ZGC”,面试官 100% 会深挖。
1.1 Java 并发编程(JUC)
你简历中的使用场景: CompletableFuture 异步计算流水线、双层检测锁(DCL)、线程池
必须掌握的知识点:
| 知识点 | 为什么重要 | 你简历哪里用到了 |
|---|---|---|
| 线程池(ThreadPoolExecutor) | 面试必问参数含义 | DAG 引擎异步计算 |
| synchronized vs ReentrantLock | 锁机制基础理解 | 指令状态机并发控制 |
| volatile 关键字 | 可见性 + 禁止重排序 | DCL 双层检测锁 |
| CAS 与 AQS | 并发框架底层原理 | 面试深挖必问 |
| CompletableFuture | 简历直接写了 | DAG 指标计算流水线 |
| ConcurrentHashMap | 线程安全 Map | 面试必问 JDK 7 vs 8 区别 |
| ThreadLocal | 线程隔离 | SkyWalking 链路追踪原理 |
官方文档 & 学习资源:
| 资源 | 链接 | 说明 |
|---|---|---|
| 《Java 并发编程实战》 | 书籍 | 国外经典,理论+实践 |
| 《Java 并发编程的艺术》 | 书籍 | 国人写的,适合面试 |
| 尚硅谷 JUC 教程 | https://www.bilibili.com/video/BV1Kw411Z7dF | 短精新,重点看 AQS |
| 黑马 JUC 教程 | https://www.bilibili.com/video/BV16J411h7Rd | 详细全面,适合零基础 |
| Java 并发知识点总结 | https://github.com/CL0610/Java-concurrency | GitHub 开源笔记 |
| Java 官方 JUC 文档 | https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/concurrent/package-summary.html | API 参考 |
动手练习:
# 练习 1:手写一个简易线程池
# 练习 2:用 CompletableFuture 实现并行调用 3 个接口并汇总结果
# 练习 3:用 volatile + synchronized 实现 DCL 单例模式
# 练习 4:用 ConcurrentHashMap + AtomicLong 实现一个简易计数器
1.2 JVM 调优
你简历中的使用场景: “JVM调优、G1/ZGC”
必须掌握的知识点:
| 知识点 | 为什么重要 |
|---|---|
| JVM 内存结构(堆/栈/方法区/元空间) | 面试第一问 |
| 垃圾回收算法(标记清除/复制/标记整理) | GC 基础 |
| 垃圾回收器(CMS/G1/ZGC) | 简历直接写了 G1/ZGC |
| GC 日志分析 | 实际调优用得到 |
| JVM 参数调优(-Xms/-Xmx/-XX) | 线上问题排查 |
| 类加载机制(双亲委派) | 面试高频 |
| 内存泄漏排查 | OOM 场景 |
官方文档 & 学习资源:
| 资源 | 链接 | 说明 |
|---|---|---|
| 《深入理解 Java 虚拟机(第三版)》 | 书籍 | JVM 神书,必读 |
| 尚硅谷宋红康 JVM 教程 | https://www.bilibili.com/video/BV1PJ411n7xZ | 50+手绘图解,非常全面 |
| JVM 底层原理知识总结 | https://github.com/doocs/jvm | GitHub 开源 |
| Oracle JVM 官方文档 | https://docs.oracle.com/en/java/javase/21/gctuning/ | G1/ZGC 调优指南 |
| 阿里云 JVM 实战 | https://developer.aliyun.com/graph/java/point/64 | 实际调优案例 |
| Arthas 官方文档 | https://arthas.aliyun.com/ | 线上诊断工具,你简历写了 |
动手练习:
# 练习 1:写一段代码制造 OOM,用 jmap/jstack 分析
# 练习 2:用 Arthas 在线诊断一个运行中的 Java 进程
# 练习 3:配置 G1 参数(-XX:+UseG1GC -XX:MaxGCPauseMillis=200)并观察 GC 日志
# 练习 4:用 VisualVM 监控本地 JVM 内存变化
1.3 Java 基础高频考点
面试中常被深挖的基础知识:
| 知识点 | 学习资源 |
|---|---|
| HashMap 底层原理(数组+链表+红黑树) | 《Java 编程的逻辑》或 B 站搜 “HashMap 源码” |
| String 不可变性 | JavaGuide: https://javaguide.cn/ |
| 泛型与类型擦除 | Oracle 官方教程: https://docs.oracle.com/javase/tutorial/java/generics/ |
| 异常体系 | JavaGuide |
| 反射与动态代理 | 《深入理解 Java 虚拟机》第 7 章 |
| Java 8 Stream API | https://www.baeldung.com/java-8-streams |
第二阶段:开发框架(吃饭的家伙)
简历每个项目都在用,必须烂熟于心。
2.1 Spring Boot
你简历中的使用场景: 所有项目的核心框架
必须掌握的知识点:
| 知识点 | 学习资源 |
|---|---|
| 自动配置原理(@EnableAutoConfiguration) | 官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/ |
| Starter 机制 | https://spring.io/guides/gs/spring-boot/ |
| @Conditional 条件装配 | Baeldung: https://www.baeldung.com/spring-conditional-annotations |
| 事务管理(@Transactional) | 官方文档: https://docs.spring.io/spring-framework/reference/data-access/transaction.html |
| AOP 原理(JDK 动态代理 vs CGLIB) | https://www.baeldung.com/spring-aop |
| 全局异常处理(@ControllerAdvice) | https://www.baeldung.com/exception-handling-for-spring-with-rest |
| 配置文件(YAML/多环境) | 官方文档第 2 章 |
推荐视频:
- 黑马程序员 Spring Boot: https://www.bilibili.com/video/BV1Lq4y1s7HQ
2.2 Spring Cloud Alibaba
你简历中的使用场景: 零碳能源云平台微服务底座(Nacos + Sentinel)
必须掌握的知识点:
| 组件 | 知识点 | 官方文档 |
|---|---|---|
| Nacos | 服务注册发现 + 动态配置 | https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html |
| Sentinel | 流控/熔断/降级 | https://sentinelguard.io/zh-cn/docs/introduction.html |
| Dubbo | RPC 服务调用 | https://dubbo.apache.org/zh/docs3-v2/java-sdk/quick-start/ |
| Seata | 分布式事务(了解即可) | https://seata.apache.org/zh-cn/docs/overview/what-is-seata |
| Gateway | 微服务网关 | https://sentinelguard.io/zh-cn/docs/gateway/flow-control.html |
推荐视频:
- 黑马程序员 Spring Cloud Alibaba: https://www.bilibili.com/video/BV1Lb4y1A7Hq
动手项目:
搭建一个包含 3 个微服务的 demo:
- user-service(用户服务)
- order-service(订单服务)
- gateway(网关)
要求:
1. Nacos 注册发现
2. Sentinel 对 order-service 做限流
3. Gateway 做路由转发
4. Dubbo 做 user-service 与 order-service 的 RPC 调用
2.3 MyBatis-Plus
你简历中的使用场景: 所有项目的 ORM 层
必须掌握的知识点:
| 知识点 | 官方文档 |
|---|---|
| BaseMapper 通用 CRUD | https://baomidou.com/pages/498161/ |
| 条件构造器(QueryWrapper/LambdaQueryWrapper) | https://baomidou.com/pages/10b803/ |
| 分页插件 | https://baomidou.com/pages/97715a/ |
| @BatchSize 解决 N+1 查询 | 简历直接写了,面试必问 |
| 逻辑删除 | https://baomidou.com/pages/6b03c6/ |
| 自动填充 | https://baomidou.com/pages/4c1f4e/ |
第三阶段:数据库与缓存(性能调优核心)
简历最核心的亮点就是 SQL 性能调优,面试会拿执行计划问你。
3.1 MySQL
必须掌握的知识点:
| 知识点 | 学习资源 |
|---|---|
| InnoDB 存储引擎 | 《MySQL 是怎样运行的》书籍 |
| 索引原理(B+ 树) | https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html |
| 最左前缀原则 | 简历直接写了,必须能画图解释 |
| MVCC(多版本并发控制) | https://dev.mysql.com/doc/refman/8.0/en/innodb-multi-versioning.html |
| 事务隔离级别 + MVCC | 《MySQL 实战 45 讲》极客时间 |
| 慢查询治理 | https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html |
| EXPLAIN 执行计划 | https://dev.mysql.com/doc/refman/8.0/en/explain.html |
| 主从复制 + 读写分离 | https://dev.mysql.com/doc/refman/8.0/en/replication.html |
推荐资源:
- 黑马 MySQL 教程: https://www.bilibili.com/video/BV1Kr4y1i7ru
- 极客时间《MySQL 实战 45 讲》— 性价比最高的 MySQL 课程
- MySQL 官方文档: https://dev.mysql.com/doc/refman/8.0/en/
3.2 Redis
你简历中的使用场景: 多级缓存、Lua 预减库存、Sorted Set Feed 流、Bitmap 去重、分布式锁
必须掌握的知识点:
| 知识点 | 你简历哪里用到了 | 学习资源 |
|---|---|---|
| 5 种基本数据结构 | 缓存基础 | https://redis.io/docs/data-types/ |
| Sorted Set | Feed 流时间排序 | https://redis.io/docs/data-types/sorted-sets/ |
| Bitmap | 点赞/收藏去重 | https://redis.io/docs/data-types/bitmaps/ |
| Lua 脚本 | 预减库存防超卖 | https://redis.io/docs/manual/programmability/eval/ |
| 缓存雪崩/穿透/击穿 | 简历直接写了 | https://github.com/CyC2018/CS-Notes/blob/master/notes/Redis.md |
| 分布式锁(Redisson) | 简历技能清单写了 | https://github.com/redisson/redisson/wiki |
| 多级缓存(Caffeine + Redis) | 零碳平台 L1+L2 | https://github.com/ben-manes/caffeine/wiki |
| Redis 持久化(RDB/AOF) | 面试必问 | https://redis.io/docs/management/persistence/ |
推荐资源:
- 黑马程序员 Redis: https://www.bilibili.com/video/BV1cr4y1w7Fr
- 《Redis 设计与实现》书籍
- Redis 官方文档: https://redis.io/docs/
动手项目(秒杀系统):
实现一个简易秒杀系统:
1. Redis + Lua 预减库存
2. DCL + 热点 Key 打散解决缓存击穿
3. RocketMQ 异步下单
4. Redisson 分布式锁防超卖
参考项目:https://github.com/qiurunze123/miaosha
3.3 Oracle
你简历中的使用场景: 神州数码项目原有数据库
学习资源:
重点了解:
- PL/SQL 存储过程(你简历提到“原 Oracle 存储过程中的拆分规则”)
- Oracle 索引与执行计划(
EXPLAIN PLAN FOR) - Oracle 与 MySQL 语法差异
3.4 GaussDB(华为高斯数据库)
你简历中的使用场景: 信创改造 Oracle→GaussDB 迁移
学习资源:
| 资源 | 链接 |
|---|---|
| GaussDB 官方文档 | https://support.huaweicloud.com/gaussdb/ |
| GaussDB 开发者指南 | https://support.huaweicloud.com/devg-gaussdb/ |
| GaussDB 分布式架构 | https://support.huaweicloud.com/productdesc-gaussdb/ |
重点了解:
- 分布式架构(CN 协调节点 / DN 数据节点)
- 分布键设置与数据倾斜
- Oracle 兼容性(数据类型映射、隐式转换差异)
- ANALYZE 统计信息 + Hint 执行计划干预
3.5 PostgreSQL + pgvector
你简历中的使用场景: RAG 系统向量存储
学习资源:
| 资源 | 链接 |
|---|---|
| PostgreSQL 官方教程 | https://www.postgresql.org/docs/current/tutorial.html |
| pgvector GitHub | https://github.com/pgvector/pgvector |
| pgvector 使用文档 | https://github.com/pgvector/pgvector#usage |
重点掌握:
-- 启用 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;
-- 创建带向量列的表
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT,
embedding VECTOR(1536)
);
-- 余弦相似度检索(你简历写了这个)
SELECT * FROM documents
ORDER BY embedding <=> '[0.1, 0.2, ...]' -- 余弦距离
LIMIT 5;
-- 创建向量索引加速检索
CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops);
3.6 TDengine(时序数据库)
你简历中的使用场景: 零碳平台设备数据存储,“写入性能提升10倍,存储成本降低60%”
学习资源:
| 资源 | 链接 |
|---|---|
| TDengine 官方文档 | https://docs.taosdata.com/ |
| TDengine 快速入门 | https://docs.taosdata.com/get-started/ |
| TDengine Java 连接器 | https://docs.taosdata.com/connector/java/ |
3.7 Apache Doris(OLAP 引擎)
你简历中的使用场景: 零碳平台指标聚合预计算,“大屏接口响应从秒级降至200ms”
学习资源:
| 资源 | 链接 |
|---|---|
| Doris 官方文档 | https://doris.apache.org/docs/ |
| Doris 快速入门 | https://doris.apache.org/docs/install/ |
| Doris 极客教程 | https://doris.apache.org/docs/best-practice/ |
第四阶段:中间件(高并发三剑客)
简历技能清单写了 RocketMQ/Kafka/RabbitMQ,但项目只用了 RocketMQ。面试官会问“为什么选 RocketMQ 而不是 Kafka”。
4.1 RocketMQ
你简历中的使用场景: 事务消息保障分布式事务最终一致性
必须掌握的知识点:
| 知识点 | 学习资源 |
|---|---|
| 消息模型(Topic/Tag/Group) | https://rocketmq.apache.org/zh/docs/ |
| 事务消息原理 | 简历直接写了,面试必问原理 |
| 顺序消息 | 简历技能清单写了 |
| 消息幂等 | 简历写了幂等键设计 |
| 消息积压处理 | 面试高频 |
| 死信队列 | https://rocketmq.apache.org/zh/docs/ |
官方文档: https://rocketmq.apache.org/zh/docs/
事务消息流程图(面试要能画出来):
1. Producer 发送半消息到 Broker
2. Broker 存储半消息后返回确认
3. Producer 执行本地事务
4. Producer 提交二次确认(Commit/Rollback)
5. 如果超时未确认,Broker 回查 Producer 本地事务状态
6. Commit → 消息对 Consumer 可见;Rollback → 删除消息
4.2 Kafka(对比学习)
学习资源:
- Kafka 官方文档: https://kafka.apache.org/documentation/
- 《Kafka 权威指南》书籍
重点对比:
| 维度 | RocketMQ | Kafka |
|---|---|---|
| 事务消息 | 原生支持 | 仅 Producer 事务 |
| 延迟消息 | 原生支持 | 不支持 |
| 消息回溯 | 按时间 | 按 Offset |
| 吞吐量 | 万级/秒 | 百万级/秒 |
| 适用场景 | 业务消息 | 日志/大数据 |
4.3 RabbitMQ(了解即可)
学习资源: https://www.rabbitmq.com/documentation.html
4.4 ElasticSearch
你简历中的使用场景: 社区平台全文检索、内容审核、敏感词过滤
学习资源:
4.5 Redisson 分布式锁
学习资源:
- Redisson Wiki: https://github.com/redisson/redisson/wiki
- Redisson 看门狗机制原理(面试会问)
第五阶段:大数据(项目一&三核心)
简历写了 Spark + HBase,面试官一定会追问原理。
5.1 Apache Spark
你简历中的使用场景: 资金拆分逻辑重构(Spark SQL 替代 Oracle 存储过程)
必须掌握的知识点:
| 知识点 | 为什么重要 | 学习资源 |
|---|---|---|
| Spark SQL | 简历直接写了 | https://spark.apache.org/docs/latest/sql-programming-guide.html |
| RDD/DataFrame | 核心抽象 | https://spark.apache.org/docs/latest/rdd-programming-guide.html |
| Shuffle 原理 | 简历提到“避免 Shuffle 数据倾斜” | https://spark.apache.org/docs/latest/tuning.html |
| 数据分区策略 | 简历直接写了 | https://spark.apache.org/docs/latest/quick-start.html |
| Spark 集群架构 | 面试基础 | https://spark.apache.org/docs/latest/cluster-overview.html |
官方文档: https://spark.apache.org/docs/latest/
动手练习:
# 1. 本地安装 Spark(standalone 模式)
# 2. 用 Spark SQL 读取一个 CSV 文件做聚合统计
# 3. 故意制造数据倾斜(大量相同 Key),然后用 salting(加盐)解决
# 4. 对比相同 SQL 在 Spark 和 MySQL 中的执行计划差异
5.2 Apache HBase
你简历中的使用场景: 拆分中间结果存储、RowKey 设计、二级索引
必须掌握的知识点:
| 知识点 | 学习资源 |
|---|---|
| LSM 树原理 | 简历直接写了,必须能解释 |
| RowKey 设计 | 简历直接写了(业务日期+指令ID) |
| 二级索引 | 简历直接写了 |
| HBase 架构(RegionServer/HFile) | https://hbase.apache.org/book.html |
| 写入流程(WAL → MemStore → HFile) | 面试必问 |
官方文档: https://hbase.apache.org/book.html
重点理解:
LSM 树为什么写入快?
→ 数据先写内存(MemStore),达到阈值后批量刷盘(Flush)为 HFile
→ 相比 B+ 树的随机写,LSM 是顺序写,性能高出一个数量级
→ 这就是你简历里"利用 HBase 的 LSM 树结构提升大批量写入性能"的原理
RowKey 设计为什么重要?
→ HBase 按 RowKey 字典序存储,相近的 RowKey 存在同一个 Region
→ 设计前缀(业务日期+指令ID)支持范围扫描
→ 避免 Hotspoting(热点问题):不要用时间戳作为唯一前缀
第六阶段:AI 应用开发与 AI 编程(简历差异化亮点)
这是简历最大的差异化优势。面试官会重点考察三件事:
- 你“真的懂 RAG 还是只是调 API”
- 你“真的懂 AI Agent 还是只用了 Function Calling”
- 你“用 Cursor/DeepSeek 写代码有没有工程化约束,还是无脑让 AI 生成”
6.1 LangChain4j
你简历中的使用场景: RAG 系统(文档解析、向量检索、对话接口、Function Calling)
必须掌握的知识点:
| 知识点 | 你简历哪里用到了 | 学习资源 |
|---|---|---|
| AiServices 接口 | RAG 对话接口 | https://docs.langchain4j.dev/tutorials/ai-services |
| RAG 全流程 | 项目二核心 | https://docs.langchain4j.dev/tutorials/rag |
| Function Calling(@Tool)→ AI Agent 编排 | 简历直接写了,Agent 自主规划任务 | https://docs.langchain4j.dev/tutorials/tools |
| Streaming(SSE 流式返回) | 简历直接写了 | https://docs.langchain4j.dev/tutorials/ai-services#streaming |
| Embedding Model | 向量化 | https://docs.langchain4j.dev/tutorials/embeddings |
| Chat Memory(对话历史)→ Agent 会话状态 | Redis 多轮上下文 + Agent 多轮工具选择 | https://docs.langchain4j.dev/tutorials/chat-memory |
| Document Loader/Spitter | 文档分块 | https://docs.langchain4j.dev/tutorials/rag#document-loader |
官方文档(最重要): https://docs.langchain4j.dev/
推荐教程:
- 程序员鱼皮 LangChain4j 保姆级教程: https://www.codefather.cn/post/1943518702568288258
- LangChain4j 中文文档: https://docs.langchain4j.dev/get-started
手把手实战项目(强烈推荐):
项目:ai-code-helper(程序员鱼皮)
GitHub: https://github.com/xuejiale929/ai-code-helper
技术栈:Spring Boot 3.5 + Java 21 + LangChain4j
覆盖能力:RAG 全链路 + Tool Calling + MCP + SSE 流式
学习路径:
1. Fork 项目 → 本地跑通
2. 阅读源码,理解 RAG 流程
3. 改造为"资产托管智能助手"(换文档、换工具)
4. 写进简历作为 PoC 项目
6.2 Prompt 工程
你简历中的使用场景: “System Prompt 约束回答范围”、“不知道保护机制”
学习资源:
| 资源 | 链接 |
|---|---|
| OpenAI Prompt 工程指南 | https://platform.openai.com/docs/guides/prompt-engineering |
| LangChain4j System Message | https://docs.langchain4j.dev/tutorials/ai-services#system-message |
| DeepSeek API 文档 | https://platform.deepseek.com/api-docs |
重点理解(面试会问):
1. System Prompt 为什么要约束回答范围?
→ 防止 LLM 幻觉(hallucination),确保回答基于检索到的文档
2. "不知道"保护机制怎么实现?
→ 检索结果相似度低于阈值(如 0.75)时,直接返回"未找到相关信息"
→ 避免低质量检索结果被 LLM 强行编造答案
3. 文档分块为什么要 500-800 字 + 滑动窗口?
→ 太短:上下文不完整,检索到片段无法理解
→ 太长:向量稀释,检索精度下降
→ 滑动窗口(overlap):保证分块边界的内容不会丢失上下文
6.3 Apache Tika
你简历中的使用场景: “基于 Apache Tika 实现文本内容提取与清洗”
学习资源:
| 资源 | 链接 |
|---|---|
| Tika 官方文档 | https://tika.apache.org/ |
| Tika Java API | https://tika.apache.org/2.9.0/api/ |
| LangChain4j 文档加载 | https://docs.langchain4j.dev/tutorials/rag#document-loader |
6.4 向量数据库与 Embedding
必须理解的概念:
| 概念 | 说明 | 学习资源 |
|---|---|---|
| Embedding | 将文本转为高维向量 | https://platform.openai.com/docs/guides/embeddings |
| 余弦相似度 | 衡量向量相似程度 | https://en.wikipedia.org/wiki/Cosine_similarity |
| Top-K 检索 | 召回最相关的 K 个文档片段 | 简历写了 Top-5 |
| IVFFlat 索引 | 向量近似最近邻索引 | https://github.com/pgvector/pgvector#indexing |
6.5 AI Agent 编排(简历项目二核心升级)
简历已将 Function Calling 升级为 AI Agent 工具编排,面试官会问“Agent 和普通 Function Calling 有什么区别”“Agent 怎么做多步任务规划”。
必须理解的概念:
| 概念 | 说明 | 你简历哪里用到了 |
|---|---|---|
| Function Calling | AI 判断意图 → 调用单个工具 → 拿结果 → 继续生成 | LangChain4j @Tool |
| AI Agent | Agent 自主规划任务 → 拆解子任务 → 动态选择工具 → 多轮执行 → 汇总结果 | 项目二核心升级 |
| ReAct 模式 | Reason + Act:思考→行动→观察→再思考的循环 | Agent 任务规划 |
| 工具调用失败重试 | 工具异常时 Agent 降级或重试,保证多轮任务可恢复 | 简历直接写了 |
| Agent 会话状态 | 多轮对话中保持工具调用上下文,支持动态工具选择 | Redis TTL 30 分钟 |
Function Calling vs AI Agent 的区别(面试重点):
Function Calling(单轮):
用户问"查一下我的Jira任务"
→ AI 判断需要调用 Jira 工具
→ 调用 @Tool jiraQuery(userId)
→ 拿到结果 → 生成回答
→ 结束
AI Agent(多轮规划):
用户问"帮我查这周的Jira任务,顺便看看项目二进度"
→ Agent 规划:
子任务1:调用 Jira 工具查本周任务
子任务2:调用指令进度追踪工具查项目二状态
→ 执行子任务1 → 拿到结果 → 观察
→ 执行子任务2 → 工具调用失败 → 降级返回默认提示 → 观察
→ 汇总两个子任务结果 → 生成综合回答
→ 全程通过 Redis 维持会话状态,支持后续追问
学习资源:
| 资源 | 链接 | 说明 |
|---|---|---|
| LangChain4j Tools 文档 | https://docs.langchain4j.dev/tutorials/tools | @Tool 注解 + Agent 编排 |
| LangChain4j AI Services | https://docs.langchain4j.dev/tutorials/ai-services | AiServices 接口封装 Agent |
| ReAct 论文解读 | https://arxiv.org/abs/2210.03629 | Reason+Act 范式原理 |
| DeepSeek Function Calling | https://platform.deepseek.com/api-docs | DeepSeek API 工具调用 |
重点理解(面试会问):
1. Agent 和 Function Calling 的区别?
→ Function Calling 是单次工具调用(AI 判断要不要调工具)
→ Agent 是多步任务规划(AI 自主拆解任务、动态选工具、多轮执行)
→ Agent 底层可以用 Function Calling 实现,但多了"规划-执行-观察"的循环
2. Agent 多轮对话怎么保持状态?
→ Redis 存对话历史(TTL 30 分钟)
→ 每轮把上一步的工具调用结果作为上下文传给 LLM
→ Agent 根据历史上下文决定下一步动作
3. 工具调用失败怎么办?
→ 重试:同一工具重试 N 次
→ 降级:返回默认提示或换一个工具
→ 人工兜底:连续失败转人工处理
→ 简历写了"工具调用失败重试/降级策略",面试要能说清
6.6 AI 编程工具与 Skills 规则工程(简历新增亮点)
简历新增了 Cursor、Claude Code、DeepSeek 等 AI 编程工具的使用经验,以及编写 Skills 规则文件约束 AI 输出质量的实践。面试官会问“你怎么保证 AI 生成的代码质量”“Skills 规则具体写了什么”。
你简历中的使用场景:
- 神州数码工作经历:Cursor + DeepSeek 辅助代码生成与优化,编写 Skills 规则文件约束 AI 编码行为
- 项目一:Cursor + DeepSeek 辅助生成状态机与交收匹配核心代码,Skills 约束资金类操作强制加锁、金额校验不可省略
- 技能清单第 8 条:熟练使用 Cursor、Claude Code、DeepSeek,编写 Skills 规则文件约束 AI 输出质量
必须掌握的知识点:
| 知识点 | 为什么重要 | 学习资源 |
|---|---|---|
| Cursor 基本使用 | 简历直接写了 | https://docs.cursor.com/ |
| Cursor Rules(.cursor/rules) | 约束 AI 编码行为的核心机制 | https://docs.cursor.com/context/rules |
| Claude Code 使用 | 简历直接写了 | https://docs.anthropic.com/en/docs/claude-code |
| Claude Code Skills(.claude/skills) | 约束 AI 输出的规则文件 | https://docs.anthropic.com/en/docs/claude-code/skills |
| DeepSeek API | 简历项目二技术栈 | https://platform.deepseek.com/api-docs |
| Prompt 工程约束代码质量 | Skills 规则的本质 | 见 6.2 Prompt 工程 |
Skills 规则文件是什么?(面试核心)
Skills 规则文件 = 给 AI 编程助手设定的"编码规范 + 安全红线"
类似团队 Code Review 的 check list,但写成 AI 能理解的规则文件,
让 AI 在生成代码时自动遵守。
常见的规则维度:
1. 代码规范:命名风格、注释要求、包结构
2. 安全红线:资金类操作必须加锁、金额必须校验、SQL 必须参数化
3. 异常处理:不允许吞异常、必须记录日志、必须返回统一错误码
4. 事务边界:哪些方法必须 @Transactional、传播行为怎么选
5. 禁止事项:不允许用 Executors 创建线程池、不允许用 new Date()
Cursor Rules 示例(你简历项目一的 Skills 规则):
# .cursor/rules/custody-system.md
## 项目背景
资产托管指令管理系统,涉及资金清算与证券交收,对数据准确性要求极高。
## 编码规范
- Service 方法名使用动词开头:create/settle/cancel/query
- DTO 命名:XxxCreateDTO / XxxQueryDTO / XxxVO
- 所有金额字段使用 BigDecimal,禁止使用 double/float
## 安全红线(必须遵守)
- 资金类操作(扣款/入账/清算)必须加分布式锁(Redisson)
- 金额校验不可省略:金额必须 > 0,精度不超过 2 位小数
- SQL 必须使用参数化查询(MyBatis #{}),禁止字符串拼接 ${}
- 状态机变更必须走统一入口,禁止直接 update 状态字段
## 异常处理
- 不允许 catch Exception 后不处理(吞异常)
- 业务异常抛 BusinessException,系统异常抛 RuntimeException
- 所有异常必须记录日志(包含指令ID、操作人、时间戳)
## 事务边界
- 指令创建、交收匹配方法必须加 @Transactional
- 操作日志使用 REQUIRES_NEW 传播行为(主业务失败也要留痕)
- 批量导入使用 NESTED 传播行为(单条失败不影响整体)
Claude Code Skills 示例:
# .claude/skills/code-review.md
## 代码审查规则
当生成或修改代码时,必须检查:
1. 是否有资源泄漏(流未关闭、连接未释放)
2. 是否有并发安全问题(共享可变状态未同步)
3. 是否有 N+1 查询问题(循环内查数据库)
4. 是否有硬编码(魔法数字、写死的 URL/IP)
5. 异常处理是否完整(try-catch-finally / try-with-resources)
## Java 项目专项
- 线程池必须用 ThreadPoolExecutor 手动创建,禁止 Executors
- 日期处理用 java.time(LocalDateTime),禁止 new Date() / Calendar
- 集合判空用 CollectionUtils.isEmpty(),禁止 null != list && !list.isEmpty()
重点理解(面试会问):
1. 为什么要写 Skills 规则文件?
→ AI 生成的代码如果不加约束,可能:
- 不符合项目编码规范(命名风格混乱)
- 忽略安全红线(资金操作没加锁、SQL 拼接)
- 异常处理不完整(吞异常、不记日志)
→ Skills 规则 = 把团队的 Code Review 标准固化成 AI 能理解的规则
→ AI 生成代码时自动遵守,减少人工 review 成本
2. Skills 规则和 System Prompt 有什么区别?
→ System Prompt 约束 LLM 的回答范围(如"只基于文档回答")
→ Skills 规则约束 AI 的编码行为(如"资金操作必须加锁")
→ 两者互补:System Prompt 管"说什么",Skills 规则管"怎么写代码"
3. AI 生成的代码直接合入吗?
→ 不直接合入。流程是:
AI 生成代码 → 人工评审 → 修改 → 测试 → 合入
→ Skills 规则减少但不消除人工审查的必要性
→ 简历写了"人工评审后合入",面试要强调这一点
动手练习:
# 练习 1:在 Cursor 中创建 .cursor/rules 文件,约束一个 Spring Boot 项目的编码规范
# 练习 2:用 Cursor + DeepSeek 生成一段状态机代码,观察有无 Skills 规则时的输出差异
# 练习 3:在 Claude Code 中创建 .claude/skills 文件,约束代码审查规则
# 练习 4:对比 Cursor Rules 和 Claude Code Skills 的语法差异
第七阶段:云原生与 DevOps(工程化能力)
7.1 Docker
你简历中的使用场景: 12 个微服务容器化
学习资源:
| 资源 | 链接 |
|---|---|
| Docker 官方文档 | https://docs.docker.com/ |
| Docker 从入门到实践 | https://yeasy.gitbook.io/docker_practice/ |
| Dockerfile 最佳实践 | https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ |
必须掌握:
# 你要能写出一个标准的 Spring Boot Dockerfile
FROM openjdk:17-jdk-slim
VOLUME /tmp
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=prod"]
7.2 Kubernetes(K8s)
你简历中的使用场景: Deployment/HPA/Service
学习资源:
| 资源 | 链接 |
|---|---|
| K8s 官方文档 | https://kubernetes.io/zh-cn/docs/ |
| K8s 教程(官网互动式) | https://kubernetes.io/zh-cn/docs/tutorials/ |
| 《Kubernetes in Action》 | 书籍 |
| K8s 中文社区 | https://www.kubernetes.org.cn/ |
必须掌握(简历写了的):
# Deployment — 你简历直接写了
apiVersion: apps/v1
kind: Deployment
metadata:
name: order-service
spec:
replicas: 3
template:
spec:
containers:
- name: order-service
image: order-service:v1
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
# HPA — 你简历直接写了
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: order-service-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: order-service
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
# Service — 你简历直接写了
apiVersion: v1
kind: Service
metadata:
name: order-service
spec:
selector:
app: order-service
ports:
- port: 8080
targetPort: 8080
7.3 Jenkins CI/CD
你简历中的使用场景: “代码提交→单元测试→镜像构建→K8s部署”
学习资源:
| 资源 | 链接 |
|---|---|
| Jenkins 官方文档 | https://www.jenkins.io/doc/ |
| Jenkins Pipeline 语法 | https://www.jenkins.io/doc/book/pipeline/ |
| Jenkins + K8s 实战 | https://www.jenkins.io/doc/book/pipeline/kubernetes/ |
7.4 SonarQube
学习资源: https://docs.sonarsource.com/sonarqube/latest/
第八阶段:可观测性(线上排障能力)
8.1 SkyWalking
你简历中的使用场景: 全链路追踪、自定义业务指标埋点
学习资源:
| 资源 | 链接 |
|---|---|
| SkyWalking 官方文档 | https://skywalking.apache.org/docs/ |
| SkyWalking Java Agent | https://skywalking.apache.org/docs/java-agent/latest/en/setup/ |
| SkyWalking 架构原理 | https://skywalking.apache.org/docs/main/latest/en/concepts-and-design/ |
必须理解(面试会问原理):
SkyWalking 是怎么做全链路追踪的?
→ 字节码增强:Java Agent 在类加载时注入追踪代码
→ TraceId 通过 ThreadLocal 在同线程传递
→ 跨服务通过 HTTP Header(sw8)传递 TraceId
→ 上报到 OAP Server → 存入 Elasticsearch → UI 展示
8.2 Prometheus + Grafana
你简历中的使用场景: 监控告警体系、自定义业务指标
学习资源:
| 资源 | 链接 |
|---|---|
| Prometheus 官方文档 | https://prometheus.io/docs/introduction/overview/ |
| Grafana 官方文档 | https://grafana.com/docs/ |
| Spring Boot Actuator + Prometheus | https://prometheus.io/docs/instrumenting/exporters/ |
| Micrometer(Java 指标埋点) | https://micrometer.io/docs |
8.3 Arthas(阿里线上诊断工具)
你简历中的使用场景: 技能清单写了
学习资源:
| 资源 | 链接 |
|---|---|
| Arthas 官方文档 | https://arthas.aliyun.com/ |
| Arthas 命令列表 | https://arthas.aliyun.com/doc/commands.html |
| Arthas 在线教程 | https://arthas.aliyun.com/doc/arthas-tutorials.html |
必须会的命令:
arthas > dashboard # 总览线程/内存/GC 状态
arthas > thread -n 3 # 查看最忙的 3 个线程
arthas > jad com.xxx.Service # 反编译类,看运行时代码
arthas > watch com.xxx.Service method '{params, returnObj}' # 观察方法入参和返回值
arthas > trace com.xxx.Service method # 查看方法调用链路耗时
arthas > profiler start # 生成火焰图
第九阶段:前端基础(全栈协作)
9.1 Vue.js + Element UI
你简历中的使用场景: RAG 系统前端、前后端分离
学习资源:
| 资源 | 链接 |
|---|---|
| Vue3 官方文档 | https://cn.vuejs.org/guide/ |
| Element Plus | https://element-plus.org/zh-CN/ |
| Vue3 教程 | https://www.bilibili.com/video/BV1nY411a7Lq |
掌握程度: 能看懂前端代码、能写简单页面即可,不需要精通。
实战项目推荐清单
按优先级排列,建议至少完成前 3 个。
项目 1:AI 知识库助手(最高优先级)
项目名:ai-code-helper
GitHub: https://github.com/xuejiale929/ai-code-helper
作者:程序员鱼皮
技术栈:Spring Boot 3.5 + Java 21 + LangChain4j + PostgreSQL(pgvector)
覆盖:RAG 全链路 + Function Calling + AI Agent 编排 + MCP + SSE 流式
学习目标:
1. Fork → 本地跑通(1天)
2. 阅读源码,理解 RAG 流程(2天)
3. 改造为"资产托管知识库助手"(3天)
4. 配置 Cursor Rules / Claude Code Skills 规则文件约束 AI 编码行为(1天)
5. 写进简历作为技术预研项目
为什么推荐:
- 代码规范好,适合学习工程化
- 覆盖你简历 RAG 项目所有技术点
- 社区活跃,有详细教程
项目 2:秒杀系统(高并发经典)
项目名:miaosha
GitHub: https://github.com/qiurunze123/miaosha
技术栈:Spring Boot + Redis + RocketMQ + RabbitMQ
覆盖:Redis Lua 预减库存、缓存击穿、分布式锁、消息队列
学习目标:
1. 理解高并发场景下的缓存策略
2. 掌握 Redis + Lua 原子操作
3. 理解消息队列在削峰填谷中的作用
为什么推荐:
- 覆盖你简历项目四的所有技术点
- 面试高频场景题
项目 3:Spring Cloud Alibaba 微服务实战
项目名:mall(mall-cloud)
GitHub: https://github.com/macrozheng/mall
技术栈:Spring Cloud Alibaba + Nacos + Sentinel + Gateway + Seata
覆盖:微服务全家桶
学习目标:
1. 理解微服务架构设计
2. 掌握 Nacos + Sentinel + Gateway 联动
3. 学习分布式事务(Seata)
为什么推荐:
- 覆盖你简历零碳平台的所有微服务技术
- macrozheng 的项目文档极其完善
项目 4:Chat2DB(AI 驱动数据库工具,源码学习)
项目名:Chat2DB
GitHub: https://github.com/CodePhiliaX/Chat2DB
Star: 24.8k+
技术栈:Java + Spring Boot + Vue + AI
覆盖:NL2SQL、AI 辅助 SQL 调优
学习目标:
1. 读源码学习 AI + 数据库的架构设计
2. 理解 NL2SQL 的实现原理
3. 可以贡献 PR 增加简历含金量
为什么推荐:
- 与你简历"SQL 性能调优"完美匹配
- 理解 AI 在数据库领域的应用
项目 5:Spark 实战练习
项目名:spark-learning
GitHub: https://github.com/lw-lin/Coursera-BigData
学习目标:
1. 本地搭建 Spark 环境
2. 用 Spark SQL 做数据分析
3. 理解 Shuffle 和数据倾斜
4. 模拟你简历中的"资金拆分逻辑"
面试高频考点速查表
按你简历中出现频率和面试被问概率排列。
Java 基础(100% 会问)
| 考点 | 一句话答案 | 深入学习 |
|---|---|---|
| HashMap 原理 | 数组+链表+红黑树,阈值 8 转红黑树 | 看源码 |
| ConcurrentHashMap | JDK8 用 CAS + synchronized | 对比 JDK7 分段锁 |
| 线程池参数 | corePoolSize/maxPoolSize/queue/rejectHandler | 手写线程池 demo |
| volatile | 可见性 + 禁止重排序,不保证原子性 | 结合 DCL 理解 |
| AQS | CLH 队列 + state + 独占/共享模式 | 看 ReentrantLock 源码 |
| ThreadLocal | 线程隔离,内存泄漏用弱引用解决 | 理解 InheritableThreadLocal |
JVM(90% 会问)
| 考点 | 一句话答案 | 深入学习 |
|---|---|---|
| JVM 内存结构 | 堆/栈/方法区/程序计数器/本地方法栈 | 画图 |
| G1 vs ZGC | G1: Region 分代, 200ms 暂停; ZGC: 染色指针, <10ms | 看官方调优文档 |
| GC 算法 | 标记-清除/复制/标记-整理 | 理解适用场景 |
| 双亲委派 | 子加载器先委托父加载器 | 打破双亲委派的场景 |
| OOM 排查 | jmap dump → MAT 分析 | 实操 |
Spring(95% 会问)
| 考点 | 一句话答案 |
|---|---|
| IOC 原理 | 反射 + 工厂模式 + 配置元数据 |
| AOP 原理 | JDK 动态代理(接口)/ CGLIB(类) |
| @Transactional 失效场景 | 自调用/非 public/异常被吞/传播级别错误 |
| Spring Boot 自动配置 | @EnableAutoConfiguration → spring.factories |
| Bean 生命周期 | 实例化→属性填充→初始化→使用→销毁 |
数据库(100% 会问)
| 考点 | 一句话答案 |
|---|---|
| B+ 树 vs B 树 | B+ 树非叶子不存数据,范围查询更快 |
| 最左前缀原则 | 联合索引 (a,b,c),能用 a / a,b / a,b,c,不能跳过 a |
| MVCC | 读视图 + undo log + 版本链 |
| 事务隔离级别 | 读未提交/读已提交/可重复读/串行化 |
| Redis 持久化 | RDB 快照 / AOF 日志,各有优劣 |
AI/RAG/Agent(85% 会问,差异化重点)
| 考点 | 一句话答案 |
|---|---|
| RAG 流程 | 文档加载→分块→向量化→存储→检索→增强→生成 |
| 为什么不用 LLM 直接回答 | 知识时效性 + 幻觉 + 数据隐私 + 成本 |
| 文档分块策略 | 按段落语义 + 滑动窗口(500-800字),兼顾精度和上下文 |
| 余弦相似度 | 衡量向量方向相似性,不关心长度 |
| Function Calling | AI 判断意图→调用工具→拿结果→继续生成 |
| Agent vs Function Calling | Function Calling 是单次工具调用,Agent 是多步任务规划+动态工具选择+多轮执行 |
| Agent 会话状态管理 | Redis 存对话历史(TTL 30分钟),每轮把工具调用结果作为上下文传给 LLM |
| 工具调用失败处理 | 重试 N 次 → 降级返回默认提示 → 连续失败转人工 |
| Prompt 约束 | System Prompt 限定回答范围,防止幻觉 |
| AI 编程工具(Cursor/DeepSeek) | 辅助代码生成与优化,人工评审后合入 |
| Skills 规则文件 | 约束 AI 编码行为(代码规范/安全红线/异常处理),类似 Code Review check list 固化成 AI 规则 |
| Skills vs System Prompt | System Prompt 管“说什么”,Skills 规则管“怎么写代码”,两者互补 |
中间件(85% 会问)
| 考点 | 一句话答案 |
|---|---|
| RocketMQ 事务消息 | 半消息→本地事务→二次确认→回查机制 |
| 消息幂等 | 幂等键(userId+activityId+date)+ 去重表 |
| Kafka vs RocketMQ | Kafka 吞吐高但无事务消息,RocketMQ 适合业务 |
| ES 倒排索引 | 分词→构建词项到文档的映射 |
| 分布式锁实现 | Redis SETNX + 过期时间 / Redisson 看门狗续期 |
学习时间规划建议
假设每天学习 3-4 小时,总计约 12 周完成全部补齐。
| 周次 | 学习内容 | 产出 |
|---|---|---|
| 第 1-2 周 | JUC 并发 + JVM | 手写线程池、GC 日志分析 |
| 第 3-4 周 | Spring Boot + Spring Cloud Alibaba | 3 微服务 demo |
| 第 5 周 | MySQL 深入 + Redis | 秒杀系统 demo |
| 第 6 周 | RocketMQ + ElasticSearch | 秒杀系统集成 MQ |
| 第 7 周 | Spark + HBase | 资金拆分模拟 demo |
| 第 8-9 周 | LangChain4j + RAG 全链路 + AI Agent + AI 编程工具 | ai-code-helper 跑通+改造、配置 Cursor/Skills 规则 |
| 第 10 周 | Docker + K8s | 微服务容器化部署 |
| 第 11 周 | SkyWalking + Prometheus | 搭建可观测性体系 |
| 第 12 周 | 面试冲刺 + 查漏补缺 | 模拟面试 |
学习心法
- 先跑通再理解:每个技术先跑通一个 Hello World,再回头看原理
- 带着项目学:不要干看文档,边学边往你的项目里加
- 面试倒逼学习:列出面试高频题,逐个攻克
- 源码不是全部:看核心流程的源码即可,不要逐行读
- 量化你的学习:每学一个技术,记录“我学到了什么,能解决什么问题”
最后更新:2026-08-17