前言

众所周知,简历上“了解=听过名字;熟悉=知道是啥;熟练=用过;精通=做过东西”。

相信大家对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。索引作为MySQL中比较重点的知识,在面试中出现的频率特别高。

本人自认为对MySQL的索引知识相当了解,同事们工作中也都热情的称呼我为大佬。为了进阿里,我特地花了1个月左右时间复习相关知识,自信满满的在简历上写了“精通MySQL”,想不到被阿里面试官狠狠虐了一把…

前半段和面试官相谈甚欢,聊着聊着我提到我们业务量比较大,每天大概有几百万的新数据生成,面试官来了兴趣.........

面试官:你们每天这么大的数据量,都是保存在关系型数据库中吗?

我:是的,我们线上使用的是MySQL数据库。

面试官:那你们有没有对查询做一些优化呢?

我:我们用了索引。

阿里面试题

(由于篇幅问题,接下来的内容我只列出了阿里面试官的问题,自己能答上来的大概只有一半)

  • 你能说说为什么B+树相对于B树在查询上会更加优胜吗?

  • 除了上面这个范围查询的,你还能说出其他的一些区别吗?

  • 刚刚我们聊到B+ Tree,那你知道B+Tree的叶子节点都可以存哪些东西吗?

  • 聚簇索引和非聚簇索引,在查询数据的时候有区别吗?

  • 刚刚你提到主键索引查询只会查一次,而非主键索引需要回表查询多次。是所有情况都是这样的吗?非主键索引一定会查询多次吗?

联合索引、最左前缀匹配

  • 你们在创建索引的时候都会考虑哪些因素呢?你们有用过联合索引吗?

  • 那你们在创建联合索引的时候,需要做联合索引多个字段之间顺序你们是如何选择的呢?

索引下推、查询优化

  • 你知道在MySQL 5.6中,对索引做了哪些优化吗?

  • 你们创建的那么多索引,到底有没有生效,或者说你们的SQL语句有没有使用索引查询你们有统计过吗?

  • 那排查的时候,有什么手段可以知道有没有走索引查询呢?

  • 那什么情况下会发生明明创建了索引,但是执行的时候并没有通过索引呢?

  • 哦,索引有关的知识我们暂时就问这么多吧。你们线上数据的事务隔离级别是什么呀?

对于程序员来说,去任何一家公司面试,数据库是避不开的。开发人员对MySQL掌握的越深入,你能做的事情就越多。

MySQL查询过程

完成业务功能,要懂基本的Sql语句。

做性能优化,要懂索引,懂引擎。

做分库分表,要懂主从,懂读写分离。

做安全,要懂权限,懂备份,懂日志。

做云数据库,要懂源码,懂瓶颈。

在这次被阿里面试官虐了一遍之后,我就开始疯狂的去搜集面经了,发现原来那些阿里、百度、字节这些大厂其实都是开卷考试。。

蚂蚁金服,Java高级

  1. mysql 数据库中,什么情况下设置了索引但无法使用?

  2. mysql 优化会不会,mycat 分库,垂直分库,水平分库?

  3. mysql 的存储引擎了解过没有?

菜鸟网络,Java中级(消息队列、Springcloud、jvm、spring、数据结构、数据库、线程池)

金九银十全套面试资料

  • 百度面试篇

  • 腾讯面试篇

  • 京东面试篇

  • 头条面试篇

  • 美团面试篇

  • 阿里蚂蚁金服面试篇

  • 阿里菜鸟网络面试篇

  • 互联网公司高频面试必备综合篇

  • 并发编程面试题汇总

  • JVM面试题汇总

  • Netty常被问到的那些面试题汇总

  • Tomcat面试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

  • Kafka面试题汇总

  • Redis常见面试题汇总

  • Dubbo面试题

  • SpringBoot,SpringCloud面试汇总

  • 集合框架面试题

  • 设计模式面试题

  • 数据库面试题

  • 面试必备之乐观锁与悲观锁

  • 多家互联网公司常见面试题库

  • Java高频核心面试题库​

写在最后

上述面经有需要的朋友可以点赞此文后添加助手vx:bjmsb10;免费获取

本以为自己 MySQL 够牛逼了,直到亲自去阿里受虐了一次!的更多相关文章

  1. .Net免费公开课视频+资料+源码+经典牛逼 汇总篇【持续更新】

    博主推荐一:WP8.1最经典培训教程 博主点评:经典Windows Phone8.1 Runtime API培训最经典教程,此教程由传智播客蒋坤老师录制的一整套WP8.1入门级视频教程,讲授内容非常广 ...

  2. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  3. douban_转自熊博网——牛逼顿

    转自熊博网——牛逼顿 来自: 天云之叶(大道易得,小术难求) 2010-04-21 18:32:27 牛逼顿 作者:singularitys 3月28号是牛顿的忌日,但是知道的人很少,我们毕竟更关心沈 ...

  4. PHP7有没有你们说的那么牛逼

    男人不能快,但程序一定要快.PHP7到底快不快,我们拭目以待. PHP7来一发 PHP7正式发布到现在已经一年半了,刚出道就号称比旧版本快了几倍,各种开源框架或系统运行在PHP7上速度效率提高了几倍, ...

  5. 推荐一个 Java 里面比较牛逼的公众号!

    今天给大家推荐一个牛逼的纯 Java 技术公众号:Java技术栈,作者:栈长. Java程序员.Java爱好者扫码关注吧! 确实牛逼,几十万人关注了,原创文章350+,好友都 3000+ 关注了. 栈 ...

  6. SQL才是世界上最牛逼的语言!

    身处互联网行业,SQL 可能是你需要掌握的核心技能之一. 最早的时候,SQL 作为一门查询数据库的语言,是程序员的必备技能,运维.开发.Web 以及数据等从业人员都需要用到 SQL,毕竟只有查询到正确 ...

  7. 【转载】可能是世界上最牛逼的网站统计程序——Matomo

    大家做网站的时候一般都会使用网站统计程序.通常,国内网站会使用百度统计.CNZZ等,而国外网站则会使用Google Analytics等统计.国内的统计程序普遍功能不太丰富,且响应速度一般.Googl ...

  8. 不推荐别的了,IDEA 自带的数据库工具就很牛逼!

    MySQL 等数据库客户端软件市面上非常多了,别的栈长就不介绍了, 其实 IntelliJ IDEA 自带的数据库工具就很牛逼,不信你继续往下看. 本文以 IntelliJ IDEA/ Mac 版本作 ...

  9. 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?

    为什么我认为SAP是世界上最好用最牛逼的ERP系统,没有之一?玩过QAD.Tiptop.用友等产品,深深觉得SAP是贵的有道理! 一套好的ERP系统,不仅能够最大程度承接适配企业的管理和业务流程,在技 ...

随机推荐

  1. ES7异步函数解决进程等待相关业务问题

    业务需求场景描述: 在接口只能单一检测的情况下,批量检测资源名称是否存在数据库,如果资源群中某一个资源已存在:给出交互让用户决定是否覆盖资源,最后形成不存在的资源和用户确定覆盖的资源群,进行提交. 业 ...

  2. 使用ClickHouse表函数将MySQL数据导入到ClickHouse

    #clickhouse-client :create database dw; :use dw; --导入数据: CREATE TABLE Orders ENGINE = MergeTree ORDE ...

  3. Asp.NetCore 3.1 使用AutoMapper自动映射转换实体 DTO,Data2ViewModel

    1:什么是AutoMapper? 下面为AutoMapper官方的解释: AutoMapper是一个对象-对象映射器.对象-对象映射通过将一种类型的输入对象转换为另一种类型的输出对象来工作. 使Aut ...

  4. Kafka 0.10.1版本源码 Idea编译

    Kafka 0.10.1版本源码 Idea编译 1.环境准备 Jdk 1.8 Scala 2.11.12:下载scala-2.11.12.msi并配置环境变量 Gradle 5.6.4: 下载Grad ...

  5. Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布

      本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 2.通过 ConnectablePublisher 控制何时发布.   内容概览 前言 使用 ma ...

  6. python_选择排序

    #选择排序 def insert_sort(li): for i in range (1,len(li)): # i表示摸到牌的下标 tem = li[i] j = i - 1 # j 是初始手中的牌 ...

  7. 项目介入EF Core

    目前.Net主流的ORM有SqlSugar.Entity Framework.Dapper,其它的我就不列举了.其实和Java那边ibatis相比,他们都比较轻量.之前用ibatis开发,真的很麻烦, ...

  8. 【Pod Terminating原因追踪系列之三】让docker事件处理罢工的cancel状态码

    本篇为Pod Terminating原因追踪系列的第三篇,前两篇分别介绍了两种可能导致Pod Terminating的原因.在处理现网问题时,Pod Terminating属于比较常见的问题,而本系列 ...

  9. Lua_C_C#

    lua调用c函数 https://www.cnblogs.com/etangyushan/p/4384368.html Lua中调用C函数 https://www.cnblogs.com/sifenk ...

  10. Cython编译独立的可执行文件

    cython --embed -o hello.c hello.pygcc hello.c -o hello -I /Library/Frameworks/Python.framework/Versi ...