俗话说的好:
每一个程序员应该都想着如何快速提升自己(反正我是这样想的),从程序员进阶到架构师再到技术专家再到CTO 。当然这其中需要大量的知识储备,是一个不断学习的过程,话不多说下面我直接上图。
Java全栈核心知识点整理(PDF)
Spring 原理
Netty 与RPC
RabbitMQ
负载均衡
数据库
数据结构与算法
这本Java全栈PDF一共283页,由于篇幅限制无法将全部内容展示出来
Java后端核心知识点整理(Word)
Spring
-
Spring框架的七大模块
-
Bean定义5种作用域
-
spring ioc初始化流程?
-
BeanDefinition加载流程?
-
DI依赖注入流程? (实例化,处理Bean之间的依赖关系)
-
依赖注入怎么处理bean之间的依赖关系?
-
Bean的生命周期?
-
Spring的IOC注入方式
-
怎么检测是否存在循环依赖?
-
Spring如解决Bean循环依赖问题?
-
Spring 中使用了哪些设计模式?
AOP 核心概念
-
解释一下AOP
-
AOP 主要应用场景有
-
AOP源码分析
-
AOP使用哪种动态代理?
-
jdk动态代理
-
动态代理与静态代理区别
-
CGLIB与JDK动态代理区别
-
SpringMVC
-
springMVC流程:
-
Mybatis
-
Mybatis原理
-
Mybatis一级缓存与二级缓存
-
Zookeeper+eureka+springcloud
-
SpringBoot启动流程
-
Spring Boot 的核心注解
-
SpringBoot常用starter都有哪些
-
Spring Boot 的核心配置文件
-
Zuul与Gateway区别
-
Zuul原理分析
-
Gateway原理分析
-
Zookeeper 工作原理(待查)
-
zoo与eur区别
-
Hystrix原理(待查)
-
为什么需要hystrix熔断
-
微服务优缺点
-
eureka自我保护机制
-
MQ对比
JAVA基础
-
AVL树与红黑树(R-B树)的区别与联系
-
为啥redis zset使用跳跃链表而不用红黑树实现
-
JAVA基本数据类型
-
IO与NIO
-
异常类
-
LVS(4层与7层)原理
-
StringBuilder与StringBuffer
-
interrupt/isInterrupted/interrupt区别
-
sleep与wait区别
-
CountDownLatch和CyclicBarrier区别
-
终止线程方法
-
ThreadLocal的原理和应用
-
threadLocal 内存泄漏问题
-
如果我们要获取父线程的ThreadLocal值呢
-
线程状态
-
Java中的线程池是如何实现的?
-
如果线程池中的一个线程运行时出现了异常,会发生什么
-
线程池原理
-
拒绝策略
-
newFixedThreadPool (固定数目线程的线程池)
-
newCachedThreadPool(可缓存线程的线程池)
-
newSingleThreadExecutor(单线程的线程池)
-
newScheduledThreadPool(定时及周期执行的线程池)
Java锁相关
-
synchronized实现原理
-
ReentrantLock 是如何实现可重入性的 ?
-
ReentrantLock如何避免死锁?
-
tryLock 和 lock 和 lockInterruptibly 的区别
-
CountDownLatch和CyclicBarrier的区别是什么
-
synchronized与ReentrantLock区别
-
什么是信号量Semaphore
-
Semaphore 应用
-
可重入锁概念
ReentrantLock原理(CAS+AQS)
-
CAS+AQS队列来实现
-
AQS 原理
-
AQS两种资源共享方式
-
CAS原理
-
公平锁与分公平锁
-
4种锁状态
-
轻量级锁与偏向锁的区别
-
自旋锁升级到重量级锁条件
-
读写锁了解嘛,知道读写锁的实现方式嘛
-
zookeeper实现分布式锁
-
volatile变量
-
volatile如何保证线程间可见和避免指令重排
JVM
-
jre、jdk、jvm的关系
-
JVM内存模型
-
对象4种引用
-
对象的构成:
-
如果判断一个对象是否存活
-
java是根据什么来执行可达性分析的:
-
JVM 类加载顺序
-
JVM三种类加载器
-
双亲委派机制
-
双亲委派模型有啥作用
-
如何打破双亲委派模型?
-
双亲委派机制缺陷?
-
导致fullGC的原因
-
堆外内存的优缺点
-
JVM七种垃圾收集器
-
arthas 监控工具
-
定位频繁full GC,堆内存满 oom
-
G1垃圾回收器(重点)
-
什么时候发生Full GC呢?
-
那为什么不在引用赋值语句处直接更新RS呢?
-
线程本地分配缓冲区(TLAB:Thread Local Allocation Buffer)?
-
PLAB:Promotion Thread Local Allocation Buffer
-
OOM问题定位方法
DUBBO
-
dubbo流程
-
Dubbo推荐使用什么序列化框架,还有哪些?
-
Dubbo默认使用的是什么通信框架,还有哪些?
-
Dubbo有哪几种负载均衡策略,默认是哪种?
-
RPC流程
-
服务暴露、服务引用、服务调用(TODO)
Redis
-
redis单线程为什么执行速度这么快?
-
Redis数据结构底层实现
-
redis事务
-
redis事务的实现特征
-
Redis的同步机制?
-
redis集群模式性能优化
-
Redis集群方案
-
集群不可用场景
-
redis 最适合的场景
-
缓存淘汰策略
-
redis过期key删除策略
-
缓存雪崩以及处理办法
-
缓存击穿原因以及处理办法
-
redis阻塞原因
-
hot key出现造成集群访问量倾斜解决办法
-
Redis分布式锁
-
Redis如何做持久化
-
对方追问那如果突然机器掉电会怎样?
-
redis锁续租问题?
-
bgsave的原理是什么?
-
RDB与AOF区别
-
1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
-
如何使用Redis做异步队列?
-
可不可以不用sleep呢?
-
能不能生产一次消费多次呢?
-
pub/sub有什么缺点?
-
redis如何实现延时队列?
-
为啥redis zset使用跳跃链表而不用红黑树实现?
MySQL
-
数据库三范式
-
数据库主从复制原理
-
复制方式分类
-
存储引擎
-
聚集索引
-
非聚集索引
-
使用聚集索引为什么查询速度会变快?
-
建立聚集索引有什么需要注意的地方吗?
-
InnoDB 表对主键生成策略是什么样的?
-
非聚集索引最多可以有多少个?
-
BTree 与 Hash 索引有什么区别?
-
数据库索引优缺点
-
索引的底层实现是B+树,为何不采用红黑树,B树?
-
索引失效条件
-
数据库事务特点
-
七种事务传播行为
-
产生死锁的四个必要条件
-
@Transaction
分布式事务
-
XA方案
-
TCC方案
-
可靠消息最终一致性方案
-
最大努力通知性(定期校对)
-
Seata(阿里)
网络
-
TCP和UDP的比较
-
TCP三次握手
-
TCP四次挥手
-
为什么要进行第三次握手
JDK1.8新特性
-
Lambda表达式
-
default关键字
-
新时间日期APILocalDate | LocalTime | LocalDateTime
-
JDK1.7与JDK1.8 ConcurrentHashMap对比
-
JDK1.8使用synchronized来代替重入锁ReentrantLock?
-
JDK1.9新特性
-
模块系统
-
集合工厂方法
-
改进的 Stream API
-
改进的 Javadoc
集合
-
java的集合框架有哪几种?
-
List你使用过哪些
-
你知道vector和ArrayList和linkedList的区别嘛
-
hashMap和hashTable和ConcurrentHashMap的区别
-
说说你了解的hashmap吧
-
concurrentHashMap呢
-
concurrentHashMap的扩容方式
-
hashMap的put方法的过程
-
为什么修改hashcode方法要修改equals
-
TreeMap了解嘛
-
LinkedHashMap了解嘛