度小满Java一面面经
1. 首先是自我介绍环节
2. 看到简历里项目用了Spring,被问到Spring的启动流程;
3. 接着深入Spring,询问Bean的扫描机制;
4. 如何确保所有Bean都能被扫描到?若有Bean不在启动类根目录下该怎么处理;
5. Bean默认是单例还是多例;
6. 详细介绍单例模式;
7. 手撕两种单例模式的实现代码;
8. volatile关键字的作用;
9. 讲解JMM内存模型;
10. synchronized的底层实现原理;
11. synchronized如何保证可重入性;
12. synchronized的锁升级过程;
13. 什么是CAS(比较并交换);
14. 让我整体讲讲Java集合;
15. ArrayList是否线程安全;
16. 如何实现ArrayList的线程安全;
17. HashMap是否线程安全;
18. 讲解ConcurrentHashMap的原理,要求分别说明1.7和1.8版本的实现;
19. Java 1.8的ConcurrentHashMap有哪些优化,重点提及红黑树;
20. 什么时候HashMap中的链表会转成红黑树;
21. 若一个桶中元素超8个转红黑树后,移除元素使数量减少,红黑树会变回链表吗?反复添加移除同一桶元素,是否会导致两者频繁转换?该如何解决;
22. 红黑树的查找效率为何比链表高;
23. 线程池的4个核心参数及各自作用;
24. 向线程池提交任务的完整流程;
25. 线程池的四种拒绝策略分别是什么;
26. Redis的八种数据结构分别介绍;
27. 解释缓存击穿、缓存穿透、缓存雪崩的概念;
28. 如何解决上述三种缓存问题;
29. 什么是布隆过滤器;
30. 讲解Redis分布式锁;
31.除了Redis,还了解哪些分布式锁;
32.Redis分布式锁中的看门狗机制;
33.讲解TCP的三次握手与四次挥手过程;
34.TCP和UDP的区别;
35. Spring注入Bean有哪几种方式;
36. @Autowired和@Resource的区别;
37. 使用@Autowired时,若存在多个相同类型的Bean该如何注入;
38. 哪个注解可以扫描指定路径的Bean;
39. 介绍JVM的垃圾回收算法,并说明每种算法的优缺点;
40. 老年代和年轻代分别使用什么垃圾回收算法;
41. 手撕反转链表代码。
查看13道真题和解析