基础
- 强引用、弱引用、虚引用、软引用
- final关键字的作用 (方法、变量、类)
- 泛型、泛型继承、泛型擦除
- jdk ServiceLoader
- LinkedList、LinkedHashMap、LRU
- 装饰者模式、代理模式、责任链模式、工厂模式、适配器模式、建造者模式、单例模式、模板模式、观察者模式…
- 关于精度损失问题:int、long 超过最大值
- 关于注解:元注解的种类、继承java.lang.Annotation、注解的基础类型、注解的常用方法
- 关于ClassLoader,类加载器,双亲委派模型
J.U.C
- 线程池参数说明,线程池的线程回收、shutdown
- 线程池的生命周期?
- 线程池的核心模型Worker对象的运作流程是怎样的?
- 线程池的拒绝策略有哪4种?
- 线程池的提交,execute与submit有什么区别?在实际开发中需要注意哪些问题?
- threadlocal原理,数据结构
- 并发集合类了解哪些?
- ConcurrentHashMap
- CopyOnWrite集合、原理、锁机制
- ConcurrentLinkedQueue、LinkedTransferQueue、ArrayBlockingQueue、PriorityBlockingQueue、SynchronousQueue、DelayQueue
- AQS 原理:
- 独占 & 共享
- state & CHL队列
- 锁:
- Synchronized、ReentrantLock、RWLock、Condition、LockSupport、StampedLock、
- 概念:CAS 自旋、重入、偏向
- volatile:
- 多线程共享 & 阻止指令重排序
- jvm的逃逸分析 & Tlab & 消除伪共享 & UNsafe &
- atomic:
- CAS的缺点,自旋、ABA问题
- atomic 原子性、Reference、referenceArray、longadder
jvm虚拟机
- 虚拟机内存模型
- 新生代(Eden S0 S1)、老年代 、MetaSpace (比例)
- 垃圾回收算法(引用计数、标记压缩、清除、复制算法、分区)、垃圾收集器
- GC停顿、吞吐量,进入老年代阈值、大对象回收问题等
- jvm性能调优、参数配置
- 常用命令:jstat、jmap、jstack等
- 内存溢出分析:堆内、堆外 (含义、如何设置)
- CPU飙升:死锁、线程阻塞
- 关于GC: minor major full
- stw,安全点等
数据结构&算法
- 数组、链表、树、队列…
- 关于时间复杂度,时间换空间转换案例
- 关于排序、冒泡、快排、递归、二分搜索、位运算
Spring
- Spring生命周期,流程梳理
- Spring扩展点作用
- Spring IOC AOP 基本原理
- 动态代理
- BeanPostProcessor 作用?
- ApplicationContextAware 的作用和使用?
- BeanNameAware与BeanFactoryAware的先后顺序?
- InitializingBean 和 BeanPostProcessor 的after方法先后顺序?
- ApplicationListener监控的Application事件有哪些?
- Spring模块装配的概念,比如@EnableScheduling @EnableRetry @EnableAsync,@Import注解的作用?
- ImportBeanDefinitionRegistrar 扩展点用于做什么事情?
- ClassPathBeanDefinitionScanner 的作用?
- NamespaceHandlerSupport 命名空间扩展点的作用?
- 如何实现动态注入一个Bean?
- 如何把自定义注解所在的Class 初始化注入到Spring容器?
- BeanDefinition指的是什么,与BeanDefinitionHolder的区别,Spring如何存BeanDefinition实例?
- ASM 与 CGlib
- Spring的条件装配,自动装配
RPC通信框架
Dubbo
- Dubbo的Spi机制?
- Dubbo的核心模型 invoker、invocation、filter
- Dubbo的隐式传递?
- Dubbo的泛化调用?
- Dubbo的export与importer时机?
- Dubbo的服务调用过程?
- Dubbo的负载均衡策略?
- Dubbo的集群容错?
网络通信
IO / NIO
- IO NIO区别?
- 多路复用的概念,Selector
- Channel的概念、Bytebuf的概念,flip、position…
- FileChannel 如何使用?
- RAF使用,seek、skip方法
Netty
- 关于Netty的Reactor实现?
- Netty的ByteBuf有哪些?
- 内存与非内存Bytebuffer的区别与使用场景?
- 池化与非池化buffer的区别与使用场景?
- 关于Netty的请求Buffer和响应Buffer?
- Netty的ChannelPipeline设计模式?
- Netty的核心option参数配置?
- Netty的ChannelInboundHandlerAdapter和SimpleChannelInboundHandler关系?
- Netty的EventLoop核心实现?
- Netty的连接管理事件接口有哪些常用方法(ChannelDuplexHandler)?
- Netty的编解码与序列化手段
- Netty的FastThreadLocal实现?
- Netty中应用的装饰者 和 观察者模式在哪里体现?
MQ
- API使用,常用生产消费模型,集群架构搭建
- 常见问题,消息可靠性投递、幂等性保障
- 概念、原理、存储、消息投递、通信机制、性能相关优化
- MQ常见的作用于目的、服务解耦、削峰填谷等
RocketMQ
Kafka
RabbitMQ
ActiveMQ
缓存
- 内存缓存
- 堆外内存缓存 回收释放
- 缓存穿透、雪崩、热点Key、大Key、无底洞问题,缓存更新与淘汰、缓存与数据库的一致性
Redis
- Redis的幂等性
- Redis的分布式锁实现
- Redis的原子性,Redis的特点
- Redis集群相关问题、一致性hash、slot概念等
- 什么是 Redis?
- .Redis 的数据类型?
- 使用 Redis 有哪些好处?
- Redis 相比 Memcached 有哪些优势?
- Memcached 与 Redis 的区别都有哪些?
- Redis 是单进程单线程的吗?为何它那么快那么高效?
- 一个字符串类型的值能存储最大容量是多少?
- Redis 的持久化机制是什么?各自的优缺点?
- Redis 常见性能问题和解决方案有哪些?
- Redis 过期键的删除策略?
- Redis 的回收策略(淘汰策略)?
- 为什么Redis 需要把所有数据放到内存中?
- Redis 的同步机制了解么?
- Pipeline 有什么好处,为什么要用 Pipeline?
- 是否使用过 Redis 集群,集群的原理是什么?
- Redis 集群方案什么情况下会导致整个集群不可用?
- Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
- Jedis 与 Redisson 对比有什么优缺点?
- Redis 如何设置密码及验证密码?
- 说说 Redis 哈希槽的概念?
- Redis 集群的主从复制模型是怎样的?
- Redis 集群会有写操作丢失吗?为什么?
- Redis 集群之间是如何复制的?
- Redis 集群最大节点个数是多少?
- Redis 集群如何选择数据库?
- 怎么测试 Redis 的连通性?
- 怎么理解 Redis 事务?
- Redis 事务相关的命令有哪几个?
- Redis key 的过期时间和永久有效分别怎么设置?
- Redis 如何做内存优化?
- Redis 回收进程如何工作的?
- 都有哪些办法可以降低 Redis 的内存使用情况呢?
- Redis 的内存用完了会发生什么?
- 一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set他们最多能存放多少元素?
- MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证Redis 中的数据都是热点数据?
- Redis 最适合的场景是什么?
- 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- 如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
- 使用过 Redis 做异步队列么,你是怎么用的?
- 使用过 Redis 分布式锁么,它是什么回事?
- 如何预防缓存穿透与雪崩?
Mybatis
-
mybatis 中 #{}和 ${}的区别是什么?
-
mybatis 有几种分页方式?
-
RowBounds 是一次性查询全部结果吗?为什么?
-
mybatis 逻辑分页和物理分页的区别是什么?
-
mybatis 是否支持延迟加载?延迟加载的原理是什么?
-
说一下 mybatis 的一级缓存和二级缓存?
-
mybatis 和 hibernate 的区别有哪些?
-
mybatis 有哪些执行器(Executor)?
-
mybatis 分页插件的实现原理是什么?
-
mybatis 如何编写一个自定义插件?
其他技术
Hystrix
Sentinel
高可用服务中间件
Zookeeper / Curator
Nginx
Haproxy
LVS
Haproxy
数据库存储&调度
Sharding-JDBC
ElasticJob
调度平台相关:DAG、airflow等
搜索相关度
ELK ,数据库加速、主搜(算法)
Logback、Slf4j2
Solr & Lucene