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 锁扩展点只是第一批样板,其他栏目也要按这个标准继续补齐。