作者 老王
发布时间
更新时间 2020-08-08 15:50

在面试前,有一句话请记住:

获得高薪的关键:就是高效的准备面试

对于程序员来说,面试内容一般分为两个部分:

编程面试题部分 + 数据库面试题部分。

基于这个原则,我和汽车之家的资深技术专家老张,也是一位有着 10 年工作经验的技术老兵,前前后后大概花了两个多月的时间,改了 6 个版本,最终总结了 200 道左右的 MySQL 面试题,来帮助准备面试的朋友们。

学习 MySQL 有哪些好处?

  1. 对 MySQL 掌握,是一个程序员最基础的素养 对普通程序员来说,日常的工作核心就是对数据库的增删改查,如果数据库都掌握不好,可想而知一定不会有公司要你。

  2. 学好 MySQL 可以快速的理解其他关系型数据库 MySQL 作为最广泛使用的关系型数据库,只要掌握好了 MySQL,再去理解其他(关系型)数据库,就能驾轻就熟快速掌握了,因为它们的设计思想和使用方法基本都是一致的。

  3. 学好 MySQL 可以提高程序的运行效率 在一个系统中,数据库的资源是最昂贵的,同时也是最有可能出现瓶颈的,所以对数据库的优化,可以极大的提高整个系统的运行效率,是一笔非常划算的技术“投资”。

  4. 学好 MySQL 可以帮你获得 Offer 去任何一家公司面试,都离不开对数据库的考察,只有掌握了 MySQL 的技能,才能收获一份令自己满意的 Offer。

  5. 学习 MySQL 面试题是快速全面的掌握 MySQL 的关键 MySQL 的面试题,通常考察的是 MySQL 最核心的知识点,还有很多比较容易搞混的概念。以考促学,把所有的面试知识点串连起来,就能建立对 MySQL 的整体认识,同时也是非常高效的学习 MySQL 的关键手段。

对于技术面试来说,考察的核心内容具备以下两个特征:

  1. 涉及的知识点广,因为不同的公司和不同的面试官技能知识结构是不同的,所以关注的问题和面试内容也是不同的,因而具备面试知识点广的特点;

  2. 考察的知识点深,以阿里巴巴为例(其他大厂也是类似的情况),通常会从一个大的方向切入,然后再层层深入,直到问到你不会为止。比如,你都了解哪些数据库引擎?这个数据库引擎的特点是什么?这个数据库引擎是如何存储数据的?为什么要采用这种存储方式?等等。

所以针对以上两个问题,我和老张结合自己 10 余年的工作和面试的经验,经过深入的讨论和完善,最终制定了这 8 大面试模块,基本囊括了 MySQL 的所有知识点,它包含的内容如下:

  • 第一课时: 通用模块,此部分对 MySQL 整体概念、执行流程、数据库引擎、查询缓存、表空间、回表查询、数据类型间的区别、内存表、临时表、删除表的 n 种方式、枚举、视图、数据恢复等相关知识点对应的面试题进行解答。

  • 第二课时: 索引模块,索引的好坏直接影响数据库的性能,所以索引的面试题也是面试中必问的问题,此部分为索引对应的面试题合集。

  • 第三课时: 事务模块,事务决定了程序的稳定性,在 MySQL 中的地位也是首屈一指,也是面试中必问的面试题,此部分为事务对应的面试题合集。

  • 第四课时: 锁,锁包括:全局锁、表锁、行锁、死锁、乐观锁、悲观锁等,不同的数据库引擎支持的锁支持粒度也是不同的,此部分的面试题,让你彻底搞定锁相关的面试题。

  • 第五课时: 日志,日志看似不起眼,却是 MySQL 主备同步和容灾恢复以及问题排除的关键,当然也是面试中必问的问题,这部分会对不同的数据库引擎中的重点日志,进行详细的介绍。

  • 第六课时: MySQL 操作命令和内置函数,MySQL 的操作命令,对于程序员或者 DBA 来说也是必须具备的一项技能,比如,用户和权限的创建、数据库相关信息的查询等,都离不开对 MySQL 命令行的掌握。对内置函数的掌握程度,代表了你对 MySQL 的掌握程度,善用 MySQL 提供的内置函数,会让你有事半功倍的效果,内置函数也是笔试中必考的面试题。

  • 第七课时: 性能优化和分布式,性能优化和分布式是面试中决定你高度的关键指标,其中性能优化包括了慢查询的分析和处理,对分布式的掌握体现了你的技术深度。

  • 第八课时: 开放性问题,很多大公司最后也会问一下没有标准答案的开放性问题,以考察面试者的技术能力边界和对待问题的分析思路,这部分助你更平稳的获得 offer。

对应的知识图谱如下:

avatar

作者介绍

老王:资深面试官/阿里云社区认证专家 十余年编程从业经验,现上市公司技术研发经理,曾就职于 360,有着丰富的大型系统设计、开发和调优的经验,在不断探索和学习的过程中,积累了宝贵的编程与面试经验。

张建:十余年编程从业经验/现任上市公司项目经理 曾就职新华保险通讯事业部、汽车之家。有着丰富的工业制造系统、呼叫中心、互联网系统设计、开发和调优经验。曾主导设计并参与了汽车之家二手车BU单体应用微服务化改造,有着丰富的微服务架构经验。

你能学到什么?

  • 扎实的 MySQL 基础:MySQL 内部执行流程、查询缓存、数据库引擎、表空间、表收缩、回表查询、删除数据恢复、视图、内存表和临时表的区别等。
  • 索引、事务、内置函数等模块的面试题汇总与解析。
  • 全局锁、表锁、行锁、死锁、乐观锁、悲观锁等面试题汇总与解析。
  • MySQL 中主从部署原理和容灾恢复的面试题和知识点解析。
  • MySQL 慢查询处理以及高性能方面的面试题汇总与解析。
  • MySQL 中开放性问题的汇总与解析。

适宜人群

  • 准备跳槽的后端工程师(初、中、高级)
  • 自学的准备转行的“准程序员”
  • 即将毕业的在校学生

购买须知

  • 本专栏为图文内容,共计 8 个课时;
  • 读者可在评论区向作者提问或交流;
  • 本课程可在 GitChat 服务号、APP 及网页端 gitbook.cn 上购买,一端购买,多端阅读。