-
MySQL 存储引擎的区别?数据库有哪些隔离级别?
-
MySQL 索引的数据结构是什么?为什么选择这种数据结构?
-
B+Tree 和 B-Tree 有什么区别?
-
Reactor 线程模型有哪些?Netty 是如何支持这三种线程模型的?
-
多路复用器的实现原理?
-
epoll 的实现原理?epoll、poll、select 的区别
-
JVM 如何进行垃圾回收?标记算法有哪些?垃圾回收算法有哪些?
-
CMS 垃圾回收器的原理?
二面
==
-
最近做过的最有挑战的项目?
-
redis 和 MySQL 的双写一致性问题?你们是如何做的?为什么这样做?其他的做法会存在什么问题?
-
分布式锁的实现原理
-
数据库有哪些隔离级别?这几种隔离级别分别解决了什么问题?
-
MySQL 是如何解决不可重复读问题的?
-
MVCC 的实现原理
-
MySQL 的可重复读隔离级别下,存在幻读吗?为什么?
-
数据库的索引是不是创建得越多越好?为什么?通常创建几个?
-
一张表中对 a、b、c 三个字段分别建立了索引,现在有一条 SQL 语句:select field1,field2 … from t where a = xx and b=xx and c=xx. 请问这条 SQL 语句会使用到索引吗?如果会,那么会使用到哪个索引?(回答:只会使用其中一个索引,可能是 a,也可能是 b,还有可能是 c,具体使用哪个索引和表中的数据有关)
-
为什么不会同时使用 a,b,c 三个索引?什么是回表?
-
聚簇索引和非聚簇索引的区别
-
如何知道一条 SQL 语句使用了哪些索引?(回答:使用 explain 查看)
-
explain 的结果有哪些列?分别代表什么含义?
-
如何查看慢 SQL?
-
在 Spring 事务中执行多条 SQL 语句时,是对应多个数据库连接还是一个数据库连接?(回答:一个连接,多个就无法保证事务了)
-
既然是一个连接,Spring 在前后执行多条 SQL 时,是如何保证当前线程获取到同一个连接的?(回答:当时没想到 ThreadLocal,面试官引导说,如果是你,会怎么实现。后来回答说存在一个 map,key 是当前线程,value 就是数据库连接,最后灵光一现,想到了 ThreadLocal)
-
ThreadLocal 的实现原理?
-
使用 ThreadLocal 需要注意哪些问题?(实际上是问 ThreadLocal 内存泄漏的问题)
-
Redis 主从复制的原理
-
MQ 使用过哪些?如何选型?
-
使用的是什么 RPC 框架?为什么选择它?
-
线上服务流量猛涨,该如何操作,说下详细过程?新加服务节点也可能会导致服务还没起来,机器就被打爆了,这个时候怎么办