简单题,校招和社招都喜欢问。
在这个问题下,你要装逼最好的方式就是提起自己用乐观锁优化过 SQL,也可以说用乐观锁来解决过死锁的问题。
略难的题。难度源自两方面,一个是三个概念本身其实在实践中很少用得上,容易混淆并且还有一个垃圾译名临键锁;另外一方面是这三者的加锁时机真的一时半会讲不清楚。
这里有一个值得在面试中提起的点,就是 MYSQL 记住临键锁在可重复读这个隔离级别下解决了幻读的问题。除此以外,我认为这个题目的性价比比较低,所以你只需要回答出来它们三个的基本定义,而具体地什么时候加什么锁,你有闲情逸致的时候再慢慢学习。
简单的题,高频的题。一般这个问题会作为深入考察锁机制的开场白。正如之前你看到的大部分宽泛的问题,你在回答的时候,要点在于尽可能说出关键字,而后等待面试官追问。
你刷亮点落在:提及索引与表锁的问题,提及乐观锁以及已提交读下使用更少的锁。当然这也是一种引导,而后你就可以深入讨论这几个问题,打出组合拳。
简单题。大部分公司只要是稍微上了点规模,都会考虑引入数据库主从集群,而后在业务查询的时候,就执行读写分离了。
要想在这个问题下刷好亮点,有两个点:一个是讨论主从延迟;而另外一个思路则是需要讨论如何强制走主库、强制走从库的问题。
送分题。
不过这个问题有一个暗含的点:面试官想要知道的就是,为什么在有了唯一索引的情况下,还要引入主键的概念。或者换一句话来说,用唯一索引来做主键是否可以?
这是一个典型的陷阱式问法。因为在常规思维里面,我们都是认为索引是好的。那么有些面试官就不按套路出牌,会反问你索引的缺陷。因此索引是不是越多越好,本质上就是考察索引的开销和缺陷。
如果你平时没有想过,那么面试官问出来就很容易卡住。实际上这个问题并不难,但是可能的情况比较多,因此你在回答的时候,不一定能够把面试官想要你回答的所有的点都回答出来。但是并不要紧,你只需要答出三五个点就差不多了,足以证明你对这个问题有比较深刻的理解。
而后在平时注意收集一些索引失效的案例就可以了,尽量在回答的时候用上,就非常完美。
简答题,校招和初中级岗位面试中常见。
要在这个问题之下回答出色,那么可以考虑延伸到使用覆盖索引来优化慢查询的案例。
这是一个理论与实践相结合的问题。大部分人在面试的时候犯的错就是仅仅从理论上分析了如何选择索引的列,而忽略了提及实践的案例。并且,通过引入不同的案例,还能进一步引导面试官。
此外,你还要注意一点,有些面试官会现场给你表结构定义、核心查询,而后要求你设计索引,这种题目你一样可以参考本问题的答案思路来设计。
基础题。索引下推这个名词很容易让你摸不着头脑,因此如果你要是没接触过,就难以从字面上理解这是一个什么东西。