Java后端社招3年

这篇博客主要探讨了Java后端面试中常见的技术点,包括MySQL索引失效场景、InnoDB与MyISAM的区别、数据库优化策略、B树与B+树的选择,以及主从同步、乐观锁与悲观锁的概念。同时,还深入讨论了Redis的持久化方式、主从同步过程和ZSet实现,以及过期策略和内存淘汰策略。此外,还涵盖了HashMap的实现、线程安全性以及select与epoll的区别。对于网络通信安全,讲解了http与https的区别及其加密原理。最后,提到了Raft算法、消息中间件的高可用性和无重复字符最长子串的算法解冑。
摘要由CSDN通过智能技术生成

写在前面

1.Mysql索引在什么情况下会失效

2.MySql的存储引擎InnoDB与MyISAM的区别

3.Mysql在项目中的优化场景,慢查询解决等

4.Mysql有什么索引,索引模型是什么

5.B-树与B+树的区别?为什么不用红黑树

6.Mysql主从同步怎么做

7.乐观锁与悲观锁的区别?

8.聊聊binlog日志

9.redis 持久化有哪几种方式,怎么选?

10.redis 主从同步是怎样的过程?

11.redis 的 zset 怎么实现的?

12.Redis 过期策略和内存淘汰策略

1.Mysql索引在什么情况下会失效

  • 查询条件包含 or,可能导致索引失效

  • 如果字段类型是字符串,where 时一定用引号括起来,否则索引失效

  • like 通配符可能导致索引失效。

  • 联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。

  • 在索引列上使用mysql的内置函数,索引失效。

  • 对索引列运算(如,+、-、*、/),索引失效。

  • 索引字段上使用(!= 或者 < >,not in)时,可能会导致索引失效。

  • 索引字段上使用is null, is not null,可能导致索引失效。

  • 左连接查询或者右连接查询查询关联的字段编码格式不一样,可能导致索引失效。

  • mysql 估计使用全表扫描要比使用索引快,则不使用索引。

2.MySql的存储引擎InnoDB与MyISAM的区别

InnoDB支持事务、外键、行级锁

3.Mysql在项目中的优化场景,慢查询解决等

加索引。你可以给面试官描述一下,一个加了索引的SQL,是怎么执行查找的。

还有就是order by,group by原理,深分页等等,都跟慢查询息息相关,都比较经典:

最后就是慢查询的排查解决手段:

打开慢查询日志slow_query_log,确认SQL语句是否占用过多资源,用explain查询执行计划、对group by、order by、join等语句优化,如果数据量实在太大,是否考虑分库分表等等。

4.Mysql有什么索引,索引模型是什么

5.B-树与B+树的区别?为什么不用红黑树

🍒为什么索引结构默认使用B+树,而不是B-Tree,Hash哈希,二叉树,红黑树?

  • Hash哈希,只适合等值查询,不适合范围查询。

  • 一般二叉树,可能会特殊化为一个链表,相当于全表扫描。

  • 红黑树,是一种特化的平衡二叉树,MySQL 数据量很大的时候,索引的体积也会很大,内存放不下的而从磁盘读取,树的层次太高的话,读取磁盘的次数就多了。

  • B-Tree,叶子节点和非叶子节点都保存数据,相同的数据量&#

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值