1. 前言
在校招或者社招面试中,无论你是 Java 后端、Cpp 后端、Python 后端,面试官都会详细地考察各种语法细节、框架知识,但是大多数候选人入职之后,都会体会到 "面试造火箭,上班拧螺丝"。面试时我们熟悉各种知识细节,入职后却发现大部分工作都是重复的 CRUD(Create - 增加,Retrieve - 查询,Update - 更新,Delete - 删除),这种现象其实很正常。后端开发的核心职责就是倒腾数据,面临的基础问题例如如何设计数据的存储结构并且选择合适的数据库进行存储,如何在各种限制条件下查询数据。当我们负责的系统非常庞大之后,还会面临如何解决分布式系统的数据一致性这类更复杂的问题。
总结来说,操作数据库是后端程序员的必备技能。数据库按照存储数据结构的方式,可以分为关系型数据库以及非关系型数据库。关系型数据库中数据都是以二维表的形式存储,最常用的数据库有 Oracle、MySQL,非关系型数据库中数据都是以结构化的形式存储,最常用的数据库有 Redis、MongoDB、Hbase 等。目前互联网一二线大厂的校招要求,MySQL 基本是必备技能,非关系性数据库例如 Redis 这类不是必考内容,当然掌握了会是锦上添花。
本小节中会介绍关于 MySQL 常见高频面试题,以及核心回答思路解析。
2. MyISAM 和 InnoDB
面试官提问: 介绍下 InnoDB 和 MyISAM 存储引擎的区别,以及具体的应用场景?
题目解析:
首先要