1.java基础
基础类型
基础类型有哪些,什么是自动拆装箱?
集合:
Collection
Set
treeset/hashset,
List
ArrayList是否线程安全?如何线程安全地操作ArrayList?
ArrayList扩容机制
ArrayList/linkedList(数据vs链表),
集合判空 isEmpty or size == 0
集合转map null抛异常
集合遍历以及并发情况 foreach不能remove/add;
iterator遍历,并发加锁,快速失败(fail-fast)和安全失败(fail-safe)的机制
集合去重
Map
HashMap/
HashMap数据结构、哈希冲突解决方法
HashMap扩容的原理
HashMap为什么线程不安全?如何线程安全地操作?
LinkedHashMap/
treemap/
IdentityHashMap/
ConcurrentHashMap 1.7
ConcurrentHashMap原理?
java并发
java内存模型
线程和进程
线程生命周期,
线程池:ThreadPoolExecutor类,有哪些参数 什么时候触发最大线程条件? 线程池拒绝策略有哪些?默认是哪个?
线程死锁,避免死锁 悲观锁 乐观锁
volatile 关键字的作用
synchronized 关键字 有什么用
ReentrantLock是什么
CAS( compare and swap) AQS
项目里用了哪些锁?
java的反射机制
java的异常类
jvm参数以及调优
运行时数据区是怎样的?线程安全(即线程私有)的有哪些?
对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?
Java类加载流程?初始化流程?
Java内存泄露什么时候会发生?
垃圾回收
CMS垃圾回收器的流程?
2. spring框架
springboot
SpringBoot的启动流程?
SpringBoot的动态代理默认用的哪个(cglib还是JDK)
Spring IoC
Spring循环依赖解决方法及原理
Spring的循环依赖用的是三级缓存,为什么不是两级?
将一个类声明为 Bean 的注解有哪些?
@Component 和 @Bean 的区别是什么?
@Autowired 和 @Resource 的区别是什么?
Bean 的作用域有哪些?
Bean 是线程安全的吗?
spring bean的生命周期
AOP
SpringAOP实际开发过什么功能?
spring cloud微服务架构
3. MyBatis
MyBatis的#与$有什么区别?
4. 数据库
mysql 事务 事务隔离级别 脏读、幻读是什么意思?
数据库引擎 MyISAM与InnoDB区别
索引:索引优缺点,
索引数据结构选型:hash表,二叉查找树,avl树,红黑树,b树和b+树
创建索引的原则
**索引什么时候会失效
**
**创建了A, B, C联合索引,使用B,C能否索引
**
**LIKE什么时候走索引,什么时候不走索引?
**
**聚集索引是什么?什么是回表?
**
日志:binlog,redo log,undo log
sql优化 ,查询缓存读写分离 分库分表
5. redis
什么情况下会考虑使用redis
特点:速度快,持久化,自动操作,快速主从复制,sharding技术
缺点:物理内存限制,难支持在线扩容
Redis 常用的数据结构有哪些?
5 种基础数据结构:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。
3 种特殊数据结构:HyperLogLogs(基数统计)、Bitmap (位存储)、Geospatial (地理位置)。
Redis为什么很快?
redis持久化:RDB(默认) 和AOF
Redis 有哪些架构模式?讲讲各自的特点:主从复制,哨兵,集群
使用过Redis分布式锁么,它是怎么实现的?
使用过Redis做异步队列么,你是怎么用的?有什么缺点?
和mysql缓存一致性 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
Redis与数据库如何同步?各个方式的缺点是什么?
内存回收机制是怎样的?(或者说:淘汰策略)
6.设计模式
项目里用到了哪些设计模式,怎么用的?
单例模式的写法?
静态代理与动态代理区别?
7. 网络
http/https sokect http中间件
8. 高性能
负衡均衡常见的算法有哪些?
rebbitmq
RabbitMQ的消息异常(丢失、重复、顺序、堆积)如何处理?
rocketmq
消息队列kafka
kafka 的多副本机制了解吗?带来了什么好处?
kafka消息消费顺序,如何保证不发生消息丢失,如何保证不重复消费
kafka发布订阅模式
Kafka不支持延迟队列,如果用到延迟队列,该如何实现?