【20260328】Java 高级 & 架构岗 面试核心清单

模块一:架构设计能力

1. 请讲一下你主导的架构设计 / 重构项目,整体思路是什么?

参考答案

曾主导过核心业务系统从单体架构向微服务架构演进的项目,整体遵循 4 步设计思路:

  1. 业务域拆分:基于 DDD 领域驱动思想,按业务边界拆分成独立微服务,明确服务职责,解决耦合问题;

  2. 技术选型:选用 SpringCloud Alibaba 生态,Nacos 做注册配置中心、Gateway 网关统一入口、Sentinel 限流熔断,保证高可用;

  3. 数据层设计:核心大表采用分库分表 + 读写分离,搭配 Redis 多级缓存,提升数据读写性能;

  4. 治理体系搭建:完善全链路监控、日志追踪、服务容错、权限安全体系,保证系统稳定、数据安全合规。

    整个架构设计以高可用、可扩展、易维护、数据安全为核心,完全适配 To G 和教育类系统的严苛要求。

踩分点:DDD 拆分、微服务治理、数据架构、安全合规、落地效果。

2. 微服务拆分的原则是什么?如何避免过度拆分?

参考答案

拆分原则:高内聚、低耦合,按业务领域边界拆分,保证单一职责;优先拆分核心高频、变更频繁模块;兼顾团队组织架构(康威定律)。

避免过度拆分:

  1. 不盲目追求粒度细,优先保证服务自治、依赖简单;

  2. 避免分布式事务过多、调用链路过长;

  3. 结合运维成本、硬件资源综合评估,小业务模块可先合并维护。

3. 如何做技术方案评审?如何把控技术风险?

参考答案

技术方案评审我会从 4 个维度把关:

  1. 业务匹配度:方案是否满足业务需求、数据一致性、安全合规要求;

  2. 技术可行性:架构、中间件、存储方案是否合理,有无明显技术短板;

  3. 性能与容量:接口性能、并发支撑、数据量级是否提前评估;

  4. 风险与预案:预判故障点,制定降级、熔断、回滚方案。

    风险把控:提前识别技术债务、第三方依赖风险、分布式一致性风险,关键节点做方案验证与压测,降低上线风险。

模块二:分布式 & 高可用(高频深度提问)

1. 分布式事务有哪些方案?教育 / 政务类核心数据你怎么选?

参考答案

常用方案:2PC、TCC、SATA、Seata AT 模式、消息最终一致性。

针对教育、政务类核心数据(成绩、档案、上报数据),优先选用Seata AT 模式,开发成本低、一致性强;对性能要求高、非强一致场景,采用可靠消息最终一致性,保证数据不丢不重,兼顾性能与一致性。

2. 接口幂等性如何设计?常见实现方式有哪些?

参考答案

幂等性保证同一请求多次执行结果一致,常用方案:

  1. 唯一索引:数据库层防重;

  2. token 机制:请求前获取 token,请求后校验销毁;

  3. 分布式锁:Redis 锁控制同一请求重复执行;

  4. 状态机判断:根据业务状态过滤重复操作。

    在教育数据上报、支付类场景必做幂等设计。

3. 缓存雪崩、击穿、穿透分别是什么?怎么解决?

参考答案

  • 缓存雪崩:大量缓存同时失效,请求打垮 DB。

    解决:过期时间随机、集群高可用、降级熔断、多级缓存。

  • 缓存击穿:热点 key 过期,大量并发请求 DB。

    解决:互斥锁、热点 key 永不过期、预加载。

  • 缓存穿透:查询不存在的数据,绕过缓存直接查 DB。

    解决:缓存空值、布隆过滤器、参数校验拦截。

4. 分布式锁用 Redis 还是 ZooKeeper?选型依据是什么?

参考答案

  • Redis 分布式锁:性能高、实现简单,适合高并发场景,借助 Redlock 保证可靠性;

  • ZooKeeper 分布式锁:一致性强、可靠性更高,性能略低。

    选型:高并发业务选 Redis 锁,对一致性、可靠性要求极高的核心业务选用 ZooKeeper 锁。

模块三:微服务 & 服务治理(必问)

1. SpringCloud Gateway 网关的核心作用是什么?

参考答案

  1. 统一入口:聚合所有微服务接口,简化客户端调用;

  2. 路由转发:根据规则路由到对应服务;

  3. 统一鉴权:登录、权限、黑名单统一拦截;

  4. 限流熔断:Sentinel 整合实现限流、降级、熔断;

  5. 日志与监控:统一记录请求日志,便于全链路追踪。

2. 服务雪崩怎么解决?限流、熔断、降级区别是什么?

参考答案

服务雪崩通过限流 + 熔断 + 降级组合解决:

  • 限流:控制请求流量,超过阈值直接拒绝,保护系统;

  • 熔断:服务异常达到阈值,暂时切断调用,快速失败;

  • 降级:非核心功能暂时关闭或返回默认数据,保障核心可用。

3. 微服务下的全链路监控如何实现?

参考答案

采用SkyWalking/Pinpoint等链路追踪系统,通过 traceId 贯穿整个调用链,实现:请求链路可视化、接口耗时分析、异常定位、服务依赖拓扑,快速排查分布式系统故障。

模块四:数据库 & 存储架构(高频实战问)

1. MySQL 索引失效场景有哪些?如何优化?

参考答案

索引失效常见场景:违反最左前缀原则、索引列运算 / 函数操作、隐式类型转换、like % 前缀、or 导致索引失效等。

优化思路:遵循最左前缀、避免索引列计算、合理设计联合索引、避免隐式转换、用覆盖索引减少回表。

2. 分库分表的场景、方案、难点是什么?

参考答案

场景:单表数据量过大(千万级以上)、查询性能瓶颈。

方案:垂直分库分表(按业务 / 字段拆分)、水平分库分表(按分片键拆分),常用 Sharding-JDBC。

难点:分片键设计、分布式事务、跨分片查询、扩容数据迁移。

3. MySQL 事务隔离级别及锁机制?

参考答案

隔离级别:读未提交、读已提交、可重复读(MySQL 默认)、串行化。

锁机制:表锁、行锁、间隙锁(解决幻读),InnoDB 行锁加锁索引,无索引会退化为表锁。

模块五:线上问题排查 & 性能优化(架构师核心能力)

1. CPU 飙高如何排查?

参考答案

  1. top 定位 CPU 高的 Java 进程 PID;

  2. top -Hp PID 定位高耗 CPU 线程 tid;

  3. jstack 打印线程栈,找到对应代码;

  4. 分析死循环、频繁 GC、复杂计算等问题点并优化。

2. 内存泄漏排查思路?

参考答案

  1. jmap 导出堆 dump 文件;

  2. MAT/JVisualVM 分析 dump,定位泄漏对象;

  3. 查看对象引用链,找到未释放资源的代码;

  4. 优化线程池、连接池、缓存、静态集合等使用方式。

3. 接口响应慢,如何全链路优化?

参考答案

  1. 监控定位慢接口,区分是代码逻辑、DB、缓存还是第三方调用问题;

  2. 优化 SQL 索引、减少联表查询,引入缓存;

  3. 异步化非核心流程,并行执行逻辑;

  4. 扩容服务节点、优化 JVM 参数、升级硬件配置。

模块六:教育 / To G 特色场景题

1. 教育系统多级数据权限(管理员 / 教师 / 学生)如何设计?

参考答案

采用RBAC 权限模型 + 数据权限隔离

  1. 角色绑定菜单接口权限(功能权限);

  2. 通过数据范围字段(机构 ID、班级 ID)控制数据可见范围;

  3. 网关层统一鉴权,业务层拦截数据权限,保证不同角色只能看到自身权限内数据,满足教育系统合规要求。

2. 学生成绩 / 档案数据,如何保证不篡改、可追溯?

参考答案

  1. 数据操作留痕,记录操作人、时间、行为日志;

  2. 核心数据新增后不可修改,采用状态流转控制,错误数据用冲正方式处理;

  3. 敏感数据加密存储,操作权限严格管控,关键操作二次校验。

3. 大批量学生数据导入 / 导出,性能如何优化?

参考答案

  1. 采用分批处理,避免一次性加载大量数据到内存;

  2. 导出用异步线程 + 文件生成,前端轮询 / 通知结果;

  3. 数据库层面关闭自动提交、批量插入,减少 IO 开销;

  4. 超大文件使用 OSS 存储,生成下载链接。

模块七:技术管理 & 职业认知(终面问)

1. 你如何平衡业务迭代速度与技术债务?

参考答案

  1. 核心链路、高风险模块优先重构,避免技术债务堆积;

  2. 非核心模块适度容忍技术债务,保证业务进度;

  3. 预留固定时间做技术优化与重构,建立技术治理机制。

sentinel 2026-03-28
生产环境问题快速排查 2026-03-28