三道MySQL联合索引面试题,淘汰80%的面试者,你能答对几道

2022-08-23
阅读 2 分钟
1.2k
众所周知MySQL联合索引遵循最左前缀匹配原则,在少数情况下也会不遵循(有兴趣,可以翻一下上篇文章)。创建联合索引的时候,建议优先把区分度高的字段放在第一列。至于怎么统计区分度,可以按照下面这种方式。创建一张测试表,用来测试: {代码...} 统计每个字段的区分度: {代码...} 值越大,区分度越高,优先放在第一...
封面图

学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难

2022-08-17
阅读 5 分钟
486
上篇文章讲了MySQL架构体系,了解到MySQL Server端的优化器可以生成Explain执行计划,而执行计划可以帮助我们分析SQL语句性能瓶颈,优化SQL查询逻辑,今天就一块学习Explain执行计划的具体用法。
封面图

一文搞懂MySQL架构设计,再也不用担心面试官问得太深

2022-07-18
阅读 2 分钟
1.7k
很多开发同学对SQL优化如数家珍,却对MySQL架构一知半解。岂不是只见树叶,不见森林,终将陷入细节中不能自拔。今天就一块学习MySQL分层架构,深入了解MySQL底层实现原理,以及每层的作用,我们常见的SQL优化到底在哪一层做了优化?1. MySQL整体架构由图中可以看到MySQL架构主要分为Server层和存储引擎层。Server层又分...
封面图

MySQL查询为什么没走索引?这篇文章带你全面解析

2022-07-07
阅读 3 分钟
936
工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引?同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事?原因可能是索引失效了,失效的原因有以下几种,看你有没有踩过类似的坑?1. 数据准备:有这么一张用户表,在name字段上建个索引: {代码...} 2. Exp...

查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题

2022-07-04
阅读 4 分钟
3.9k
开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降。有没有什么办法,能解决深分页的问题呢?本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下。1. 准备数据先创建一张用户表,只在create_time字段上加索引: {代码...} 然后往用户表中插入100万条测试数据,这里可...
封面图

老程序员总结的四条工作经验教训,一部血泪史,推荐观看

2022-06-29
阅读 2 分钟
617
想来从事互联网工作已经很多年了,已经从当初的懵懂少年逐渐退化成老油条。刚毕业的时候,真是个愣头青,什么都不懂,也什么都看不惯。整天加班忙得要死,还要忍受领导批评指责。
封面图

高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏

2022-06-28
阅读 3 分钟
716
1. MySQL主从同步实现方式MySQL主从同步是基于Bin Log实现的,而Bin Log记录的是原始SQL语句。Bin Log共有三种日志格式,可以binlog_format配置参数指定。参数值含义Statement记录原始SQL语句,会导致更新时间与原库不一致。<br/>比如 update_time=now()Row记录每行数据的变化,保证了数据与原库一致,缺点是数据...
封面图

彻底搞懂三大MySQL日志,Redo Log、Undo Log、Bin Log

2022-06-27
阅读 3 分钟
2.4k
MySQL实现事务、崩溃恢复、集群的主从复制,底层都离不开日志,所以日志是MySQL的精华所在。只有了解MySQL日志,才算是彻底搞懂MySQL。
封面图

记一次ThreadLocal引发的线上故障,年终奖没了,可能还面临辞退

2022-06-26
阅读 4 分钟
835
记一次惨痛的线上ThreadLocal引发的故障,3个月的年终奖没了,可能还会面临辞退。事情起因耗子逗猫 —— 没事找事前几天,在工作不太忙的时候,为了展示我在工作中积极主动,技术能力较强,并给领导留个好印象,我就去翻翻项目代码有没有可优化的空间。没想到,我真让我找着啦。祸端就此埋下了!有用户反馈查询订单列表接...
封面图

记一次排查线上MySQL死锁过程,不能只会curd,还要知道加锁原理

2022-06-25
阅读 2 分钟
717
昨晚我正在床上睡得着着的,突然来了一条短信。啥,线上MySQL死锁了,我赶紧登录线上系统,查看业务日志。能清楚看到是这条insert语句发生了死锁。MySQL如果检测到两个事务发生了死锁,会回滚其中一个事务,让另一个事务执行成功。很明显,我们这条insert语句被回滚了。 {代码...} 但是我们怎么排查这个问题呢?到底跟哪...
封面图

面试官问我一条update语句加了多少锁?我总结了全套八股文

2022-06-23
阅读 2 分钟
903
迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子。手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:“我爱加班”。
封面图

MySQL的锁这么多,不知从何学起,看完这篇文章就够了

2022-06-21
阅读 2 分钟
1.1k
MySQL有两个核心的知识点,索引和锁。前几篇文章已经详细讲解了MySQL索引实现机制,今天再一起学习一下MySQL的锁。1 为什么要加锁?当多个事务并发操作同一批数据的时候,如果不加锁,就无法保证事务的隔离性,最后导致数据错乱。加锁是为了保证并发操作下数据的正确性。2 锁的分类有哪些?按锁的粒度可分为:表锁、页面...
封面图

彻底搞懂MySQL事务

2022-06-19
阅读 3 分钟
667
迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子。手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:“我爱加班”。
封面图

一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推

2022-06-18
阅读 3 分钟
1.8k
迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子。手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:“加班使我快乐”。
封面图

面试官竟然问我消息队列为啥会丢失消息?幸亏我总结了全套八股文

2022-06-17
阅读 3 分钟
1k
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。面试开始,直入正题。面试官: 我看到你的简历上写着项目中用到了消息队列,还用的是kafka,你有遇到过消息队列丢失消息的情况吗?我: [疑问] 消息队列还能丢失消息?那谁还用消息队列!你是不是搞...
封面图

面试官问我MySQL索引为啥用B+树?

2022-06-16
阅读 3 分钟
715
迎面走来了你的面试官,身穿格子衫,挺着啤酒肚,发际线严重后移的中年男子。手拿泡着枸杞的保温杯,胳膊夹着MacBook,MacBook上还贴着公司标语:“我爱加班”。
封面图

面试官竟然问我订单ID是怎么生成的?难道不是MySQL自增主键?

2022-06-15
阅读 5 分钟
867
这么温柔可爱的面试官,应该不会为难我吧。嗯,应该是的,毕竟我这么帅气,面试可能就是走个过场。美女面试官是不是单身?毕竟程序员都不善交流,因为我也是单身,难道我的姻缘就在此注定。孩子的名字我都想好了。一冰!好名字。
封面图

面试官竟然问我怎么实现分布式锁?幸亏我总结了全套八股文

2022-06-14
阅读 4 分钟
1.3k
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。面试开始, 直入正题。面试官: 你有没有参与过秒杀系统的设计?我: 没有,我平时都是开发后台管理系统、OA办公系统、内部管理系统,从来没有开发过秒杀系统。面试官: 嗯...,小伙子很实诚。今天...
封面图

面试官:高并发场景下,你们是怎么保证数据的一致性的?

2022-06-13
阅读 2 分钟
1.2k
面试的时候,总会遇到这么一个场景。1. 场景分析面试官:你们的服务的QPS是多少?我:我们的服务高峰期访问量还挺大的,大约是3万吧。面试官:这么大的访问量,你们的服务器能撑住吗?有加缓存吗?我:有的,我们使用了Redis做缓存,接口优先查询缓存,缓存不存在,才访问数据库。这样可以减少数据库访问压力,加快查询...
封面图

面试官竟然问我怎么分库分表?幸亏我总结了一套八股文

2022-06-12
阅读 2 分钟
1.7k
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。面试开始,直入正题。面试官:小伙子,看到你的简历上面写了项目中有对MySQL进行分库分表,为什么要进行分库分表?我:不知道啊!谁知道老大咋想的,反正我来的时候就已经分好了。面试官:嗯...,今...
封面图

装上这几个Intellij idea插件,保证让你爱上写代码

2022-06-11
阅读 2 分钟
2.7k
程序员都知道写代码是一件低调又枯燥的事情,一天到晚盯着电脑屏幕看。怎么能让写代码变成一件酷炫的事情,那就从装扮编辑器开始。安装了这些插件,保证同事看到后,都会问你。兄弟,你安装了什么插件,让我也装一下。1. 先换个漂亮主题 Vuesion ThemeIdea编辑器的界面灰蒙蒙的,有点性冷淡的风格,看多了人都有点抑郁。...
封面图

面试官竟然问我为啥要用MQ,幸亏我看了参考答案

2022-06-10
阅读 2 分钟
774
互联网公司的项目没有不用到MQ(消息队列)的,在简历中写上项目中用到MQ,也算是亮点之一。既然你写了,面试官就会问,你对MQ到底了解多少?一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来。面试官:小伙子,我看你简历上写了,在项目中用到了MQ,你们项目为什么要引入...
封面图

Java8已经发布7年了,不会还有人没用过CompletableFuture吧

2022-06-10
阅读 10 分钟
992
日常开发中,我们都会用到线程池,一般会用execute()和submit()方法提交任务。但是当你用过CompletableFuture之后,就会发现以前的线程池处理任务有多难用,功能有多简陋,CompletableFuture又是多么简洁优雅。
封面图

阿里面试官:如何实现三个线程循环交替打印?

2022-06-09
阅读 2 分钟
1.7k
这道题的难度是五颗星,在面试中也会经常遇到,如果是第一次见到这道题,很难在短时间内想出合理的解决方案。如果只要求交替打印一次的话,实现比较简单,可以用Thread.join()方法,一个线程等待另一个线程执行完成。现在要求循环打印,就涉及线程间通信,必须要用到锁,一把锁肯定不够。例如线程1释放锁之后,线程2和线...
封面图

Java程序员必备快速统计接口耗时小工具,强烈推荐

2022-06-09
阅读 5 分钟
2.6k
名字叫StopWatch,在常见的类库,例如Spring、Apache Commons、Google Guava都有这个工具,功能和实现都是大同小异,推荐使用Spring里的,可以更方便统计耗时的汇总结果。
封面图

面试官:你能手写一个LRU缓存吗?

2022-06-09
阅读 4 分钟
742
面试官: 你能手写个LRU缓存吗?你: LRU是什么东西?(一脸懵逼状)面试官: LRU全称Least Recently Used(最近最少使用),用来淘汰不常用数据,保留热点数据。你写了5分钟,然而只写了个get和put方法体,里面逻辑实在不知道咋写。面试官: 今天的面试先到这吧,有其他面试我们会再联系你。我信你个鬼,你个糟老头子坏...
封面图

Java程序员线上惨痛踩坑记录,你也一定遇到过

2022-06-09
阅读 5 分钟
691
如果调用上面的方法会发生什么?id是Integer类型,而方法的返回值int类型,会自动拆箱转换,由于id是null,转换成int类型的时候,就会报NullPointerException异常。
封面图

你没用过的Java工具类库,十倍提升开发效率

2022-06-09
阅读 7 分钟
685
工作很多年后,才发现有很多工具类库,可以大大简化代码量,提升开发效率,初级开发者却不知道。而这些类库早就成为了业界标准类库,大公司的内部也都在使用,如果刚工作的时候就有人告诉我使用这些工具类库,该多好!
封面图

Java程序员怎么避免空指针异常?看完这篇文章再也不用担心了

2022-06-09
阅读 2 分钟
917
Java程序员工作中遇到最多的错误就是空指针异常,无论你多么细心,一不留神就从代码的某个地方冒出NullPointerException,真是令人头疼。
封面图

竟然还有人说ArrayList是2倍扩容,今天带你手撕ArrayList源码

2022-06-09
阅读 5 分钟
564
ArrayList是我们开发中最常用到的集合,但是很多人对它的源码并不了解,导致面试时,面试官问的稍微深入的问题,就无法作答,今天我们一起来探究一下ArrayList源码。
封面图