一、项目相关问题 
文件上传耗时从 15 秒降到 3 秒，原因是什么？
丢到 Kafka 之后，最终 Kafka 全部处理完的时间是不是大于 15 秒？ 
怎么理解用 ES 实现关键词 + 语义双引擎组合检索？ 
为什么要设计关键词 + 语义双引擎混合检索？ 
## 多级缓存的一致性该怎么看？ 
## 多级缓存的写入环节是如何处理的？ 
## 加锁加载缓存的环节是不是一个新的写入过程？ 
## 内存缓存除了请求完全不存在时的写入方式，还有其他写入方式吗？ 
二、缓存相关基础问题 
## 知道缓存击穿、穿透、雪崩这三点吗？分别说明并讲解决措施。 
三、Java 基础问题 
## 介绍一下 Java 的 GC（垃圾回收）？ 
## 如果有循环引用的变量，Java GC 该怎么处理？ 
## Java 的类加载机制是什么？讲一下具体过程？ 
## 除了双亲委派模型，Java 类加载还有其他机制吗？ 
四、数据库基础问题 
## 数据库 MVCC 是什么？解决了什么问题？ 
## MVCC 为什么能解决脏读的问题？ 
## MVCC 是怎么控制住读取出来的是快照数据的？ 
五、Redis 相关问题 
## 了解 Sorted Set（ZSet）这个数据结构吗？ 
## ZSet 底层是什么数据结构？ 
## 详细解释一下跳表？ 
## 跳表和 B + 树有什么区别？ 
## Redis 为啥要使用跳表而不是 B + 树？ 
## 跳表和 B + 树查询复杂度都是 O (logN)，从时间效率看一致，
## Redis 为何还要用跳表？ 
## 跳表设计的核心思想是什么？ 
## 跳表和平衡树（红黑树）查询速度都是 O (logN)，为何跳表不用做旋转这类复杂操作？ 
## 手撕：单例模式，力扣重排链表 
## 你理解的单例模式是什么？ 
## 单例模式是不是最重要的就是保证只有一个实例？ 
## 写单例的话，该如何防止别人随便 new 出实例？ 
## 若有同学不知道类是单例，直接 new 该类，该如何防止？


