5 年 Java 开发因仅回答 "加索引、加缓存" 被面试官淘汰。
面试考点:面试官考察 MySQL 调优的实战与原理,而非基础操作。
调优三字诀:先查(开启慢日志、用 EXPLAIN 分析 SQL)、再治(优化索引覆盖、避免函数计算等)、最后省(减少不必要查询、使用缓存)。
总结要点:慢日志 + EXPLAIN 定位问题,覆盖索引 + 最左匹配原则,避免 SELECT*、函数计算、前置 % 模糊查询,排序和 JOIN 列需有索引且字符集一致。
视频提供包含 JVM、Spring、高并发等内容的 Java 面试题库。
分布式事务面试中,仅会使用 Seata 而不懂底层原理的求职者,80% 会被 P8 面试官淘汰。
核心痛点揭示:视频指出分布式事务的核心矛盾是跨服务、跨数据源无法像单机事务那样原子提交,而非简单的 "要么都成功要么都回滚"。
Seata 深度拷问:面试官追问 Seata AT 模式与传统 2PC 的区别、undo 日志作用、空回滚和悬挂问题,暴露求职者仅会调用 API 的问题。
方案拆解:视频详细拆解 5 种分布式事务方案,包括 2PC、TCC、SAGA、本地消息表 + 消息队列、最大努力通知,分析各方案的原理、优缺点及适用场景。
选型逻辑:强调分布式事务的核心是平衡一致性、可用性和性能,大多数互联网场景追求最终一致性即可。
视频最后指出,中级与初级后端的核心差距在于懂原理、会选型、能避坑,这也是大厂面试的必考点。
该问题的核心解法是通过SynchronousQueue的特性绕开队列存储逻辑。
线程池工作原理:视频拆解线程池任务处理四步流程,包括预热核心线程、添加阻塞队列、启用非核心线程、触发拒绝策略。
关键队列特性:SynchronousQueue 不存储任务,提交任务时若核心线程无空闲,直接尝试启用非核心线程,避免任务进入队列。
面试技巧:视频提供该问题的深度分析及回答思路,同时提及配套的学习路线图和高频面试题资源。
视频通过煎饼摊的类比解释 SynchronousQueue 的 "现做现卖" 特性,帮助理解任务不排队的实现逻辑。
代码双写方案在核心系统迁移中存在高风险。
零侵入数据同步:使用 Canal 订阅 MySQL 的 Binlog,结合 DataX 迁移历史数据,实现老系统代码零修改的存量与增量数据并行迁移。
数据校验与补偿:通过对账服务对比新老库数据,发现差异时触发补偿队列自动修正,需确保数据 100% 一致。
灰度切流:按内部测试账号、1% 真实用户、10%、30%、50% 的梯度切流,监控异常时秒切回老系统。
反向同步回滚:新库产生的增量数据通过反向 Canal 实时回写老库,确保流量切回时老库数据最新。
反向同步回滚链路是迁移架构中最关键的兜底机制。
统一权限控制系统的设计需覆盖数据模型、权限颗粒度、后端实现等六个核心维度。
核心数据模型:标准 RBAC 包含用户表、角色表、权限表、用户角色关联表、角色权限关联表 5 张核心表,复杂业务可引入 RBAC1 或 RBAC2。
权限颗粒度:分为菜单级、按钮 / 数据级权限,菜单权限用于前端动态渲染导航,操作权限在后端 API 拦截,数据权限需在 SQL 层面拼接过滤条件。
后端实现:推荐 Spring Security+JWT 方案,用户登录生成 JWT Token,后端通过拦截器解析 Token,从缓存加载权限列表与接口权限码匹配,可使用 @PreAuthorize 注解声明方法权限。
权限缓存与刷新:以用户 ID 为 key 在 Redis 缓存权限列表并设置 TTL,管理员修改权限后主动失效对应缓存,超级管理员可设置跳过权限校验。
前端配合:前端登录后获取菜单权限列表动态生成路由和导航,同时需注意前端仅做体验优化,真正校验需在后端完成。
审计与日志:记录权限交易失败操作及管理员对角色权限的变更记录,便于安全审计。
视频提供了基于 RBAC 模型的统一权限控制系统完整设计方案,可通过 Sa-Token 或 Spring Security 落地。
3 年经验 Java 后端候选人能熟练回答 Redis 缓存问题,但在缓存一致性场景题中卡壳。
场景题内容:用户修改商品名称后刷新页面仍显示旧名称,主包追问并发更新时如何避免旧数据回写、缓存删除失败如何处理。
主包期待答案:更新数据库后删除缓存 + 延迟双删(间隔 500ms 再删一次);缓存删除失败用消息队列重试,失败记录日志人工介入;并发写冲突用 Redis 分布式锁控制同一商品 ID 更新串行化;缓存设置合理过期时间(如 30 分钟),每日跑对账任务比对数据库与缓存数据,差异超阈值告警。
建议方向:建立缓存一致性方案清单,包含更新顺序、并发控制、失败重试、兜底策略;深入学习 Canal 订阅 MySQL binlog、延迟双删代码实现,在测试环境模拟并发更新场景验证方案有效性。
视频指出开发者对缓存一致性方案理解碎片化,缺乏落地细节和兜底思维。