Skip to content

全站扩展点地图 ​

本页用于统一梳理各技术栏目必须掌握的“扩展点”。这里的扩展点不是简单列名词,而是指:

一个技术在真实项目中,允许你改变默认行为、接入业务能力、增强可观测性、处理故障、提升可维护性的关键入口。

学习一个技术不能只学“怎么用”,还要学:

  1. 默认行为是什么。
  2. 为什么默认行为这样设计。
  3. 扩展点在哪里。
  4. 扩展后会影响哪条执行链路。
  5. 如果不用扩展点硬写业务代码,会带来什么问题。
  6. 面试怎么从标准答案跳到原理页。

学习路线 ​

mermaid
flowchart TD
    A["先学默认链路"] --> B["再学原理"]
    B --> C["找到扩展点"]
    C --> D["写最小 Demo"]
    D --> E["放到商业场景"]
    E --> F["总结面试回答"]

Java SE ​

方向必补扩展点面试追问方向原理页
集合自定义排序、HashMap 扩容、ConcurrentHashMap 分段到 CAS为什么 HashMap 线程不安全,JDK7/8 扩容区别集合框架
泛型类型擦除、通配符、泛型方法为什么运行时拿不到泛型真实类型泛型
注解反射自定义注解、反射创建对象、Method 调用Spring 为什么能按注解装配反射
IO/NIOCharset、Buffer、Channel、Selector、零拷贝BIO/NIO/AIO 区别,Selector 为什么能多路复用IO与NIO
并发ThreadLocal、AQS、Lock、CAS、volatile可见性、原子性、有序性怎么保证多线程
线程池ThreadFactory、RejectedExecutionHandler、BlockingQueue核心参数、执行流程、拒绝策略、线程池 OOM线程池
JVM类加载器、自定义 ClassLoader、GC 参数、JFR、jstackOOM 怎么排查,类加载双亲委派为什么存在JVM组成

Spring ​

方向必补扩展点面试追问方向原理页
IOCBeanDefinition、BeanFactory、ApplicationContextIOC 是不是 Map,BeanDefinition 有什么用Spring IOC
生命周期Aware、InitializingBean、DisposableBeanBean 创建过程有哪些步骤Bean生命周期
容器扩展BeanFactoryPostProcessor、BeanPostProcessor、FactoryBean二者区别,AOP 代理怎么创建Spring核心扩展点
配置导入ImportSelector、DeferredImportSelector、RegistrarBoot 自动配置为什么能导入配置类Spring核心扩展点
AOPAdvisor、Pointcut、MethodInterceptorJDK/CGLIB 区别,自调用为什么失效Spring AOP
事务TransactionManager、传播行为、rollbackFor事务失效有哪些原因Spring事务
事件ApplicationEventPublisher、@EventListenerSpring 事件能否替代 MQSpring核心扩展点

Spring Boot ​

方向必补扩展点面试追问方向原理页
自动配置AutoConfigurationImportSelector、条件注解自动配置为什么不是魔法自动配置原理
Starterautoconfigure、Properties、importsStarter 和自动配置关系Starter机制
启动扩展EnvironmentPostProcessor、Initializer、Runner配置解密和缓存预热放哪里Spring Boot扩展点
Web 扩展Filter、Interceptor、ArgumentResolver、MessageConverterFilter 和 Interceptor 区别Spring Boot扩展点
配置绑定ConfigurationProperties、Profile、PropertySource@Value 和配置属性类怎么选配置体系
监控HealthIndicator、MeterRegistry、Endpoint生产健康检查怎么做Actuator监控
失败诊断FailureAnalyzerStarter 报错怎么让接入方看懂Spring Boot扩展点

Spring Cloud ​

方向必补扩展点面试追问方向原理页
注册发现ServiceRegistry、DiscoveryClient注册中心挂了还能不能调Nacos
负载均衡ServiceInstanceListSupplier、LoadBalancerRibbon 和 LoadBalancer 区别负载均衡
FeignContract、Encoder、Decoder、RequestInterceptor、ErrorDecoderFeign 为什么像本地调用但不是本地调用Feign
GatewayRoutePredicateFactory、GatewayFilterFactory、GlobalFilterGateway 和 Nginx 区别Gateway
熔断限流Sentinel 规则、BlockHandler、Fallback限流、熔断、降级区别Sentinel
配置中心Nacos Config、RefreshScope、Bus动态刷新怎么生效配置中心
链路追踪TraceId、Span、采样、上下文传播日志和链路怎么串起来可观测性

Spring Security ​

方向必补扩展点面试追问方向原理页
过滤器链SecurityFilterChain、OncePerRequestFilter认证请求经过哪些过滤器Spring Security
认证AuthenticationProvider、UserDetailsService登录认证怎么扩展数据库用户Spring Security
授权AuthorizationManager、AccessDecisionRBAC 权限怎么落地Spring Security
JWTToken 生成、解析、刷新、黑名单JWT 无状态怎么退出登录Spring Security
OAuth2Client、Resource Server、Authorization Server授权码模式为什么安全Spring Security

ORM ​

方向必补扩展点面试追问方向原理页
MyBatisExecutor、StatementHandler、ParameterHandler、ResultSetHandlerMyBatis 插件为什么能拦截执行链MyBatis插件
MapperMapperProxy、SqlSession、MappedStatementMapper 接口为什么不用实现类MyBatis核心
缓存一级缓存、二级缓存、自定义 CacheMyBatis 缓存什么时候失效MyBatis缓存
MyBatis-PlusWrapper、MetaObjectHandler、Interceptor自动填充和分页插件怎么工作MyBatis-Plus
JPARepository、EntityManager、SpecificationN+1 问题怎么解决Spring Data JPA

MySQL ​

方向必补扩展点面试追问方向原理页
索引联合索引、覆盖索引、索引下推为什么最左前缀,为什么索引失效索引
执行计划EXPLAIN、type、key、rows、Extra慢 SQL 怎么定位EXPLAIN
事务隔离级别、MVCC、undo log可重复读怎么实现事务
锁行锁、间隙锁、next-key lock为什么 update 会锁范围锁机制
日志redo、undo、binlog两阶段提交解决什么redo log与binlog
高可用主从复制、读写分离、分库分表主从延迟怎么办MySQL

Redis ​

方向必补扩展点面试追问方向原理页
数据结构String、Hash、List、Set、ZSet、BitmapZSet 为什么适合排行榜Redis基础
缓存治理布隆过滤器、互斥锁、逻辑过期穿透、击穿、雪崩区别缓存问题
分布式锁Lua、Redisson、看门狗、Redlock锁为什么还要幂等分布式锁
锁扩展公平锁、读写锁、信号量、Fencing Token红锁能否保证绝对安全锁扩展点
高可用主从、哨兵、Cluster、脑裂哨兵和 Cluster 区别主从哨兵集群
排查big key、hot key、慢查询、内存淘汰Redis CPU 高怎么查Redis面试

消息队列 ​

方向必补扩展点面试追问方向原理页
MQ 总览ACK、重试、死信、延迟、幂等MQ 如何保证不丢不重消息队列
KafkaProducer 拦截器、分区器、ConsumerRebalanceListenerKafka 为什么吞吐高,offset 怎么提交Kafka
RocketMQ事务消息、顺序消息、延迟消息、死信半消息和事务回查怎么工作RocketMQ
RabbitMQExchange、Queue、Binding、DLX、TTL消息确认和死信队列怎么用RabbitMQ
可靠性本地消息表、Outbox、幂等消费发送成功但本地事务失败怎么办可靠消息

分布式 ​

方向必补扩展点面试追问方向原理页
理论CAP、BASE、一致性模型CAP 是三选二吗CAP与BASE
ZooKeeperznode、Watcher、Session、ZAB、Curator RecipesZK 为什么能做注册中心、锁和选主ZooKeeper
DubboFilter、LoadBalance、Router、Protocol、Serialization、Cluster、SPIDubbo 一次调用怎么走,SPI 为什么重要Dubbo
幂等唯一约束、Token、状态机、去重表重复请求怎么处理幂等设计
事务XA、TCC、Saga、可靠消息、SeataJTA 是不是分布式事务分布式事务
缓存一致性Cache Aside、延迟双删、消息补偿数据库和缓存不一致怎么办缓存一致性
限流熔断令牌桶、漏桶、熔断器、隔离为什么只重试会雪崩限流
锁Redis、ZK、etcd、DB、MQ 顺序消费分布式锁怎么选锁扩展点

Elasticsearch ​

方向必补扩展点面试追问方向原理页
Mapping字段类型、keyword/text、dynamic templateMapping 为什么不能随便改ES
Analyzerchar filter、tokenizer、token filter分词器怎么影响搜索结果ES分词
查询bool、filter、must、should、function_scorequery 和 filter 区别ES查询
写入refresh、translog、segment、merge写入后为什么不能立刻搜到ES
搜索倒排索引、BM25、分页、排序深分页为什么慢ES业务场景
运维shard、replica、alias、template、ILMES 集群 yellow/red 怎么排查ES集群

定时任务 ​

方向必补扩展点面试追问方向原理页
Spring Scheduledcron、线程池、分布式重复执行多实例为什么会重复跑Spring Scheduled
XXL-JOB调度中心、执行器、路由策略、分片广播XXL-JOB 如何避免重复执行XXL-JOB
QuartzJob、Trigger、JobStore、MisfireQuartz 和 XXL-JOB 怎么选定时任务
可靠性幂等、超时、失败重试、补偿任务执行一半失败怎么办定时任务

Netty ​

方向必补扩展点面试追问方向原理页
ReactorBoss、Worker、EventLoopNetty 为什么高性能Netty
PipelineChannelHandler、Inbound、Outbound入站出站事件怎么流转Netty
编解码Decoder、Encoder、粘包拆包TCP 为什么会粘包Netty
ByteBuf池化、引用计数、零拷贝内存泄漏怎么排查Netty
心跳IdleStateHandler、重连长连接怎么保活Netty

信息安全 ​

方向必补扩展点面试追问方向原理页
加密对称、非对称、混合加密HTTPS 为什么用混合加密加密基础
哈希MD5、SHA、盐、慢哈希密码为什么不能明文或直接 MD5信息安全
签名HMAC、RSA 签名、防篡改接口签名怎么防重放信息安全
TLS证书、CA、握手、会话密钥浏览器如何信任证书信息安全
数据保护脱敏、密钥管理、最小权限医疗数据怎么保护隐私信息安全

DevOps ​

方向必补扩展点面试追问方向原理页
DockerDockerfile、镜像层、Volume、Network镜像为什么要分层Docker
Nginx反向代理、负载均衡、限流、HTTPSNginx 和 Gateway 区别Nginx
JenkinsPipeline、凭据、制品、回滚CI/CD 怎么保证安全Jenkins
K8sPod、Deployment、Service、Ingress、探针一次部署在 K8s 里怎么走K8s
可观测性日志、指标、链路、告警线上慢怎么定位DevOps

工作流 ​

方向必补扩展点面试追问方向原理页
BPMN流程定义、实例、任务、网关流程定义和流程实例区别工作流
审批驳回、撤回、转办、会签审批流怎么建模流程设计
业务集成业务表、流程表、状态同步业务状态和流程状态怎么一致工作流
排查流程卡住、变量错误、版本问题为什么任务查不到任务API

Python ​

方向必补扩展点面试追问方向原理页
语言基础装饰器、上下文管理器、迭代器、生成器装饰器为什么能增强函数Python
类型typing、Protocol、dataclassPython 动态语言为什么还要类型标注Python
并发threading、multiprocessing、asyncioGIL 是什么,asyncio 为什么不是多线程Python
WebFastAPI 依赖注入、中间件、异常处理FastAPI 为什么性能高Python
数据pandas、SQLAlchemy、连接池大文件怎么处理不 OOMPython
AI 开发LangChain、向量库、工具调用RAG 链路怎么做AI

AI ​

方向必补扩展点面试追问方向原理页
Prompt系统提示、Few-shot、模板变量为什么同样模型效果不同AI
RAGChunk、Embedding、VectorStore、RerankRAG 为什么能减少幻觉AI
AgentTool Calling、Planning、MemoryAgent 和普通聊天区别AI
评估离线评估、线上反馈、命中率AI 应用怎么证明效果好AI
安全Prompt Injection、权限、脱敏大模型为什么不能直接连生产库AI
Spring AIChatClient、Advisor、Tool、VectorStoreJava 项目怎么接入大模型Spring AI

Go ​

方向必补扩展点面试追问方向原理页
基础slice、map、interface、deferslice 扩容和 map 并发安全吗Go
并发goroutine、channel、select、contextchannel 关闭和超时怎么处理Go
调度GMP、抢占、网络轮询器goroutine 为什么轻量Go
工程module、testing、pprof、日志Go 服务 CPU 高怎么查Go
Webmiddleware、context、error handlingGo Web 中间件怎么设计Go

面试页统一要求 ​

每个面试页都要保持这种模式:

mermaid
flowchart TD
    A["面试标准回答"] --> B["常见追问"]
    B --> C["跳转知识点原理"]
    C --> D["流程图和 Demo"]
    D --> E["商业场景和排查"]

面试页不应该堆长篇原理。正确结构是:

区域内容
标准回答1 到 2 段能直接说出口的话
追问点面试官继续问时怎么展开
项目话术在医疗采集、订单、支付、库存、搜索、批处理等场景怎么落地
知识点跳转跳到详细原理页,不让面试页变成大杂烩

本章小结 ​

后续补文档时,不再只补“是什么”。每个技术栏目都要围绕默认链路、扩展点、原理、Demo、商业场景、排查和面试追问建立闭环。Spring Boot 自动配置、Spring 容器扩展点、Redis 锁扩展点只是第一批样板,其他栏目也要按这个标准继续补齐。