Java后端真实面试题大全(有详细答案)--高频/真题
Posted IT利刃出鞘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java后端真实面试题大全(有详细答案)--高频/真题相关的知识,希望对你有一定的参考价值。
原文网址:Java后端真实面试题大全(有详细答案)--高频/真题_IT利刃出鞘的博客-CSDN博客
简介
说明
本文分享Java后端真实高频面试题,有详细答案,保你稳过面试。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、SpringCloud、设计模式等。
本博客包含从简单到困难、从高频到低频的题目,适合所有Java求职者,包括:应届生、转行的、三年以内经验的、三到五年经验的、五到十年经验的等。
你要跳槽时是否遇到过如下问题?
-
没有题库,不知道如何开始复习
-
有题库,但题目超级多,根本看不完
-
背完题库中的面试题了,却发现面试官的问题大部分都不在题库中,导致面试老是挂,拿不到offer
此套面试题的特点
这是一套真实、靠谱的题目。它的特点是:
-
真实、靠谱(这套题是我在几十场面试中被面试官问到的问题)
-
精选、高频(数量合适,很快就能看完)
-
有难度和频率的标记(着急跳槽的可以只看频率为三颗星及以上的题目)
-
很强大,面试官的问题基本都在这套题里(看过这套题的朋友都说,面试时85%以上的题目都在这些题目里,成为了offer收割机)
此套面试题的威力
看过我博客的几个朋友和同事参加了面试后跟我说,他们面试被问到的问题大部分(85%以上)都在这个博客里。
我在面试时经常会遇到这种情况:95%的题目在本文中,我对答如流,不知道面试官是否会怀疑泄题了😂。这些面试也都很稳地拿到了offer。
难度与频率
面试题采用五角星来评判题目的难度和被问到的频率,最高为五颗星。
如果是三年以上的经验,只看难度为三颗星及以上的题目即可。如果是一两年经验,看个人水平,水平好些的可以看一颗星到五颗星所有题目(我知道有这样的朋友:虽然经验少,但爱学习,一两年的经验拥有普通人四五年的技术能力)。
项 | ★ | ★★ | ★★★ | ★★★★ | ★★★★★ |
难度 | 初级 | 初中级 | 中级 | 中高级 | 高级 |
频率 | 很少问到 | 几乎必问 |
粉丝福利:有粉丝私信问我有没有简历模板、PDF书籍、PPT模板等资料,我整理了一下,包含:简历模板、PDF书籍、PPT模板等。这些是我自己也在用的资料,真正实用、靠谱。资料可以从这里免费获取:资料地址
我帮很多朋友、粉丝免费优化过简历,如果需要优化简历可以看这里:简历优化
基础
String
String, StringBuffer, StringBuilder区别(难度:★ 频率:★★★)
Java之String系列--String, StringBuffer, StringBuilder区别_IT利刃出鞘的博客-CSDN博客
String对象数目(难度:★★★ 频率:★)
Java之String系列--创建对象的个数及其原理_IT利刃出鞘的博客-CSDN博客
intern方法的作用(难度:★★★ 频率:★)
Java之String系列--intern方法的作用及原理_IT利刃出鞘的博客-CSDN博客
如何修改String对象的数据?(难度:★★★ 频率:★★)
Java之String系列--String不可变的含义、原因、好处_IT利刃出鞘的博客-CSDN博客
static
static的5种用法(难度:★★ 频率:★)
Java--static--用法/使用位置/实例_IT利刃出鞘的博客-CSDN博客
为什么静态方法不能调用非静态方法和变量?(难度:★★★ 频率:★★★)
与类加载顺序有关,加载静态方法时,非静态的未初始化。见:JVM--类加载过程--原理/实例_IT利刃出鞘的博客-CSDN博客
异常
异常类型(难度:★★ 频率:★★★★)
Java--异常/Exception--类型/原理_IT利刃出鞘的博客-CSDN博客
catch里return了,finally是否执行?(难度:★★ 频率:★)
Java--异常/Exception--try/catch/finally的return顺序_IT利刃出鞘的博客-CSDN博客
IO
字节流与字符流区别?(难度:★★ 频率:★★)
Java--IO--字节流与字符流的区别_IT利刃出鞘的博客-CSDN博客
BIO, NIO, AIO 区别?(难度:★★★ 频率:★)
Java--BIO、NIO、AIO--区别/使用/实例_IT利刃出鞘的博客-CSDN博客
JDK8
JDK8新特性(难度:★★ 频率:★★)
接口允许default和static;lambda;stream;时间新API(LocalDateTime等)CompletableFuture;等
JDK8接口的default和static(难度:★★ 频率:★)
Java--接口--JDK8新特性--详解/实例_IT利刃出鞘的博客-CSDN博客
JDK8 Stream API 流操作包括哪些部分?项目中怎么用的Stream?(难度:★★ 频率:★)
Java--Stream(流)--使用/实例/流操作_IT利刃出鞘的博客-CSDN博客
语法
项目中对泛型的使用(难度:★★ 频率:★★)
Java--泛型--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
接口与抽象类的区别?(难度:★★ 频率:★)
Java--接口与抽象类的区别_IT利刃出鞘的博客-CSDN博客
类库
SimpleDateFormat线程安全吗?怎么保证线程安全?(难度:★★★ 频率:★★★)
SingleDateFormat--线程安全的操作方法--使用/实例_IT利刃出鞘的博客-CSDN博客
反射
Java反射:forName和classLoader的区别(难度:★★★ 频率:★)
Java--反射--通过反射实例化对象--方法/实例_IT利刃出鞘的博客-CSDN博客
反射机制中可以获取private成员的值吗?(难度:★★★ 频率:★)
- 可以。法1.通过setter和getter获得 法2:通过Field类提供的set()和get()方法
- 另见《Java开发实战经典 第2版》=> 15.4 Java反射机制的深入应用
其他
拆箱与装箱(难度:★ 频率:★)
Java--自动拆箱/装箱/实例化顺序/缓存--使用/原理/实例_IT利刃出鞘的博客-CSDN博客
集合
List
List与Set的区别(难度:★ 频率:★)
Java--List--区别--ArrayList与LinkedList--List与Array、Set_IT利刃出鞘的博客-CSDN博客
ArrayList与LinkedList异同点?(难度:★ 频率:★★)
Java--List--区别--ArrayList与LinkedList--List与Array、Set_IT利刃出鞘的博客-CSDN博客
List与数组的区别?(难度:★ 频率:★)
Java--List--区别--ArrayList与LinkedList--List与Array、Set_IT利刃出鞘的博客-CSDN博客
ArrayList是否线程安全?如何线程安全地操作ArrayList?(难度:★★★ 频率:★★★★★)
ArrayList--线程不安全的原因/保证线程安全的方法--方案/实例_IT利刃出鞘的博客-CSDN博客
ArrayList扩容机制(难度:★★★ 频率:★★★★)
ArrayList--扩容的原理_IT利刃出鞘的博客-CSDN博客
List.subList的坑?(难度:★★ 频率:★)
Java--List--注意问题/坑_IT利刃出鞘的博客-CSDN博客
List如何安全删除(难度:★★ 频率:★)
Java--List--安全删除--方法/实例_IT利刃出鞘的博客-CSDN博客_list 安全删除
List如何去重?(难度:★ 频率:★★)
stream,或:Java--List--去重--方法/实例_IT利刃出鞘的博客-CSDN博客
List如何实现排序(难度:★ 频率:★★)
stream,或:Java--List--排序--方法/实例_IT利刃出鞘的博客-CSDN博客
为什么引入迭代器?(难度:★★ 频率:★)
List哪种遍历性能好,为什么?(难度:★★ 频率:★)
Java--List--创建/遍历--方法/实例_IT利刃出鞘的博客-CSDN博客_java list创建
Map
HashMap、TreeMap、LinkedHashMap和区别?(难度:★★ 频率:★★★★★)
HashMap、TreeMap、LinkedHashMap的区别_IT利刃出鞘的博客-CSDN博客
JDK8的HashMap和ConcurrentHashMap的改变?(难度:★★ 频率:★★★★)
Java--JDK7与JDK8的HashMap的区别_IT利刃出鞘的博客-CSDN博客
Java--ConcurrentHashMap原理_IT利刃出鞘的博客-CSDN博客
HashMap数据结构、哈希冲突解决方法(难度:★★★ 频率:★★★★)
Java--HashMap原理--数据结构/存取机制_IT利刃出鞘的博客-CSDN博客
hash冲突的4种解决方案_IT利刃出鞘的博客-CSDN博客
HashMap扩容的原理(难度:★★★ 频率:★★★★)
Java--HashMap扩容的原理_IT利刃出鞘的博客-CSDN博客
HashMap为什么线程不安全?如何线程安全地操作?(难度:★★★ 频率:★★★★★)
Java--HashMap--线程不安全的原因/保证线程安全的方法--方案/实例_IT利刃出鞘的博客-CSDN博客
ConcurrentHashMap原理?(难度:★★★ 频率:★★★★★)
Java--ConcurrentHashMap原理_IT利刃出鞘的博客-CSDN博客
String的hashCode怎么实现的?(难度:★★ 频率:★)
hash:s[0] * 31^(n-1) + s[1] * 31^(n-2) + ... + s[n-1]
见:Java--HashMap原理--数据结构/存取机制_IT利刃出鞘的博客-CSDN博客
HashMap和HashSet的区别及其实现原理?(难度:★★ 频率:★)
- HashMap:将key.hashCode()作为hash值存放,将value直接作为value。
- HashSet:调用HashMap的put方法;将key.hashCode()作为hash值存放,将HashSet类的final变量PRESENT作为value。
HashMap如果使用对象最为key,要注意什么?(难度:★★ 频率:★)
- 重写hashCode和equals。
对象比较为什么重写hashCode和equals?(难度:★★ 频率:★)
- 重写equals方法时需要重写hashCode方法,主要是针对Map、Set等集合类型的使用;
- a: Map、Set等集合类型存放的对象必须是唯一的;
- b: 集合类判断两个对象是否相等,是先判断HashCode是否相等,如果HashCode返回TRUE,还要再判断equals返回值是否ture,只有两者都返回ture,才认为该两个对象是相等的。
JVM
运行时数据区
运行时数据区是怎样的?线程安全(即线程私有)的有哪些?(难度:★★ 频率:★★★★)
对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?(难度:★★ 频率:★★)
类加载
Java类加载流程?初始化流程?(难度:★★ 频率:★★★★★)
JVM--类加载过程--原理/实例_IT利刃出鞘的博客-CSDN博客
JVM双亲委派模型(难度:★★★ 频率:★)
内存泄露
Java内存泄露什么时候会发生?(难度:★★ 频率:★★)
Java内存泄露--原因/解决方案_IT利刃出鞘的博客-CSDN博客
为什么内部类持有外部类可能内存泄露?如何解决?(难度:★★ 频率:★)
Java的内部类持有外部类导致内存泄露--原因/解决方案_IT利刃出鞘的博客-CSDN博客
为什么ThreadLocal会导致内存泄露?如何解决?(难度:★★★ 频率:★★)
Java的ThreadLocal导致内存泄露--原因/解决方案_IT利刃出鞘的博客-CSDN博客
垃圾回收
引用类型及其含义(难度:★★ 频率:★★★)
Java--引用类型--强引用、软引用、弱引用、虚引用--区别/使用/实例_IT利刃出鞘的博客-CSDN博客
finalize方法做什么用的?(难度:★ 频率:★)
- 垃圾回收时会调用此方法
可以作为GC.Roots的对象有哪些?(难度:★★★ 频率:★)
JVM--可作为GC Roots的对象_IT利刃出鞘的博客-CSDN博客
调用System.gc()会立刻垃圾回收吗?(难度:★★ 频率:★)
JVM--Java垃圾回收--原理/触发时机_IT利刃出鞘的博客-CSDN博客
Minor GC和Full GC的触发时机。(难度:★★★ 频率:★★)
JVM--Java垃圾回收--原理/触发时机_IT利刃出鞘的博客-CSDN博客
频繁Full GC如何排查(难度:★★★★ 频率:★)
Java--线上问题排查--方法/步骤_IT利刃出鞘的博客-CSDN博客
JDK默认的垃圾回收器是什么?(难度:★★ 频率:★)
JVM--Java垃圾回收器--详解/对比_IT利刃出鞘的博客-CSDN博客
CMS垃圾回收器的流程?(难度:★★★ 频率:★★★★)
CMS和G1区别(难度:★★★ 频率:★★★)
JVM--Java垃圾收集器--CMS和G1--区别和执行流程_IT利刃出鞘的博客-CSDN博客
CMS与其他老年代垃圾回收器的区别?(难度:★★★ 频率:★)
JVM--Java垃圾回收器--详解/对比_IT利刃出鞘的博客-CSDN博客
JVM调优
JVM通常设置哪些参数来调优?(难度:★★ 频率:★★★★)
JVM--调优--实例/常用配置/方法_IT利刃出鞘的博客-CSDN博客
其他
怎么分配堆外内存(难度:★★ 频率:★)
JVM--Java堆外内存--使用/作用_IT利刃出鞘的博客-CSDN博客
多线程
综合
项目中哪些地方用到了多线程?(难度:★★★ 频率:★★★★★)
- 处理定时的任务。 比如:定时器定时处理数据进行统计等
- 异步处理。 比如:发邮件, 记录日志, 发短信等。比如注册成功后发激活邮件
- 批量处理,缩短响应时间。比如:SpringBoot--多线程处理_IT利刃出鞘的博客-CSDN博客
线程的安全性问题体现在哪些方面?(难度:★★ 频率:★)
Java--内存模型(JMM)--详解_IT利刃出鞘的博客-CSDN博客
死锁产生的条件?(难度:★★ 频率:★)
Java多线程--基础知识_IT利刃出鞘的博客-CSDN博客
i++是否线程安全?(难度:★ 频率:★)
- 不是线程安全的。要线程安全可以用java.util.concurrent.atomic
JMM内存结构(难度:★★★ 频率:★★)
Java多线程--内存模型(JMM)--详解_IT利刃出鞘的博客-CSDN博客
synchronized
synchronized用于静态方法与普通方法有区别吗?(难度:★★ 频率:★★)
Java多线程--synchronized--使用_IT利刃出鞘的博客-CSDN博客
synchronized锁的升级是怎样的?(难度:★★★ 频率:★)
Java多线程--synchronized之锁的升级_IT利刃出鞘的博客-CSDN博客
线程池
线程池缺点(难度:★★ 频率:★★)
Java线程池--为什么使用线程池?优缺点是什么?_IT利刃出鞘的博客-CSDN博客
BlockingQueue:线程池fixed, single, scheduled, cached对应的队列(难度:★★ 频率:★★★)
Java线程池--种类--Executors--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
Java多线程--阻塞队列(BlockingQueue)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
ThreadPoolExecutor有哪些参数?(难度:★★ 频率:★★★★★)
Java线程池--核心参数/大小设置/使用示例_IT利刃出鞘的博客-CSDN博客
CPU密集与IO密集的场景如何设置线程池参数?(难度:★★★ 频率:★★★)
Java线程池--核心参数/大小设置/使用示例_IT利刃出鞘的博客-CSDN博客
什么时候触发最大线程条件?(难度:★★ 频率:★★★★★)
Java线程池--原理(执行流程/结构/状态转换)_IT利刃出鞘的博客-CSDN博客
线程池拒绝策略有哪些?默认是哪个?(难度:★★ 频率:★★★★)
Java线程池--饱和策略(拒绝策略)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
线程池里的异常时如何处理的?(难度:★★ 频率:★)
Java线程池--全局异常处理--方法/实例_IT利刃出鞘的博客-CSDN博客
JUC
ReentrantLock显著缺点?(难度:★★★ 频率:★★)
Java多线程--ReentrantLock--使用/实例/原理_IT利刃出鞘的博客-CSDN博客
CAS和AQS了解吗?原理是什么(难度:★★★ 频率:★★)
Java多线程--CAS--原理/优缺点_IT利刃出鞘的博客-CSDN博客
Java多线程--AQS--原理_IT利刃出鞘的博客-CSDN博客
synchronized与ReentrantLock区别?(难度:★★ 频率:★★)
Java多线程--synchronized与volatile、ReentrantLock的区别_IT利刃出鞘的博客-CSDN博客
有哪些原子类?用过哪个?(难度:★★★ 频率:★)
Java多线程--原子类(atomic)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
项目里用了哪些锁?(难度:★★★ 频率:★★★)
- 单体项目里用到了ReentrantLock、synchronized;
- 单例模式里用到了synchronized
JDK8新增的异步编程了解吗?(难度:★★★ 频率:★)
Java--异步--CompletableFuture--实例_IT利刃出鞘的博客-CSDN博客
多线程顺序交替执行的方法(有三个线程A,B,C,依次打印出A,B,C)(难度:★★★ 频率:★)
- 方案1:
- 方案2:模拟阻塞队列
- 使用Object的wait(), notify(),使用一个互斥锁。
mysql
综合问题
MyISAM与InnoDB区别(难度:★ 频率:★★★★)
MySQL--存储引擎--MyISAM和InnoDB--对比/区别_IT利刃出鞘的博客-CSDN博客
sql注入怎么解决?(难度:★★★ 频率:★★)
数据库--防止SQL注入的方案_IT利刃出鞘的博客-CSDN博客
三大范式(难度:★★ 频率:★)
数据库(SQL)--三大范式--介绍/使用/实例_IT利刃出鞘的博客-CSDN博客
怎么样幂等(难度:★★★ 频率:★★)
一条SQL查询语句的执行流程(难度:★★ 频率:★★)
MySQL--一条SQL查询语句的执行流程_IT利刃出鞘的博客-CSDN博客
大表分页的优化方法?(难度:★★★★ 频率:★)
MySQL--大数据量的分页优化方案_IT利刃出鞘的博客-CSDN博客
为什么不要用外键?(难度:★★★ 频率:★)
数据库--外键--用法/缺点_IT利刃出鞘的博客-CSDN博客
批量往数据库导入1000万条数据方法?(难度:★★ 频率:★)
- 存储过程
数据库优化方式(难度:★★★ 频率:★)
- 建立索引、字段冗余(减少联表查询)、使用缓存、读写分离、分库分表
怎么调试存储过程(难度:★★ 频率:★)
MySQL工具--dbForge Studio for MySQL_IT利刃出鞘的博客-CSDN博客
MySQL的三种驱动类型 难度:★★ 频率:★)
MySQL--时区/连接器/驱动类型_IT利刃出鞘的博客-CSDN博客
事务
隔离级别是怎样的?脏读、幻读是什么意思?(难度:★★★ 频率:★★★★★)
MySQL--隔离级别--脏读/不可重复读/幻读--详解/实例_IT利刃出鞘的博客-CSDN博客
隔离级别如何选用?(难度:★★ 频率:★★)
MySQL--隔离级别--脏读/不可重复读/幻读--详解/实例_IT利刃出鞘的博客-CSDN博客
ACID(难度:★★ 频率:★)
数据库--事务的ACID--介绍/详解_IT利刃出鞘的博客-CSDN博客
隔离级别是如何实现的?(MVCC)(难度:★★★★ 频率:★★)
MySQL原理--隔离级别的实现方式--MVCC_IT利刃出鞘的博客-CSDN博客
快照读与当前读 是怎样的?(难度:★★★★ 频率:★★)
MySQL原理--隔离级别的实现方式--MVCC_IT利刃出鞘的博客-CSDN博客
索引
索引的种类(难度:★★ 频率:★★★)
数据库使用索引的缺点?(难度:★★ 频率:★★★)
MySQL--索引的优点/缺点/创建索引的原则_IT利刃出鞘的博客-CSDN博客
创建索引的原则(难度:★★ 频率:★★★★)
MySQL--索引的优点/缺点/创建索引的原则_IT利刃出鞘的博客-CSDN博客
索引什么时候会失效(难度:★★ 频率:★★★★★)
MySQL--索引失效--原因/解决方案_IT利刃出鞘的博客-CSDN博客
创建了A, B, C联合索引,使用B,C能否索引(难度:★★★ 频率:★★★★★)
MySQL--联合索引--使用/原理/优化_IT利刃出鞘的博客-CSDN博客
LIKE什么时候走索引,什么时候不走索引?(难度:★★★ 频率:★★★)
MySQL--索引的优化--LIKE模糊查询_IT利刃出鞘的博客-CSDN博客
ORDER BY是否走索引?(难度:★★★ 频率:★★)
MySQL--索引的优化--ORDER BY_IT利刃出鞘的博客-CSDN博客
聚集索引是什么?什么是回表?(难度:★★★★ 频率:★★★★)
MySQL--聚集索引/辅助索引/回表查询/覆盖索引--原理/优化_IT利刃出鞘的博客-CSDN博客
索引原理;为什么采用B+树?(难度:★★★★ 频率:★)
锁
共享锁与独占锁的区别?(难度:★★ 频率:★)
MySQL--行级锁与表级锁_IT利刃出鞘的博客-CSDN博客
什么时候会死锁?(难度:★★★★ 频率:★)
MySQL--死锁的原因及解决方法_IT利刃出鞘的博客-CSDN博客
分库分表
什么时候考虑分库分表?分库分表要考虑什么问题?(难度:★★★ 频率:★)
数据库--分库分表--方案/切分方式/注意的问题_IT利刃出鞘的博客-CSDN博客
原来没分库分表,后期如何分库分表?(难度:★★★★ 频率:★★)
分库分表的中间件(难度:★★ 频率:★★)
- Sharding-JDBC、Mycat
水平分表,有哪些规则?(难度:★★★ 频率:★★★★★)
数据库--分库分表--垂直分表与水平分表_IT利刃出鞘的博客-CSDN博客
如何维护全局的id(难度:★★★ 频率:★★★★★)
分布式--生成数据库全局唯一ID--方法/方案_IT利刃出鞘的博客-CSDN博客
语句
语句类笔试题(难度:★★★ 频率:★)
MySQL--常见业务/笔试题_IT利刃出鞘的博客-CSDN博客
OR与IN的效率?(难度:★★★ 频率:★)
MySQL--SQL语句优化--大全_IT利刃出鞘的博客-CSDN博客
内联结,全(外)联结,左联结,右联结,的含义?(难度:★★ 频率:★)
MySQL--内联结/全联结/左联结/右联结的区别_IT利刃出鞘的博客-CSDN博客
Redis
基本问题
Redis数据类型及其使用场景(难度:★★★ 频率:★★★★★)
Redis--数据类型及其使用场景_IT利刃出鞘的博客-CSDN博客
Redis的数据类型对应的底层结构是怎样的?(难度:★★★★ 频率:★★★)
Redis--原理--数据类型的底层实现_IT利刃出鞘的博客-CSDN博客
Redis为什么很快?(难度:★★ 频率:★★★★★)
Redis--原理--为什么性能高,速度快?_IT利刃出鞘的博客-CSDN博客
Redis是单线程为什么速度依然快?(难度:★★ 频率:★★)
Redis--原理--为什么性能高,速度快?_IT利刃出鞘的博客-CSDN博客
Redis持久化AOF,RDB区别(难度:★★ 频率:★★★★)
持久化:长久下来AOF文件会很大怎么办?(难度:★★★ 频率:★★)
使用重写机制。见:Redis--重写机制(减小AOF文件大小)_IT利刃出鞘的博客-CSDN博客
Redis有哪些原子命令?(难度:★★★ 频率:★)
- Redis所有单个命令都是原子性的。
穿透、无底洞、雪崩、击穿 解决方案?(难度:★★★ 频率:★★★★★)
- Redis--缓存穿透--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客
- Redis--无底洞--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客
- Redis--缓存雪崩--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客
- Redis--缓存击穿--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客
Redis的发布订阅机制及其使用场景(难度:★★★★ 频率:★★)
Redis--发布订阅--原理/使用场景_IT利刃出鞘的博客-CSDN博客
内存回收机制是怎样的?(或者说:淘汰策略)(难度:★★★ 频率:★★★★)
Redis--内存回收机制(淘汰策略)_IT利刃出鞘的博客-CSDN博客
给一个key怎么知道是用的哪种数据类型?(难度:★ 频率:★)
- 用type命令。例如:type key1
为什么使用Redis,不用Memcache和MongoDB?(难度:★★ 频率:★★)
Redis,Memcache,MongoDB三者的区别_IT利刃出鞘的博客-CSDN博客
Redis与数据库如何同步?各个方式的缺点是什么?(难度:★★★ 频率:★★★)
Redis--保证缓存与数据库的一致性--解决方案_IT利刃出鞘的博客-CSDN博客
Redis很慢,如何排查及解决?(难度:★★★★ 频率:★★)
Redis--变慢原因及排查方法_IT利刃出鞘的博客-CSDN博客
多线程操作同一个Key如何保证一致性?(微服务部署多个实例时如何保证一致性?)(难度:★★★★ 频率:★)
Redis--多线程竞争同一key--解决方案_IT利刃出鞘的博客-CSDN博客
秒杀的时候怎么使用Redis?(难度:★★★★ 频率:★★★)
Redis--秒杀的解决方案_IT利刃出鞘的博客-CSDN博客
布隆过滤器原理?什么时候会误判?(难度:★★★★ 频率:★★★)
Redis--布隆过滤器--使用/原理/实例_IT利刃出鞘的博客-CSDN博客
用Redis如何实现延迟队列?(难度:★★★★ 频率:★)
分布式锁
Redis做分布式锁如何处理超时时间?比如:超时时间是5秒,但要执行20秒,相当于没锁住;超时时间是20秒,但只需执行5秒(浪费)(难度:★★★★ 频率:★★★)
- 设置中等长度的时间,线程执行完删除这个值;另起线程,定期去刷新这个值。Redisson的分布式锁就是这个方案,见:Redisson原理--分布式锁--续期/释放/互斥/可重入_IT利刃出鞘的博客-CSDN博客
Redis实现分布式锁,集群环境如何处理主节点宕机这种情况?(难度:★★★★★ 频率:★)
- 使用RedLock红锁算法:若过半的Redis节点能够setnx成功则表示获取锁成功,类似于zk实现分布式锁方式。见:Redisson原理--红锁/Redlock_IT利刃出鞘的博客-CSDN博客
集群
多节点有哪些部署方式?(难度:★★ 频率:★)
- 主从、哨兵、集群(Cluster)
集群不支持事务,如何解决?(难度:★★★★ 频率:★)
Redis集群--介绍/使用/注意事项_IT利刃出鞘的博客-CSDN博客
主从集群中主节点死了以后,是否还能使用?如何解决?(难度:★★★ 频率:★)
- 可以使用哨兵部署,自动故障转移。
读写分离时读写分别在哪个节点(难度:★★ 频率:★)
- 在主节点上写,在从节点上读。
集群(Cluster)
集群(Cluster)如何进行节点通信?(难度:★★★★ 频率:★★)
Redis集群--节点通信的过程(原理)_IT利刃出鞘的博客-CSDN博客
集群(Cluster)如何进行扩展(伸缩)?(难度:★★★ 频率:★★)
Redis集群--集群伸缩过程(原理)_IT利刃出鞘的博客-CSDN博客
集群(Cluster)如何进行故障转移?(难度:★★★★ 频率:★★)
Redis集群--故障转移过程(原理)_IT利刃出鞘的博客-CSDN博客
设计模式
项目里用到了哪些设计模式,怎么用的?(难度:★★★ 频率:★★★★★)
Java设计模式--在项目中的应用_IT利刃出鞘的博客-CSDN博客
设计模式的原则(难度:★★ 频率:★)
- 这个我老是记不住,我用这个口诀:单开里依接合。对应每个原则的第一个字。
- 见:Java设计模式--原则_IT利刃出鞘的博客-CSDN博客
设计模式的类别(难度:★★ 频率:★)
Java设计模式--分类及功能_IT利刃出鞘的博客-CSDN博客
单例模式的写法?(难度:★★ 频率:★★★★)
Java设计模式--单例模式--使用/详解/实例_IT利刃出鞘的博客-CSDN博客
手写双重检验单例(为什么用volatile,为什么两次if判断)(难度:★★★ 频率:★★★)
Java设计模式--单例模式--使用/详解/实例_IT利刃出鞘的博客-CSDN博客
静态代理与动态代理区别?(难度:★★★ 频率:★★★★★)
Java设计模式--代理模式--静态代理/动态代理--使用/详解/实例_IT利刃出鞘的博客-CSDN博客
框架
Spring
IOC
Spring循环依赖解决方法及原理(难度:★★★★ 频率:★★★★)
Spring的循环依赖用的是三级缓存,为什么不是两级?(难度:★★★★ 频率:★★)
FactoryBean和BeanFactory区别(难度:★★★★ 频率:★★)
BeanFactory和ApplicationContext区别?(难度:★★★★ 频率:★)
Spring--ApplicationContext--使用/教程/原理_IT利刃出鞘的博客-CSDN博客
bean的生命周期是怎样的(难度:★★★ 频率:★)
Spring--Bean生命周期--流程/原理--SpringBoot_IT利刃出鞘的博客-CSDN博客
Spring几种scope区别(难度:★★★ 频率:★)
Spring--Bean的作用域(scope)--使用/详解_IT利刃出鞘的博客-CSDN博客
Spring容器的生命周期是怎样的?(难度:★★★ 频率:★)