高级开发进阶
Java基础
- Java泛型
- 代理
- 反射
- JVM类加载机制
HashMap
,实现方式,resize过程ConcurrentHashMap
CAS,volatile sizeCtl- java8 新特性,
Stream
流,java9 新特性 - 组赛队列实现,
ReentrantLock
TCP
协议,三次握手,四次挥手过程HTTP
协议,超文本传输协议- 200 Ok
- 400 Bad Request 客户端语法错误
- 401 Unauthorized 未授权
- 403 Forbidden 禁止访问
- 404 Not Found 资源未找到
- 500 Internal Server Error 服务器错误
- 503 Server Unavailable 服务不可用
IO
流- select io
- epoll工作原理
JVM
- JVM内存模型,堆,本地方法栈,JVM虚拟机栈,程序计算器,本地方法区
- 垃圾回收算法,引用计数,可达性分析,标记清除,复制算法,标记整理
- JVM垃圾回收过程,分代回收原则,Young,Old;
- Young区又分为Eden区和survivor,survivor又分为survivor0,survivor1;Young区采用复制算法回收
- 回收过程中先将eden区存活对象复制到一个survivor0区,然后清空eden区
- 当survivor0区也存放满了时,则将eden区和survivor0区存活对象复制到另一个survivor1区,然后清空eden和这个survivor0区
- 此时survivor0区是空的,然后将survivor0区和survivor1区交换,即保持survivor1区为空
- survivor1内存不够时,直接将对象放入老年代
- 老年代主要采用复制整理算法回收
- 持久代(Permanent Generation)为方法区回收
CMS
工作原理
- 默认垃圾回收器
ParNew
,CMS
G1
- JVM调优命令及工具
jps
查看hotspot虚拟机进程jstat
虚拟机运行状态jmap
用于生成heap dump文件jstack
生成java虚拟机当前时刻的线程快照jinfo
实时查看和调整虚拟机运行参数- JDK自带
jconsole , jvisualvm
多线程,并发
Synchronized
原理,锁,锁原理,重入锁- 原理,markword对象标记,monitor监控标记
- 锁升级过程
- 无状态锁
- 偏向锁,markword,cas实现
- 轻量级锁,自旋锁
- 重量级锁,
ReentrantLock
原理ThreadLocal
原理- java
JUC
- java线程模型
- 线程生命周期,New,Runnable,Running,Blocked,Dead
- AQS原理
- 维护一个共享资源state,通过内置的FIFO来完成获取资源线程的排队工作
spring容器
Spring
IoC
DI
Spring AOP
- 代理实现
- JDK proxy 实现接口采用该代理
- CGLIB 未实现接口采用
Spring boot
启动Spring bean
生命周期,实例化,属性赋值,初始化,销毁Spring
事务传播级别- Spring BeanFactory
- Spring FactoryBean
中间件
Redis
数据结构,String,Hash, List, Set,Sorted SetRedis
skiplist实现(sorted set底层实现)Redis
为什么快,内存数据库,epoll多路复用Redis
集群,Redis Cluster
通信协议- Redis集群架构原理
Kafka
架构原理,消费模型,消息丢失,消息重复消费- kafka架构原理,broker宕掉之后集群
- 消息重复消费,关闭自动offset
- 消息丢失
kafka
和RabbitMq
区别- MQ采用的是push模式,kafka采用的是pull模式
- kafka采用zookeeper负载均衡,MQ需要担loadbalance
- comsumer group
Zookeeper
节点类型,zk选举,zk zab协议,zk分布式事务- 节点类型,持久化节点,持久化有序节点,瞬时节点,瞬时有序节点
- zab协议
- zk集群选举算法,投票算法
- zk集群数量为单数
Mysql
事务隔离级别,ACIDMysql
索引,B树,B+树区别- Mysql索引为什么采用B+树而不是红黑树
- Mysql索引存储方式,磁盘存储
- mysql读写锁
- mysql索引检索过程
Mysql
组合索引,聚簇索引,非聚簇索引,主键索引Mybatis
缓存,两级缓存,一级sqlsession
缓存,二级mapper缓存
分布式
- 分布式事务实现(TCC,RocketMQ)
- TCC
- 基于消息队列的分布式一致性
- 两阶段提交协议
- 三阶段提交协议
- 分布式锁实现(Redis ,zk)
- 幂等
Hash
一致性
设计模式
- 代理模式 ,适配器模式,装饰着模式,三者区别
Spring
中使用到的设计模式AOP
涉及到的设计模式
操作系统&磁盘
架构
Dubbo
架构设计,dubbo十层架构- Service层,服务提供方和消费方对应的接口和实现
- Config层
- Proxy层
- Registry
- Cluster
- Monitor
- Protocol,远程调用,封装rpc调用
- Exchange
- Transport
- Serialize
Spring cloud
和Dubbo
差异对比- 服务降级
- 缓存穿透,缓存雪崩
- 服务结构设计原则
- 单一原则
- 解偶原则
- 内存实现生产者消费者模式
算法
- 有序链表合并
- 链表反转
- 二叉树中序遍历
- 环形链表,判断方法
- 两指针,快慢指针
- 最长不重复子串
- 滑动窗口,双指针滑动
新型技术
- docker容器
- Kubernates
概念
- 源码阅读情况
- 未来规划,独立owner的技术和业务
- 和产品的难点是沟通,达成共识