Java基础
- 重写和重载区别
- 面向对象特征
- 什么是序列化
- 为什么要序列化
- serialversionuid 默认1L和64位的哈希字段有什么区别
- 序列化的用途
- final、finally、finalize的区别
- transient作用
Java集合
- HashMap原理
- HashMap如何resize
- HashMap的并发问题
- 什么是hash碰撞
- 解决hash冲撞的方法
- HashMap1.8做了那些优化
- ConcurrentHashMap1.7原理
- ConcurrentHashMap1.8原理
- ConcurrentHashMap1.8和1.7的区别
Java锁机制
- cas实现原理
- cas解决了什么问题
- cas有哪些缺点
- volatile作用
- volatile怎么保证可见性,有序性
- volatile为什么保证不了原子性
- volatile使用场景
- java线程内存模型
- synchronized原理
- lock原理
- synchronized和lock区别
Java多线程
- sleep、join、yield有什么区别
- ThreadLocal原理
- Threadlocal为什么内存泄漏
- 怎么避免ThreadLocal内存泄漏
- 线程池原理
- 为什么使用线程池
- 几种java提供的线程池介绍
- ThreadPoolExcutor几个构造参数介绍
- 四种饱和机制
- 四种阻塞队列
- 如何保证线程安全
Jvm
- java类加载机制
- 类加载器加载顺序
- 对象存活的判断机制
- 几种垃圾回收算法
- 几种垃圾收集器
- Jvm内存结构组成
- Jvm常用的控制参数
- 新生代和老年代的大小比列,eden、s0和s1比例
- 对象如何从eden、s0、s1到老年代过程
redis
- redis有哪些类型
- redis应用场景
- redis如何保证的持久化
- 什么是缓存穿透
- 怎么解决缓存穿透
- 什么是缓存雪崩
- 怎么解决缓存雪崩
- redis的setnx是什么意思,常用它做什么
- redis的list常用常用方法
- redis的map常用方法
rabbitmq
- rabbitmq的exchange类型有哪些
- 消息队列使用场景
- 生产者如何确保消息投递rabbitmq
- 消费者如何确保消息从rabbitmq消费掉
- 进入rabbitmq死信条件
- 变成rabbitmq死信并被消费的过程
spring cloud
- Hystrix解决了那些问题
- Hystrix的工作原理
- Hystrix的线程隔离策略
- Zuul可以做什么
- 什么是Zuul
- 前后端分离跨域问题的解决方案
- 调用一个突然down掉的服务(eureka还不知),你的配置方案
- 开启重试机制事对所有的方法错误重试吗,与以及需要注意的事项
分布式
- 分布式事务CAP原理,ACID模型和BASE模型
- 分布式锁的实现方案
- 分布式事务的解决方案
- 什么是接口的幂等性
- 分布式环境下session解决方案
web
- HTTPS协议是什么
- HTTPS工作原理
- RSA是什么
- SSL是什么
数据库
- limit 10000的解决办法(压根就不应该)
- 数据库为什么采用btree
- MyISAM和InnoDB的区别
- 死锁的产生的原因
- 如何尽可能的避免死锁
- 如何定位死锁问题
- 数据库的隔离机制及原理
- mysql索引使用事项
spring
- spring mvc
- spring bean 大多数是单例,再多线程下安全的原因
- spring事务的传播属性
- spring ioc
- spring aop