学习训练 / 后端背诵

7-Day Backend Recall

像读 Markdown 一样背诵,点击题目直接看答案。

完整收录七天背诵计划。点击任意蓝绿色题目即可弹出对应答案,答案来自面试题目录下匹配的 Markdown 文档。

8

唯一文档

87

可弹出答案

0

未匹配题目

总计划·Markdown 文档
返回顶部 ↑

七天背诵总计划

目标:7 天完成首轮背诵,形成“能口述、能追问、能关联”的面试题知识网。

背诵规则

  • 每题按“三段式”:一句话定义 -> 底层原理 -> 场景和坑。
  • 当天新题先看速记,再遮住答案口述。
  • 每天最后 20 分钟只复盘错题和薄弱题。
  • 第 3 天复盘第 1 天,第 5 天复盘第 2-3 天,第 7 天总复盘。

每日入口

  • [[Day1 - Java 基础 + 集合]]
  • [[Day2 - 并发基础 + 锁 + CAS]]
  • [[Day3 - 线程池 + JVM]]
  • [[Day4 - Spring 全家桶]]
  • [[Day5 - MyBatis + MySQL]]
  • [[Day6 - Redis + 网络 + 分布式]]
  • [[Day7 - 算法场景 + 总复盘]]

自测打分

  • 3 分:能完整解释并回答追问。
  • 2 分:能说主干,但原理或场景不稳。
  • 1 分:只记得关键词。
  • 0 分:完全不会。
Day 1·Markdown 文档
返回顶部 ↑

Day1 - Java 基础 + 集合

今日目标

先建立 Java 基本概念、对象语义、集合底层结构。

今日题目

  • [[==和equals()的区别]]
  • [[反射的优缺点]]
  • [[浮点型为什么不能用来表示金额]]
  • [[介绍一下SPI]]
  • [[快速排序]]
  • [[普通类和抽象类的区别]]
  • [[深拷贝和浅拷贝]]
  • [[什么是面向对象]]
  • [[为什么重写equals()就一定要重写hashCode()方法]]
  • [[重写equals()方法后为什么要重写hashCode()方法]]
  • [[Array.sort排序]]
  • [[final关键字的作用]]
  • [[finally块一定会被执行吗]]
  • [[Integer和int的区别]]
  • [[String,StringBuilder,StringBuffer的区别]]
  • [[ArrarList和LinkedList的区别]]
  • [[ConcurrentHashMap和HashMap的区别]]
  • [[ConcurrentHashMap如何保证线程安全的]]
  • [[HashMap和HashSet有什么区别]]
  • [[HashMap和HashTable的区别]]
  • [[LinkedHashMap]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[==和equals()的区别]]
[[反射的优缺点]]
[[浮点型为什么不能用来表示金额]]
[[介绍一下SPI]]
[[快速排序]]
[[普通类和抽象类的区别]]
[[深拷贝和浅拷贝]]
[[什么是面向对象]]
[[为什么重写equals()就一定要重写hashCode()方法]]
[[重写equals()方法后为什么要重写hashCode()方法]]
[[Array.sort排序]]
[[final关键字的作用]]
[[finally块一定会被执行吗]]
[[Integer和int的区别]]
[[String,StringBuilder,StringBuffer的区别]]
[[ArrarList和LinkedList的区别]]
[[ConcurrentHashMap和HashMap的区别]]
[[ConcurrentHashMap如何保证线程安全的]]
[[HashMap和HashSet有什么区别]]
[[HashMap和HashTable的区别]]
[[LinkedHashMap]]
Day 2·Markdown 文档
返回顶部 ↑

Day2 - 并发基础 + 锁 + CAS

今日目标

重点背 volatile/synchronized/CAS/AQS/ThreadLocal。

今日题目

  • [[悲观锁和乐观锁的区别]]
  • [[进程和线程的区别]]
  • [[什么是可重入锁]]
  • [[什么是守护线程]]
  • [[谈谈你对AQS的理解]]
  • [[线程池的核心参数]]
  • [[线程池的拒绝策略]]
  • [[线程池底层的工作原理]]
  • [[线程池有哪几种状态]]
  • [[线程创建:继承Thread类和实现Runnable接口]]
  • [[线程的6种状态]]
  • [[线程的run()和start()有什么区别]]
  • [[一个线程调用两次start方法会有问题吗]]
  • [[CAS操作]]
  • [[CAS中的ABA问题如何解决]]
  • [[synchronized和volatile的区别]]
  • [[ThreadLocal介绍]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[悲观锁和乐观锁的区别]]
[[进程和线程的区别]]
[[什么是可重入锁]]
[[什么是守护线程]]
[[谈谈你对AQS的理解]]
[[线程池的核心参数]]
[[线程池的拒绝策略]]
[[线程池底层的工作原理]]
[[线程池有哪几种状态]]
[[线程创建:继承Thread类和实现Runnable接口]]
[[线程的6种状态]]
[[线程的run()和start()有什么区别]]
[[一个线程调用两次start方法会有问题吗]]
[[CAS操作]]
[[CAS中的ABA问题如何解决]]
[[synchronized和volatile的区别]]
[[ThreadLocal介绍]]
Day 3·Markdown 文档
返回顶部 ↑

Day3 - 线程池 + JVM

今日目标

线程池流程必须能画出来,JVM 重点背类加载和 JMM。

今日题目

  • [[线程池的核心参数]]
  • [[线程池的拒绝策略]]
  • [[线程池底层的工作原理]]
  • [[线程池有哪几种状态]]
  • [[execute和submit的区别]]
  • [[介绍类加载过程,什么是双亲委派]]
  • [[什么是Java内存模型(JMM)]]
  • [[双亲委派机制]]
  • [[JDK,JRE,JVM的区别]]
  • [[JDK动态代理为什么只能代理有接口的类]]
  • [[JVM的四种垃圾回收算法]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[线程池的核心参数]]
[[线程池的拒绝策略]]
[[线程池底层的工作原理]]
[[线程池有哪几种状态]]
[[execute和submit的区别]]
[[介绍类加载过程,什么是双亲委派]]
[[什么是Java内存模型(JMM)]]
[[双亲委派机制]]
[[JDK,JRE,JVM的区别]]
[[JDK动态代理为什么只能代理有接口的类]]
[[JVM的四种垃圾回收算法]]
Day 4·Markdown 文档
返回顶部 ↑

Day4 - Spring 全家桶

今日目标

IOC、Bean 生命周期、循环依赖、SpringMVC 流程是高频。

今日题目

  • [[@Resource和@Autowired]]
  • [[过滤器和拦截器的区别]]
  • [[介绍下SpringIOC的工作流程]]
  • [[谈谈对SpringMVC的理解]]
  • [[为什么有些公司禁止使用@Transactional声明式事务]]
  • [[Spring解决循环依赖问题]]
  • [[Spring是如何整合MyBatis将Mapper接口注册为Bean的原理]]
  • [[spring循环依赖]]
  • [[Spring中Bean的生命周期]]
  • [[SpringBoot和传统Spring有什么区别]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[@Resource和@Autowired]]
[[过滤器和拦截器的区别]]
[[介绍下SpringIOC的工作流程]]
[[谈谈对SpringMVC的理解]]
[[为什么有些公司禁止使用@Transactional声明式事务]]
[[Spring解决循环依赖问题]]
[[Spring是如何整合MyBatis将Mapper接口注册为Bean的原理]]
[[spring循环依赖]]
[[Spring中Bean的生命周期]]
[[SpringBoot和传统Spring有什么区别]]
Day 5·Markdown 文档
返回顶部 ↑

Day5 - MyBatis + MySQL

今日目标

索引、MVCC、事务隔离、#{} 和 ${} 是重点。

今日题目

  • [[mybatis的缓存机制]]
  • [[Mybatis是如何进行分页的]]
  • [[Mybatis中#{}和${}的区别是什么]]
  • [[内连接、左连接、右连接的区别]]
  • [[事务的四个特性以及四个隔离级别]]
  • [[为什么数据库字段建议设置位not null]]
  • [[为什么SQL语句不要使用过多的join]]
  • [[在亿级别的数据库中,快速查询uid的4的数据,其中uid=4的数据有很多]]
  • [[B树和B+树的区别]]
  • [[Mysql的索引]]
  • [[Mysql聚簇索引]]
  • [[Mysql三大范式]]
  • [[MYSQL中的MVCC]]
  • [[Redis和Mysql如何保证数据一致性]]
  • [[sql索引失效]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[mybatis的缓存机制]]
[[Mybatis是如何进行分页的]]
[[Mybatis中#{}和${}的区别是什么]]
[[内连接、左连接、右连接的区别]]
[[事务的四个特性以及四个隔离级别]]
[[为什么数据库字段建议设置位not null]]
[[为什么SQL语句不要使用过多的join]]
[[在亿级别的数据库中,快速查询uid的4的数据,其中uid=4的数据有很多]]
[[B树和B+树的区别]]
[[Mysql的索引]]
[[Mysql聚簇索引]]
[[Mysql三大范式]]
[[MYSQL中的MVCC]]
[[Redis和Mysql如何保证数据一致性]]
[[sql索引失效]]
Day 6·Markdown 文档
返回顶部 ↑

Day6 - Redis + 网络 + 分布式

今日目标

缓存一致性、三次握手、CAP/BASE、微服务优缺点。

今日题目

  • [[Redis主从复制的原理]]
  • [[Zset底层的数据结构]]
  • [[三次握手的流程]]
  • [[同步和异步有什么区别]]
  • [[BIO,NIO,AIO的区别]]
  • [[Cookie和Session的区别]]
  • [[HTTP和HTTPS的区别]]
  • [[JSP九大内置对象]]
  • [[jsp怎么防止重复提交]]
  • [[对微服务的理解]]
  • [[数据量多大的时候要开始分表分库]]
  • [[雪花算法实现]]
  • [[Base理论]]
  • [[CAP原则]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[Redis主从复制的原理]]
[[Zset底层的数据结构]]
[[三次握手的流程]]
[[同步和异步有什么区别]]
[[BIO,NIO,AIO的区别]]
[[Cookie和Session的区别]]
[[HTTP和HTTPS的区别]]
[[JSP九大内置对象]]
[[jsp怎么防止重复提交]]
[[对微服务的理解]]
[[数据量多大的时候要开始分表分库]]
[[雪花算法实现]]
[[Base理论]]
[[CAP原则]]
Day 7·Markdown 文档
返回顶部 ↑

Day7 - 算法场景 + 总复盘

今日目标

查缺补漏,重点练项目化表达和追问。

今日题目

  • [[在DCL单例写法中,为什么主要做两次检查]]
  • [[linux基本命令]]
  • [[tomcat优化]]

今日流程

  1. 快速扫一遍所有题目的“速记”。
  2. 每题用 60 秒口述答案。
  3. 对答不出来的题标记为 status: 薄弱
  4. 晚上只复盘薄弱题,并补充自己的项目例子。

今日自测

题目分数 0-3问题点是否复盘
[[在DCL单例写法中,为什么主要做两次检查]]
[[linux基本命令]]
[[tomcat优化]]