15 个高级 Java 多线程面试题及回答

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的。下面这些是我在不同时间不同地点喜欢问的Java线程问题。我没有提供答案,但只要可能我会给你线索,有些时候这些线索足够回答问题。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadLocal、Blocking Queue、Counting Semaphore和ConcurrentHashMap比较流行。

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?

3)在java中wait和sleep方法的不同?

4)用Java实现阻塞队列。

5)用Java写代码来解决生产者——消费者问题。

6)用Java编程一个会导致死锁的程序,你将怎么解决?

7) 什么是原子操作,Java中的原子操作是什么?

8) Java中的volatile关键是什么作用?怎样使用它?在Java中它跟synchronized方法有什么不同?

9) 什么是竞争条件?你怎样发现和解决竞争?

10) 你将如何使用thread dump?你将如何分析Thread dump?

11) 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?

12) Java中你怎样唤醒一个阻塞的线程?

13)在Java中CycliBarriar和CountdownLatch有什么区别?

14) 什么是不可变对象,它对写并发应用有什么帮助?

15) 你在多线程环境中遇到的共同的问题是什么?你是怎么解决它的?

小伙伴们有兴趣想了解更多相关学习资料请点赞收藏+评论转发+关注我之后私信我,注意回复【000】即可获取更多免费资料!

你可能感兴趣的:(后端,java,面试,jvm,性能优化,开发语言)