前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BAT 必问的 MySQL 面试题你都会吗?

BAT 必问的 MySQL 面试题你都会吗?

作者头像
业余草
发布2019-05-15 11:29:06
5670
发布2019-05-15 11:29:06
举报
文章被收录于专栏:业余草业余草

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1426265

小程序里的题库越来越丰富了,最近上新了不少 MySQL 面试题。其中有一些面试题不常见,但却是 BAT 必问的面试题。今天我抽一些面试题考考大家!

1、MySQL 中的 latin1 是什么字符集?

这个字符集相信大家都见过,一般在创建数据库的时候会进行设置。它在 Java 中代表的就是 ISO-8859-1。共收录256个字符,是在ASCII 字符集的基础上又扩充了 128 个西欧常用字符(包括德法两国的字母),也可以使用 1 个字节来进行编码。ISO-8859-1 这个字符集在 MySQL 中的别名就是 latin1。

2、为什么我们通常推荐使用 utf8mb4 字符集?

这个很多文章都写过,说使用 utf8 会出问题,比如当我们存储 emoji 表情时,会出现无法存入的问题。但是没有人从原理上来说为什么会丢失。这个我们可以通过 SHOW CHARSET like ‘utf8%’; 命令查看一下 utf8 和 utf8mb4 的区别。

之所以无法存储的原因就是,UTF-8 编码有可能是两个、三个、四个字节。Emoji 表情是 4 个字节,而 Mysql 的 utf8 编码最多 3 个字节,所以数据插不进去。

3、表 xttblog 存在且该表中不存在 name 字段,那么执行 select * from xttblog where name = ‘业余草’ 肯定会报错,请问是在连接器,分析器,优化器,执行器等哪个阶段报错?

这个题是我昨天发在微信群里的一个题,很多人答错。答案是分析器。因为,连接器是负责处理管理连接,权限验证的;分析器是进行词法分析,语法分析的;优化器是进行语句优化,生成执行计划,选择索引的;执行器是真正执行 SQL 语句的,并返回结果集的。所以,回答分析器才是对的。

4、MySQL 5.8 中为什么把查询缓存这一块移除了?

这个查询缓存,这一块估计很多人都没注意到。新版本的 5.8 版本的 MySQL 数据库已经移除了查询缓存这一块的设计。而且在 5.7 版本中也不推荐使用了。移除的原因是,虽然查询缓存有时候能比较快的返回数据,但是维护起来太麻烦了。而且缓存命中率太低了。如果对应的表有 insert、update、delete 等,那么缓存就得失效。如果查询语句中有函数,则放弃查询缓存。因为函数会设计的计算等有太多的不确定性。还有一些函数根本不能缓存,或没必要缓存。比如,select now() 就不能缓存,再比如,select version() 就没必要缓存。综合考虑,MySQL 把它给移除了。

更多关于 MySQL 的面试题,参考我的面试题小程序。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档