12.13一面1. 自我介绍2. Java 集合的整个体系和继承关系5. 怎样理解一个类是不是线程安全的6. hashmap多线程情况下使用会出现什么问题7. hashmap 不是线程安全的底层原因8. 线程的状态 转化过程10. 等待状态和阻塞状态的差异11. 两个线程访问一个资源遇到加锁情况,没抢到锁的线程会进入什么状态12. 线程池执行逻辑&参数设置13. object 类常见的方法14. 重写 equals 方法时,建议把 hashcode 方法也重写,原因15. 锁的分类方式16. 单机锁和分布式锁最大的区别17. 分布式锁常见的实现方式,Redis 的实现原理18. Redis 这种实现方式有什么缺陷19. 悲观锁和乐观锁使用场景20. CAS的过程21. 在并发量比较大的情况下,CAS 会不会出现两个线程同时比较且都成功更新的情况?乐观锁在这种情况下能保证并发安全吗?22. synchronized 修饰在类的静态方法上和一个实例方法上有什么区别23. 数据库索引的原理24. git 命令25. MQ在消费端的推拉模式的差异26. 实习经历12.18二面主要问实习 项目12.20 oc