专栏
下载APP
MySQL 开发高频面试题精选
梳理开发者的 MySQL 面试知识图谱
门牙没了 · 一线大厂数据架构师

共计25节 · 已更新17节

119人已订阅

课程亮点

  • 面向开发人员,紧扣程序开发方向
  • 聚焦面试场景,精选高频面试题目
  • 经典深度解答,原理/解决方案兼顾
  • 难点突破:事务和锁/监控指标/存储引擎…

课程简介

这些年,随着IT和互联网产业的逐渐成熟,对于开发者的技术要求越来越高,求职竞争也不断加剧。
当遇到晋升机会或者竞争高级岗位的offer时,如何在众多的竞争者中脱颖而出?深入学习数据库知识是一个非常好的方向。
MySQL作为一个发展完善的数据库系统, 是大多数开发工作中无法绕开的一个关键环节。不过,很多人对MySQL,也仅仅是学了CRUD,并没有深入了解,这可能导致:
①面试被问及高级数据库知识时,磕磕巴巴难以作答;
②日常工作中,遇到数据库层面的状况找不出原因所在。

在这个课程里,我结合自己多年来和程序员打交道的经历,梳理出了 一系列面向开发者的MySQL工作中常见问题和高频面试题目 ,并结合原理与操作层面进行了深度解析。这样,可以帮助你在获得面试技巧的同时,还可以学到实际工作中真正有用的MySQL知识技能,面对开发更游刃有余。
希望本课程能给你带来技巧与技能的双收获,助你斩获心仪offer,赢得高薪工作。

讲师简介

门牙没了,中国科学院大学(原中科院研究生院)硕士研究生,现任新加坡某大型互联网公司DBA资深专家,曾就职于新浪彩票带DBA团队。10年的关系型数据库开发与管理经验,擅长互联网行业MySQL数据库的性能调优与架构设计。曾创业从事MySQL相关技术培训,拥有丰富的讲师经验。目前仍活跃于国内数据库圈子,多次在数据库峰会发表文章及演讲。

专栏模块

本专栏以程序员的实际工作和面试场景作为出发点,重点解读工作和面试中和程序开发相关的MySQL技术:

  1. SQL与索引部分。重点讲解面试与实际开发中面临的一些高频问题,涵盖MySQL中的这些知识模块:数据类型、SQL语法、SQL优化、索引设计等。
  2. 事务和锁部分。本章节由一个转账的场景出发,剖析事务的本质,事务隔离级别的作用,以及InnoDB中的行锁与间隙锁的设计,和与行锁相关的死锁的解决方案。
  3. MySQL进阶部分。深入浅出地讲述程序员在面试与开发中遇到的MySQL核心知识,涵盖MySQL监控指标、MySQL存储引擎、分区表、故障诊断、元数据信息库等技能点。
查看全部
专栏目录
目录
适合人群
  • 一线开发工程师
  • 初级 MySQL DBA
  • 对 MySQL 技术有浓厚兴趣的同学
购买须知
  1. 本专栏为图文形式内容服务,共计 25 小节,上线时间为 2020 年 9 月 22 日,预计 2020 年 11 月 14 日更新完成;
  2. 本专栏更新时间为周二、周四更新 1 篇(法定节假日顺延),形式为图文;
  3. 订阅成功后,用户即可通过慕课网 PC 端、App 端、WAP 端享有永久阅读的权限;
  4. 慕课专栏为虚拟内容服务,订阅成功后概不退款;
  5. 在专栏阅读过程中,如有任何问题,请邮件联系 kf@imooc.com;
  6. 慕课专栏版权归本平台所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布 / 发表,违者将依法追究责任。
0 / 2
登录后可任选 2 个小节免费阅读
Kyrie啊

醍醐灌顶,面试官特别喜欢问int(20)跟bigint的区别,这里总算知道20只是显示宽度了

2020-09-30
2
翻了身的咸鱼

66666

2020-10-13
3
hwl_01

create table varchar_test3(id int auto_increment, col_2 varchar(21842), primary key(id))charset=utf8 engine=innodb; 老师,一行所有的列长度加起来不能超过21844,col_2已经占了21842,也就是说只留下2 * 3 = 6个字节的空间可用了,int占4个字节,还有2个字节?我的理解正确吗,期待解答,谢谢!

讲师回复:抱歉是我记错了,你的理解是正确的。 MySQL中的最大行长度是65535,包含所有类型的列。其中BLOB和TEXT由于会发生行溢出,会占用大概9-12个字节。 这里是官方文档供你参考:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html#row-size-limits
2020-09-22
3
hwl_01

老师 如果按照上面的理解 那下面的情况 create table varchar_test_v1 ( col_1 varchar(21842), col_2 smallint, col_3 smallint ) charset = utf8 engine = innodb; create table varchar_test_v2 ( id int auto_increment, col_1 varchar(21842), col_2 smallint, primary key (id) ) charset = utf8 engine = innodb; 应该只有v1能创建成功,现实情况是v2也能成功,我就懵逼了。

讲师回复:在一个表中,varchar的长度限制和其他数据类型没有关系,因此你添加整型字段是可以成功的。
2020-09-22
0
hwl_01

哈哈 问题来了,为什么UTF8报最大长度21845却创建不成功,有开销21844可以理解, 而utf8mb4最大长度16383就可以,难道utf8mb4就没有开销了吗? mysql> create table varchar_test_v3(col_1 varchar(65535))charset=UTF8MB4 engine=innodb; ERROR 1074 (42000): Column length too big for column 'col_1' (max = 16383); use BLOB or TEXT instead mysql> create table varchar_test_v3(col_1 varchar(16383))charset=UTF8MB4 engine=innodb; Query OK, 0 rows affected (0.08 sec)

讲师回复:都是有额外开销的。这个建议不要只看官方给的error code,还是要以自己的计算为准:65535-16383*4=3,满足存储需求,所以可以创建成功。
2020-09-22
0
— 造烛求明,读书求理 —
¥48.00
立即购买