前言

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

相信大家对于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. 实现图像的二值化(java+opencv)

    书里的解释: 其他的没找到什么资料,直接参考百度百科 https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E4%BA%8C%E5%80%BC%E5%8C%9 ...

  2. MYSQL语法(一)

    数据表准备: CREATE TABLE student3 ( id int, name varchar(20), age int, sex varchar(5), address varchar(10 ...

  3. Tugnsten Fabric-MPLS-三层转发

    1.网络拓扑图如下: 2.场景:虚机1.1.1.3 ping 虚机3.3.3.3(两个虚机加入到虚拟路由器里面了,所以可以互通) 3.查看虚机1.1.1.3所对应的VRF: 4.其中41为mpls标签 ...

  4. centos yum 安装golang

    rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install golan ...

  5. cinder 卷迁移进度的代码分析

    一.cinder-api服务的入口函数 D:\code-program\cinder-ocata_cinder\cinder\api\contrib\admin_actions.py from cin ...

  6. 如何配置 SSH 密钥连接 Git 仓库

    SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:是建立在应用层基础上的安全协议. SSH 是目前较可靠,专为远程登录会话和其 ...

  7. SpringBoot项目 使用Jenkins进行自动化部署 (gitLab管理项目)_

    1.部署服务器创建好对应文件夹和启动脚本 创建文件夹 mkdir /wdcloud/app/rps/rps-module-category 创建启动脚本 cd /wdcloud/app/rps/rps ...

  8. 实用的git log用法

    git log可以很方便地查看日志,可以根据自己需要,将日志按照特定格式显示,或者输出某种格式. 最原始的输出样式: $ git log commit ca82a6dff817ec66f4434200 ...

  9. IDEA下Maven项目搭建踩坑记----2.项目编译之后 在service层运行时找不到 com.dao.CarDao

    项目写的差不多 想运行一下,然后发现运行到Service层的时候报错说找不到Dao层文件 ,纠结半天之后看了下编译好的项目文件,发现mapper文件下边是空的, 于是就百度找一下原因,结果说是IDEA ...

  10. SEO大神都是些什么人

    http://www.wocaoseo.com/thread-97-1-1.html 貌似好久没有更新seo培训联盟的文章了,最近一直在专心学习其他的东西,前一段写了几篇关于用户需求和体验的文章,但是 ...