- 1
- 0
- 约3.77千字
- 约 11页
- 2026-10-22 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年程序员面试攻略:技术难题解析
一、Java基础(5题,每题10分,共50分)
1.题目:
解释Java中的`volatile`关键字的作用和原理,并说明它与`synchronized`的区别。
2.题目:
假设有一个`HashMap`,在多线程环境下如何保证其线程安全?请至少列举两种解决方案并比较优劣。
3.题目:
描述Java中的`ThreadLocal`原理,并说明其在什么场景下使用最为合适。
4.题目:
解释Java中的`GCRoots`概念,并列举至少四种可能成为GCRoots的对象。
5.题目:
实现一个线程安全的单例模式,要求在多线程环境下也能正确创建唯一实例。
答案与解析
1.答案:
`volatile`关键字的作用是确保变量的可见性和禁止指令重排序。
-可见性:当一个线程修改了`volatile`变量的值时,其他线程能够立即看到这个变化,因为`volatile`会强制刷新CPU缓存。
-禁止指令重排序:编译器和处理器可能会对指令进行重排序优化,但`volatile`会阻止这种重排序影响变量的读取顺序。
与`synchronized`的区别:
-`volatile`仅保证可见性和禁止重排序,不保证原子性;而`synchronized`能保证可见性、原子性和有序性。
-`volatile`
原创力文档

文档评论(0)