Java面试的数据库环节,是最容易看出一个人是“背八股”还是“真做过”的地方。之前那一篇把基础概念过了一遍,这一篇直接上硬货:事务隔离级别和MVCC、索引失效的底层逻辑、死锁怎么快速定位、主从复制和主库不可用怎么应急,以及数据量上来之后的分库分表和这两年面试越来越爱问的国产数据库适配。每块我都会从原理讲到实操,尽量把面试官追问的那层窗户纸捅破。
如果你正在准备Java后端岗位面试,或者已经在工作中要处理数据库锁冲突、主从切换这些事,这篇文章应该能帮你省不少时间。我不会再贴一遍增删改查那类基础内容,重点放在那些能拉开差距、又容易一句话答错的核心机制上。能上手验证的,我都会给出操作路径,你最好自己开个测试库跑一遍,印象会比干背深得多。后面死锁那段请一定实操一次,光看图文的记忆和真实跑完一次的经验,完全不是一个量级。
1. 事务隔离级别与MVCC:面试官最爱的三连问
1.1 四种隔离级别到底在隔离什么
面试问到事务,十有八九会从并发问题切入:脏读、不可重复读、幻读。这三个问题说的是同一件事