朱宏晖 — 简历技术栈全量学习指南

朱宏晖 — 简历技术栈全量学习指南

本文档基于你简历中出现的所有技术栈,按学习优先级排列,每个技术附上官方文档、推荐教程和实战项目。 定位:假设你只会写 Java CRUD,从零开始补齐简历上每一个技术点。


📖 本文档名词速查(看到不认识的缩写,先查这里)

完整的白话解释、生活类比、面试话术见 00-名词速查手册.md。 下面只列本文档用到的名词,按出现频率排序。

缩写 / 术语 英文全称 一句话说明 出处
JVM Java Virtual Machine Java 虚拟机,让 Java 代码“一次编译到处运行”的那个东西 第4章
RAG Retrieval-Augmented Generation 检索增强生成:先查资料,再让 AI 基于资料回答 第11章
Prompt Prompt(提示词) 你给 AI 的指令/问题 第11章
Spark Apache Spark 分布式计算引擎,把数据切成小块分给多台机器同时算 第15章
RocketMQ RocketMQ 阿里开源的消息队列,事务消息是它的强项 第2章
Kafka Kafka 最初为日志设计的消息队列,吞吐量极高 第2章
G1 Garbage First JDK 9+ 默认收集器,平衡吞吐和延迟 第4章
System Prompt System Prompt 给 AI 设定的“角色和规则”,优先级最高 第11章
API Application Programming Interface 应用程序接口,别人能调用你的功能 第13章
ZGC Z Garbage Collector 超低延迟收集器,停顿 < 10ms,支持 TB 级堆 第4章
Redisson Redisson Redis 的 Java 客户端,封装了分布式锁等高级功能 第7章
SkyWalking SkyWalking 国产 APM,分布式链路追踪 第8章
K8s Kubernetes(k8s 是缩写) 容器编排系统,管理成百上千个容器 第9章
JUC java.util.concurrent Java 并发工具包(JDK 5 开始),锁、线程池、原子类都在里面 第4章
GC Garbage Collection 垃圾回收,自动回收不用的对象 第4章
Arthas Arthas 阿里开源的 Java 诊断工具,线上排查神器 第8章
LLM Large Language Model 大语言模型,就是 ChatGPT 背后那个“大脑” 第11章
HBase Hadoop Database 分布式的列族数据库,适合海量数据的随机读写 第15章
Producer Producer(生产者) 发消息的一方 第2章
Nacos Naming and Configuration Service 阿里开源的注册中心 + 配置中心二合一 第7章
Sentinel Sentinel 阿里开源的流量治理组件(限流/熔断/降级) 第7章
RowKey Row Key HBase 的“主键”,数据按它排序存储,设计好坏直接决定性能 第15章
Gateway API Gateway 网关,所有请求的统一入口(鉴权/路由/限流) 第7章
Prometheus Prometheus 时序数据库 + 监控系统,拉模式采集 第8章
Docker Docker 最流行的容器引擎 第9章
Deployment Deployment(部署) 声明“我要跑几个副本”,K8s 负责维持 第9章
Seata Simple Extensible Autonomous Transaction Architecture 阿里开源的一站式分布式事务框架,支持 AT/TCC/Saga/XA 第1章
Broker Broker(消息服务器) MQ 的服务端本体,负责收、存、发消息 第2章
RabbitMQ RabbitMQ 老牌消息队列,功能丰富,吞吐不如前两者 第2章
TTL Time To Live 数据的“保质期”,到期自动删除 第3章
💡 为什么要有这张表?

技术文档最大的阅读障碍不是原理难,而是缩写不认识 —— 看到“2PC 在数据库层加锁” 这句话,如果不知道 2PC 是什么,整段就废了。

这张表保证你在任何位置遇到不认识的词,都能当场查到,不用跳出文档。 想知道“为什么是这样”“面试怎么答”,再点进手册看完整版。


目录


第一阶段: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 章

推荐视频:


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

推荐视频:

动手项目:

搭建一个包含 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

推荐资源:


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/

推荐资源:

动手项目(秒杀系统):

实现一个简易秒杀系统:
1. Redis + Lua 预减库存
2. DCL + 热点 Key 打散解决缓存击穿
3. RocketMQ 异步下单
4. Redisson 分布式锁防超卖

参考项目:https://github.com/qiurunze123/miaosha

3.3 Oracle

你简历中的使用场景: 神州数码项目原有数据库

学习资源:

资源 链接
Oracle 官方文档 https://docs.oracle.com/en/database/oracle/oracle-database/
Oracle SQL 调优指南 https://docs.oracle.com/en/database/oracle/oracle-database/21/tgsql/
存储过程基础 https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpnc/

重点了解:

  • 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(对比学习)

学习资源:

重点对比:

维度 RocketMQ Kafka
事务消息 原生支持 仅 Producer 事务
延迟消息 原生支持 不支持
消息回溯 按时间 按 Offset
吞吐量 万级/秒 百万级/秒
适用场景 业务消息 日志/大数据

4.3 RabbitMQ(了解即可)

学习资源: https://www.rabbitmq.com/documentation.html


4.4 ElasticSearch

你简历中的使用场景: 社区平台全文检索、内容审核、敏感词过滤

学习资源:

资源 链接
ES 官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/
ES Java API https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/
黑马 ES 教程 https://www.bilibili.com/video/BV1Lb4y1A7Hq
《Elasticsearch 权威指南》 https://www.elastic.co/guide/cn/elasticsearch/guide/current/

4.5 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 编程(简历差异化亮点)

这是简历最大的差异化优势。面试官会重点考察三件事:

  1. 你“真的懂 RAG 还是只是调 API”
  2. 你“真的懂 AI Agent 还是只用了 Function Calling”
  3. 你“用 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/

推荐教程:

手把手实战项目(强烈推荐):

项目: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

掌握程度: 能看懂前端代码、能写简单页面即可,不需要精通。


第十阶段:安全攻防(面试加分项,也是最容易拉开差距的一项)

为什么单独加这一阶段 前面九个回答的都是“怎么把功能做出来“,安全回答的是”怎么做才不会被打穿“。 中级和高级工程师的分水岭往往就在这里——功能谁都会写,但能说清”我为什么这么写才安全“的人不多。

配套文档(本阶段所有内容都出自这三篇,不用另找资料):

文档 规模 定位
11-安全攻防与系统加固-实战专题.md 3 万行 原理 + 代码:定义、危害场景、漏洞代码 vs 修复代码、面试话术
12-安全靶场实战-从零复现与加固验证.md 1.4 万行 动手:docker 起靶场、一步步复现、修复后再跑脚本验证
13-新兴攻击面与专项安全(7 分册) 8.6 万行 进阶扩展:AI 安全、API、GraphQL、移动端、IoT、内网渗透、取证、供应链、云原生、Web3、数据合规,356 道面试题(已拆成 7 个分册,从 00-开篇进入)

建议学习顺序:先 11 号搞懂“为什么”,再 12 号亲手打一遍,最后用 13 号查漏补缺(新兴攻击面 + 面试题总索引)。 面试时能说“我在本地靶场复现过 XX,修复后用脚本复测通过”,说服力远超背概念。


10.1 Web 安全(OWASP Top 10)

你简历中的使用场景: 所有对外接口、管理后台、文件上传功能

必须掌握:

漏洞 一句话原理 防御 优先级
SQL 注入 参数被拼进 SQL 当代码执行 预编译 #{},禁止 ${} ★★★
XSS 输入的 JS 被页面执行 输出转义 + CSP + HttpOnly ★★★
CSRF 骗浏览器冒充你发请求 CSRF Token + SameSite Cookie ★★★
越权(IDOR) 改 ID 就能看别人的数据 查询带 user_id 归属条件 ★★★ 最容易犯
SSRF 骗服务器替你访问内网 域名白名单 + 禁内网 IP + 禁元数据 ★★★ 云上最危险
文件上传 传了可被解析的脚本 白名单后缀 + 重命名 + 存非 Web 目录 ★★
XXE XML 外部实体读文件 禁用外部实体 setFeature ★★
命令注入 参数拼进 Runtime.exec() 白名单参数,绝不拼接 ★★

面试高频追问:

“你的项目里怎么防止越权的?” 加分答法要提到在系统层面解决而不是靠人记得写——比如用 MyBatis 拦截器自动追加归属条件, 以及审计日志里记录“谁访问了谁的数据”,用离线任务检测“短时间遍历大量 ID”的异常模式。

学习资源:

资源 链接
OWASP Top 10 2021 官方 https://owasp.org/Top10/
OWASP Cheat Sheet(各种防御速查) https://cheatsheetseries.owasp.org/
PortSwigger Web Security Academy(免费靶场,强烈推荐) https://portswigger.net/web-security

10.2 Java 组件安全(Java 岗几乎必考)

你简历中的使用场景: 项目依赖的 Spring / Fastjson / Log4j / Shiro 等

必须掌握的三个经典 CVE(面试能讲出完整链条就赢了):

CVE 组件 一句话根因 修复
Log4Shell(CVE-2021-44228,CVSS 10.0) Log4j2 ${jndi:ldap://} 会去远程下载并加载 class 升 2.17.1+
Shiro-550(CVE-2016-4437,CVSS 9.8) Shiro rememberMe 用硬编码密钥加密,密钥泄露即可伪造身份 换密钥 + 升级
Fastjson 1.2.47 RCE Fastjson autotype 的缓存绕过,通杀 1.2.25~1.2.47 升 1.2.83+ 或换 Jackson

反序列化的三个必问题:

① 为什么"还原对象"能执行代码?
   → readObject() 是方法,JVM 会自动调用类里重写的版本(这是特性不是 bug)

② 什么是 Gadget Chain?
   → 不引入新类,把项目里本来就有的几个无辜类串成自动执行的链
   → 类比:酒店三台各司其职的机器人,被一个包裹串起来自动开了保险柜

③ 怎么防?
   → 换 JSON/Kryo(最彻底)> JEP 290 白名单 > 升级依赖
   → 黑名单补不完,因为能凑成链的类是开放集合

掌握程度: 不要求会写利用链,但要求能说清根因和修复方案,并且知道怎么自查 (mvn dependency:tree 查版本、trivy fs . 扫依赖)。


10.3 云原生与容器安全

你简历中的使用场景: 12 个微服务跑在 K8s 上

K8s 安全的三件大事(记住这三个就够了):

① SA Token(身份)
   每个 Pod 默认挂着 /var/run/secrets/kubernetes.io/serviceaccount/token
   业务不调 K8s API 的话,这就是白送的攻击面 → automountServiceAccountToken: false

② etcd(存储,2379 端口)
   所有 Secret 都在里面,且默认只有 Base64 不算加密
   → 开 TLS 双向认证 + EncryptionConfiguration 静态加密

③ kubelet(边界,10250 端口)
   未授权 = 能 exec 进该节点任意 Pod → 开 webhook 认证、关匿名访问

容器安全的三个不要:

❌ 不要以 --privileged 启动容器(等于给 CAP_SYS_ADMIN)
❌ 不要把 /var/run/docker.sock 挂进容器(等于把宿主机 root 交出去)
❌ 不要用 root 用户跑容器进程

面试金句:

“容器共享宿主机内核,所以容器从来不是安全边界,只是隔离。 需要真正边界的场景要用 gVisor 或 Kata Containers。”

掌握程度: 能说出上面“三件大事 + 三个不要”,并能解释 “为什么挂 docker.sock 等于交出 root”即可。


10.4 安全工程化(DevSecOps)

你简历中的使用场景: CI/CD 流水线、上线前检查

五道 CI 卡点(从易到难,建议按顺序落地):

① gitleaks  —— 扫有没有把密钥提交进 Git
② Semgrep   —— 扫代码里的危险写法(如 ${} 拼 SQL)
③ trivy fs  —— 扫第三方依赖有没有已知 CVE
④ trivy image —— 扫镜像漏洞
⑤ Nuclei    —— 扫运行中的服务有没有已知漏洞

排优先级看什么(这是面试官爱听的细节):

不要只看 CVSS(理论严重程度)
要看 EPSS(未来 30 天被利用的概率)+ KEV(是否已被用于实战)

CVSS 9.8 但 EPSS 0.01 的漏洞 → 排进正常迭代
CVSS 7.5 但在 KEV 清单里的     → 立刻修

落地建议(血泪教训):

不要一次性把五道卡点全开成“失败即阻断”——研发会集体绕过你。 正确做法是温水煮青蛙:前几周只告警不阻断(report-only), 等告警清零了再改成阻断,一道一道来。

掌握程度: 能画出这条流水线、说出每道卡点用什么工具、以及“先告警后阻断”的落地节奏。


第十一阶段:扩展专题(按需选学)

这两个专题不在十阶段主线里,是“遇到再学”的扩展项。 但如果你的目标岗位 JD 里出现了它们,优先级立刻提到前三。

文档 规模 什么时候需要学
14-Activiti工作流引擎-讲解与面试题.md 3032 行 JD 提到「工作流 / 审批流 / OA / Activiti / Flowable」;或项目里有审批、工单、订单流转
15-MQTT物联网消息协议-讲解与面试题.md 2611 行 JD 提到「物联网 / IoT / 车联网 / 设备接入 / MQTT」;或项目里有设备上报、远程控制

14 号:Activiti 工作流引擎

★ 先判断要不要学(这比“学什么”更重要):

  • ✅ 该学:环节多、规则常变、要留痕、要可视化的审批类业务(OA、报销、工单、风控审核)
  • ❌ 别学:只有 2~3 步且常年不变的流程(一个状态字段就够);以及订单 / 支付这类高并发主链路(引擎每步读写十几张表,扛不住 QPS)

最低掌握要求:

① 说出 工作流 / BPM / BPMN / 引擎 四个词的层次关系(想法→图纸→施工队→某支施工队)
② 画出四种网关的区别:X 排他(只走一条)/ + 并行(全走且等全部)/ O 包容(满足的都走)/ △ 事件
③ 说出 ACT_RU_* 和 ACT_HI_* 的区别 ★(一个跑完清空,一个只增不减)
④ 会写四个 API:部署 → 启动实例 → 查待办 → 完成任务
⑤ 说出监听器的三个事务陷阱(同步执行 / 抛异常会回滚 / 不能做耗时操作)

面试最能拉开差距的两问:

"驳回怎么实现?"
  → ★ Activiti 没有官方自由跳转 API(Flowable/Camunda 才有)
    要说清三种方案的代价:画驳回线(最稳)/ 自定义 Command(有风险)/ 作废重提

"加签怎么实现?"
  → 原生不支持。我们选"转办 + 加签记录表",流程层不动(零脏数据),业务层完整留痕

15 号:MQTT 物联网消息协议

★ 先判断要不要学:

  • ✅ 该学:岗位涉及设备接入(IoT、车联网、智能家居、工业物联网)
  • ❌ 别学:纯后端 CRUD 岗位(学了用不上,性价比低)

最低掌握要求:

① 说出 MQTT 与 HTTP、与 RabbitMQ 的区别 ★(三个对比都要能说)
② 背下 QoS 0/1/2,以及"发布 QoS 与订阅 QoS 取小值"的降级规则
③ 说出保留消息、遗嘱 LWT、会话(CleanSession)三个机制各自解决什么问题
④ 能设计一个设备上下线方案(遗嘱 + retained 状态 + 正常下线主动发 offline)
⑤ 说出"消费端幂等是铁律"的原因(QoS 1 保证至少一次 = 可能重复)

面试最能拉开差距的两问:

"MQTT 和 Kafka/RabbitMQ 什么关系?"
  → ★ 不是替代,是上下游:设备─MQTT─►EMQX─►Kafka─►业务系统
    MQTT 管"连得上"(海量长连接),MQ 管"存得住、算得动"(堆积/削峰)

"设备断电了为什么还显示在线?"
  → 遗嘱没设 / KeepAlive 太长还没超时 / 正常 disconnect() 不触发遗嘱
    解法:设遗嘱 + 合理心跳 + 服务端兜底巡检(查最后上报时间)

掌握程度: 能说清“什么时候该用、什么时候不该用”——这个判断力比背 API 更能拿分。


实战项目推荐清单

按优先级排列,建议至少完成前 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 周 面试冲刺 + 查漏补缺 模拟面试

学习心法

  1. 先跑通再理解:每个技术先跑通一个 Hello World,再回头看原理
  2. 带着项目学:不要干看文档,边学边往你的项目里加
  3. 面试倒逼学习:列出面试高频题,逐个攻克
  4. 源码不是全部:看核心流程的源码即可,不要逐行读
  5. 量化你的学习:每学一个技术,记录“我学到了什么,能解决什么问题”

最后更新:2026-08-17