1 JAVA 基础
1.1 算法
直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序
二叉查找树、红黑树、B树、B+树、LSM树
BitSet、LRU、LFU、KMP
1.2 基础
字符串常量池的迁移
string的intern方法的内部细节,jdk1.6和jdk1.7的变化
equals和hashcode
泛型、异常、反射
hash冲突的解决办法
foreach循环的原理
static、final、transient等关键字的作用
volatile关键字的底层实现原理
Collections.sort方法使用的是哪种排序方法
Future接口,常见的线程池中的FutureTask实现等
1.3 设计模式与设计原则
单例模式
工厂模式
装饰者模式
观察者设计模式
ThreadLocal设计模式
1.4 正则表达式
捕获组和非捕获组
贪婪,勉强,独占模式
1.5 java内存模型以及垃圾回收算法
类加载机制,也就是双亲委派模型
java内存分配模型(默认HotSpot)
线程共享的:堆区、永久区 线程独享的:虚拟机栈、本地方法栈、程序计数器
内存分配机制:年轻代(Eden区、两个Survivor区)、年老代、永久代以及他们的分配过程
happens-before规则
指令重排序、内存栅栏
Java 8的内存分代改进
垃圾回收算法(标记-清除\复制算法\标记整理)
常用垃圾收集器(新生代\老年代)
常用gc的参数
常用工具(jps、jstat、jmap、jstack、图形工具jConsole、Visual VM、MAT、jprofiler)
1.6 锁以及并发容器的源码
synchronized和volatile理解
Unsafe类的原理,使用它来实现CAS。因此诞生了AtomicInteger系列等
CAS可能产生的ABA问题的解决,如加入修改次数、版本号
同步器AQS的实现原理
独占锁、共享锁;可重入的独占锁ReentrantLock、共享锁 实现原理
公平锁和非公平锁
读写锁 ReentrantReadWriteLock的实现原理
LockSupport工具
Condition接口及其实现原理
HashMap、HashSet、ArrayList、LinkedList、HashTable、ConcurrentHashMap、TreeMap的实现原理
HashMap的并发问题
ConcurrentLinkedQueue的实现原理
Fork/Join框架
CountDownLatch和CyclicBarrier
1.7 线程池源码
内部执行原理
各种线程池的区别
2 web方面
2.1 SpringMVC的架构设计
SpringMVC对请求的整体处理流程
DispatcherServlet、容器、组件三者之间的关系
SpringBoot
2.2 SpringAOP源码
AOP的实现分类
AOP实现方式(AOP联盟、aspectj、jboss AOP、Spring自身实现的AOP、Spring嵌入aspectj)
SpringAOP的调用流程
SpringAOP自定义实现(ProxyFactoryBean\aspectj)
2.3 Spring事务及分布式事务Jotm Atomikos
jdbc事务存在的问题
事务的挂起和恢复的原理
事务的传播属性
Spring如何定义事务体系的接口 以及如何融合jdbc事务和Hibernate事务的
Spring事务拦截器TransactionInterceptor全景
事务代码同业务代码分离的实现(AOP+ThreadLocal)
X/Open DTP模型,两阶段提交,JTA接口定义
Jotm、Atomikos的实现原理
PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED的实现原理以及区别
事务模型
2.4 数据库隔离级别
读未提交、读已提交、可重复读、串行化
2.5 数据库
数据库性能的优化
死锁(Record Locks、Gap Locks、Next-Key Locks)
insert into select语句的加锁情况
事务的ACID特性概念
innodb的MVCC理解
undo redo binlog
2.6 ORM框架: mybatis
2.7 SpringSecurity、shiro、SSO
2.8 datasource
(c3p0\druid\jdbcTemplate)
2.9 http协议&https实现原理
http 三次握手与四次挥手
http状态码 301 302 405
https实现原理
3 分布式方面
3.1 ZooKeeper
客户端架构
服务器端单机版和集群版,对应的请求处理器
集群版session的建立和激活过程
Leader选举过程及实现
ZAB协议实现一致性原理
实现分布式锁、分布式ID分发器
事务日志和快照文件的详细解析
3.2 序列化和反序列化框架
Avro研究
Thrift研究
Protobuf研究
Protostuff研究
Hessian
3.3 RPC框架dubbo源码
dubbo扩展机制的实现(对比SPI机制)
服务的发布过程
服务的订阅过程
RPC通信的设计
3.4 NIO模块(Netty和Mina、thrift源码)
TCP握手和断开及有限状态机
backlog
BIO NIO
阻塞/非阻塞的区别、同步/异步的区别
阻塞IO、非阻塞IO、多路复用IO、异步IO
Reactor线程模型
jdk的poll、epoll与底层poll、epoll的对接实现
Netty自己的epoll实现
内核层poll、epoll的大致实现
epoll的边缘触发和水平触发
Netty的EventLoopGroup设计
Netty的ByteBuf设计
Netty的ChannelHandler
Netty的零拷贝
Netty的线程模型
3.5 消息队列kafka、RocketMQ、Notify、Hermes、flume
kafka的文件存储设计
kafka的副本复制过程
kafka副本的leader选举过程
kafka的消息丢失问题
kafka的消息顺序性问题
kafka的isr设计和过半对比
Notify、RocketMQ的事务设计
基于文件的kafka、RocketMQ和基于数据库的Notify和Hermes
设计一个消息系统要考虑哪些方面
丢失消息、消息重复、高可用等话题
3.6 数据库的分库分表mycat
3.7 NoSql数据库mongodb
3.8 缓存系统memcached redis
memcached redis 的区别
redis对客户端的维护和管理,读写缓冲区
redis事务的实现
Jedis客户端的实现
JedisPool以及ShardedJedisPool的实现
redis epoll实现,循环中的文件事件和时间事件
redis的RDB持久化,save和bgsave
redis AOF命令追加、文件写入、文件同步到磁盘
redis AOF重写,为了减少阻塞时间采取的措施
redis的LRU内存回收算法
redis的master slave复制
redis的sentinel高可用方案
redis的cluster分片方案
3.9 web服务器tomcat、ngnix的设计原理
tomcat的整体架构设计
tomcat对通信的并发控制
http请求到达tomcat的整个处理流程
3.10 ELK日志实时处理查询系统(Elasticsearch、Logstash、Kibana)
3.11 服务化方面
SOA与微服务
服务的合并部署、多版本自动快速切换和回滚
服务的治理:限流、降级
服务的线性扩展(Redis的扩展:一致性hash,迁移工具)
服务链路监控和报警:CAT、Dapper、Pinpoint
3.12 Spring Cloud
Spring Cloud Zookeeper:用于服务注册和发现
Spring Cloud Config:分布式配置
Spring Cloud Netflix Eureka:用于rest服务的注册和发现
Spring Cloud Netflix Hystrix:服务的隔离、熔断和降级
Spring Cloud Netflix Zuul:动态路由,API Gateway
3.13 分布式事务
JTA分布式事务接口定义,对此与Spring事务体系的整合
TCC分布式事务概念
TCC分布式事务实现框架案例1:tcc-transaction
TCC分布式事务实现框架案例2:ByteTCC
3.14 一致性算法
raft
ZooKeeper
paxos
--------------------------------------------------------------------------------
一致性算法
paxos算法
Raft算法
CAP原理
FLP原理
ACID原则
hash一致
ZAB协议
共识算法
拜占庭算法
PoW
BFT
PoS
安全算法
hash算法
加密算法
数字签名
数字证书
merkle树
零和证明
--------------------------------------------------------------------------------
1 java基础
2 jvm虚拟机
3 架构
4 网络协议
5 liunx 网络性能优化实战
6 nginx 原理系列
--------------------------------------------------------------------------------
转自
https://maimai.cn/article/detail?fid=103467612