码迷,mamicode.com
首页 > 其他好文 > 详细

要是知道被怼这么惨就不在简历上写“精通”了,哭了!!

时间:2020-05-16 17:03:04      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:关系   设计   资深   索引   磁盘读写   数据一致性   基于   多个   隔离   

前言:众所周知,简历上“了解=听过名字;熟悉=知道是啥;熟练=用过;精通=做过东西”,我现在十分后悔在简历上写了“精通”二字…

技术图片

 

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

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

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

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

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

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

相信大家对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。索引作为MySQL中比较重点的知识,在面试中出现的频率特别高。楼主自认为对MySQL优化的索引相关知识有很多了解,同事们也都热情的称呼我为大佬。楼主一直想进阿里,特地花了1个月左右时间复习相关知识,自信MySQL掌握的很好了,所以斗胆在简历上写了“精通MySQL”,想不到被阿里面试官狠狠虐了一把…(关于这次面试题目和整理的答案我附在了文末,有需要的同学自行领取哈)


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

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

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

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

我:我们在数据库中创建了一些索引(我现在非常后悔我当时说了这句话

技术图片

 

)。

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

我:(这道题我背过答案!)B+树磁盘读写代价更低,;B+树查询效率更加稳定;对于范围查找来说,B+树只需遍历叶子节点链表即可,B树却需要重复地中序遍历…

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

我:???

聚簇索引、覆盖索引

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

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

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

技术图片

 

简化B+Tree

这些问题有点难,但还是凭借着自己的知识储备简单的回答上一些。

联合索引、最左前缀匹配

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

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

索引下推、查询优化

面试官:你知道在MySQL 5.6中,对索引做了哪些优化吗?

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

我:这个还没有统计过,除非遇到慢SQL的时候我们才会去排查;

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

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

我:(依稀记得和优化器有关,但是这个问题并没有回答好)

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

技术图片

 

MySQL查询过程

总结&感悟

通过这次面试,发现像阿里这种大厂对于底层知识还是比较看重的,这次面试关于索引的知识,自己大概能回答70%,但是自信答对的只占一半, 我以前以为关于索引最多也就问一下Hash和B+有什么区别,没想到最后都能问到查询优化器上面。看来自己索引有关的知识了解的还是不够多。

技术图片

 


由于篇幅限制没办法把小编的完整面试题展现出来,所以小编把这些面试题整理成了一份面试专题文档,在此免费分享,有需要的朋友可以转发+关注后私信【电子书】来领取得到,除此之外小编手里还有各专题大厂面试资料以及资深架构师整理的Java核心知识点,欢迎领取!

1、Redis技术好文精选整理(共11篇)

  • Redis实战
  • Redis设计与实现_扫描版_12.7M
  • Redis入门指南
  • Redis缓存和MySQL数据一致性方案详解
  • Redis哨兵、复制、集群的设计原理,以及区别
  • Spring Boot 整合 Redis
  • 新浪微博开放平台中的 redis 实践
  • 一文梳理 Redis 基础
  • 分布式锁的由来、及Redis分布式锁的实现详解
  • Redis为什么是单线程、及高并发快的3大原因详解
  • 如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题

 

技术图片

 

2、Mysql技术好文精选整理

  • MySQL 技术内幕:InnoDB存储引擎
  • MySQL Cookbook%28第2版%29中文版
  • MySQL性能调优与架构设计
  • MySQL核心技术手册%28第二版%29
  • MySQL高性能书籍_第3版(中文)
  • 深入浅出MySQL
  • MySQL高效编程
  • MySQL性能优化的21个最佳实践
  • Effective MySQL之SQL语句最优化

 

技术图片

 

3、Zookeeper技术好文精选整理

  • 从Paxos到Zookeeper 分布式一致性原理与实践
  • 基于zookeeper手写实现注册中心
  • Spring Cloud Zookeeper原理与实战
  • zookeeper面试专题及答案

 

技术图片

 

需要的可以扫描下面二维码;
技术图片

 

 

要是知道被怼这么惨就不在简历上写“精通”了,哭了!!

标签:关系   设计   资深   索引   磁盘读写   数据一致性   基于   多个   隔离   

原文地址:https://www.cnblogs.com/xiaogeng88/p/12900795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!