以下面试题,基于网络整理,和自己编辑。具体参考的文章,会在文末给出所有的链接。
如果胖友有自己的疑问,欢迎在星球提问,我们一起整理吊吊的 MySQL 面试题的大保健。
而题目的难度,艿艿尽量按照从容易到困难的顺序,逐步下去。
另外,MySQL 涉及的内容非常非常非常多,所以面试题也容易写的杂乱。当年,我们记着几个一定要掌握的重心:
重点的题目,艿艿已经在标题前,添加了【重点】前缀。
索引。
锁。
事务和隔离级别。
因为 MySQL 还会有部分内容和运维相关度比较高,所以本文我们分成两部分【开发】【运维】两部分。
对于【开发】部分,我们需要掌握。
对于【运维】部分,更多考验开发的知识储备情况,当然能回答出来是比较好的,特别是对于高级开发工程师、架构师等。
开发
为什么互联网公司一般选择 MySQL 而不是 Oracle?
免费、流行、够用。
? 当然,这个回答要稍微润色下。不过一般,很少问这个问题了。
数据库的三范式是什么?什么是反模式?
艿艿:重点在于反模式的回答。实际开发中,不会严格遵守三范式。
胖友直接看 《服务端指南 数据存储篇 | MySQL(07) 范式与反模式》 。
MySQL 有哪些数据类型?
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。具体可以看看 《MySQL 数据类型》 文档。
正确的使用数据类型,对数据库的优化是非常重要的。
? MySQL 中 varchar 与 char 的区别?varchar(50) 中的 50 代表的涵义?
1、varchar 与 char 的区别,char 是一种固定长度的类型,varchar 则是一种可变长度的类型。
2、varchar(50) 中 50 的涵义最多存放 50 个字符。varchar(50) 和 (200) 存储 hello 所占空间一样,但后者在排序时会消耗更多内存,因为
ORDER BY col采用 fixed_length 计算 col 长度(memory引擎也一样)。所以,实际场景下,选择合适的 varchar 长度还是有必要的。
? int(11) 中的 11 代表什么涵义?
int(11) 中的 11 ,不影响字段存储的范围,只影响展示效果。具体可以看看 《MySQL 中 int 长度的意义》 文章。
? 金额(金钱)相关的数据,选择什么数据类型?
方式一,使用 int 或者 bigint 类型。如果需要存储到分的维度,需要 *100 进行放大。
方式二,使用 decimal 类型,避免精度丢失。如果使用 Java 语言时,需要使用 BigDecimal 进行对应。
? 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 MySQL 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15?






还没有评论,来说两句吧...