知识整理总结
一、Java基础篇
1、锁
synchronized和ReentrantLock区别,编译后区别,分布式锁(zk、redis)
扩充:ReentrantReadWriteLock、StampedLock等。
2、多线程
(1) Thread 和 Runnable基础理解,各方法含义
(2)线程池原理,各参数,各类型线程池特点,实现线程池的几种方式,配合线程池queue的几种队列,队列满了几种处理方式。看Executors类。
(3)callable
(4)多线程同时启动,按指定顺序打印输出实现
(5)Object wait方法和Thread.sleep方法,区别、特点
3、集合
(1)HashMap实现原理,高并发时存在的问题,构造函数参数,扩容rehash,hash算法,和HashTable区别,ConcurrentHashMap对比,解释红黑树
(2)ConcurrentHashMap实现原理,size实现方式
(3)List有哪些,array和linked区别优缺点,扩容方式
(4)集合中按指定对象排序的几种方式
4、设计模式
(1)用过哪些设计模式及场景
5、JVM
(1)jvm运行时数据图,《深入理解java虚拟机》第一章
(2)结合图解释gc,如:gc算法,垃圾回收器,新生代老年代回收特点等,《深入理解java虚拟机》第二章
(3)线上配置,使用哪种回收器
(4)减少full gc时间方式
6、其它
(1) Integer 100 200 问题,看Integer源码
(2)Object 哪些方法,为什么要有
(3)什么场景需要重写eques和hashcode
(4) jdk各版本变动
(5)Java方法无限递归问题
(6)哪些场景会导致OOM
(7)线程池多线程计算,主线程如何合并返回数据。几种方法
二、Java框架篇
1、spring
(1)aop、ioc实现原理,有哪些好处和应用
(2)jdk proxy和cglib 动态代理区别
(3)如何解决初始化Bean循环依赖问题
(4)springMVC 常用注解,rest风格获取参数方式
2、Mybatis
3、dubbo
(1)源码结构描述
(2)如何实现交给spring托管
(3)spi、advice标签
(4)dubbo异常处理
(5)rpc协议,序列化、反序列化
三、常用工具篇
1、redis
(1)常用数据结构
(2)aof
(3)实现分布式锁
2、zookeeper
(1)paxos原理
(2)分布式锁
(3)集群选主流程
(4)dubbo结合zk原理,注册与发现
(5)节点类型:持久、临时,特点
(6)网络抖动是否会有影响
3、mysql
(1)索引:聚簇索引、覆盖索引,多字段联合索引时,where条件字段不完全匹配联合索引是否会选用联合索引,原因
(2)SQL查询优化方式,
(3)基础SQL:insert、update、delete、select
(4)mysql各中存储引擎特点,innodb、myISAM
(5)数据库隔离级别
四、算法、数据结构、通信协议篇
1、算法
(1)排序,复杂度
(2)一致性hash
2、数据结构
(1)数组、链表、队列、map等
(2)单链实现反转方法
3、通信协议
(1)HTTP三次握手、4次挥手
(2)4、7层协议等