0%

高级开发进阶

高级开发进阶

Java基础

  • Java泛型
  • 代理
  • 反射
  • JVM类加载机制
    • 类加载过程:加载,链接(验证,准备,解析),初始化。
    • 加载方式:双亲委派模型
    • JVM 加载 Class 文件的原理机制,显示加载(New),隐式加载(反射)
  • 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 Set
  • Redis skiplist实现(sorted set底层实现)
  • Redis为什么快,内存数据库,epoll多路复用
  • Redis集群,Redis Cluster通信协议
    • Redis集群架构原理
  • Kafka架构原理,消费模型,消息丢失,消息重复消费
    • kafka架构原理,broker宕掉之后集群
    • 消息重复消费,关闭自动offset
    • 消息丢失
  • kafkaRabbitMq区别
    • MQ采用的是push模式,kafka采用的是pull模式
    • kafka采用zookeeper负载均衡,MQ需要担loadbalance
    • comsumer group
  • Zookeeper节点类型,zk选举,zk zab协议,zk分布式事务
    • 节点类型,持久化节点,持久化有序节点,瞬时节点,瞬时有序节点
    • zab协议
    • zk集群选举算法,投票算法
    • zk集群数量为单数
  • Mysql事务隔离级别,ACID
  • Mysql索引,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 cloudDubbo差异对比
  • 服务降级
  • 缓存穿透,缓存雪崩
  • 服务结构设计原则
    • 单一原则
    • 解偶原则
  • 内存实现生产者消费者模式

算法

  • 有序链表合并
  • 链表反转
  • 二叉树中序遍历
  • 环形链表,判断方法
    • 两指针,快慢指针
  • 最长不重复子串
    • 滑动窗口,双指针滑动

新型技术

  • docker容器
  • Kubernates

概念

  • 源码阅读情况
  • 未来规划,独立owner的技术和业务
  • 和产品的难点是沟通,达成共识