最左匹配原则也算是一个面试的热点。最左匹配原则的回答要点就在于讲清楚它的具体匹配原则,最好是能够结合具体的案例。因此这个问题又可以结合如何选择索引列里面的相关内容来回答。
这也是一个高频面试题目。回答这个问题的误区是无脑背 B+ 树的特点,而没有针对索引这种场景进行分析。并且,如果要想刷出亮点,就不能将话题局限在 B+ 树上,而是要进一步考虑其它的数据结构,并且在面试高端岗位的时候能给出非常具体的例子。
基础高频题。基本上在讨论数据库或者数据库事务的时候,大概率会问这个问题。
你在回答的时候,一方面要回答出来隔离级别的基本定义,一方面也要回答出来不同隔离级别可能引发的问题。而后你有几个选择:一个选择是将话题引导到 MySQL 实现隔离级别的底层机制上;一个选择是将话题延伸到快照读上;最后一个选择是进一步讨论分布式事务中的隔离级别问题。
基础题。基本上在讨论数据库或者数据库事务的时候,大概率会问这个问题。但是如果你只能回答出 ACID 的基本定义,那么你是没有办法赢得竞争优势的。
略难的题,高频面试题。难点主要在于 MVCC 本身内容很多,很难全部记住,而且从 MVCC 衍生出来的内容也太多,问法多样,初学者很容易栽在这里。
这个问题一般是深入面 MVCC 的开场白,所以你在回答的时候只需要把关键点点出来,留下引导就可以了,具体细节可以等面试官追问的时候再说。
简单的题,高频的题。一般这个问题会作为深入考察锁机制的开场白。正如之前你看到的大部分宽泛的问题,你在回答的时候,要点在于尽可能说出关键字,而后等待面试官追问。
你刷亮点落在:提及索引与表锁的问题,提及乐观锁以及已提交读下使用更少的锁。当然这也是一种引导,而后你就可以深入讨论这几个问题,打出组合拳。
简答题,校招和初级岗位面试中常见。
简答题,校招和初中级岗位面试中常见。
要在这个问题之下回答出色,那么可以考虑延伸到使用覆盖索引来优化慢查询的案例。
在这个话题下,最好的引导点就是谈及自己使用过类似 Canal 之类的工具,和 binlog 打过交道。例如说最想的就是说自己使用了 Canal 来解决 Redis 和 MySQL 中缓存不一致的问题。此外,如果你对其余中间件还有一个比较深刻的理解,那么你就要进一步延伸到这些中间件中类似的机制上。
在面试中,最好的方式就是结合自己的实践,谈及在某个项目中使用了 EXPLAIN 命令来排查 SQL 慢查询问题。而后要注意,在使用这种案例的时候,一定要详细描述 EXPLAIN 命令的输出和对应的解读。一方面是可以水时长,一方面也是确保有足够的细节以取信面试官。