JAVA_并发编程面试金典15问

Posted 她说那里是晒黑的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA_并发编程面试金典15问相关的知识,希望对你有一定的参考价值。

1)、现在有T1、T2、T3 三个不同线程,你怎样才能保证T2 在T1 执行完后执行,T3 在T2 执行完后执
    行?
    这个问题通常会在第一轮面试或电话面试中被问到,以检查你对“连接”方法的熟悉程度
    知道了。这个多线程问题比较简单,可以通过join方法实现。
 2)、在Java中,锁接口比同步块的优势是什么?您需要实现它所允许的高效缓存
    很多用户都读,但只有一个用户可以写,为了维护其完整性,您将如何实现它?
    锁接口在多线程和并发编程中的最大优点是,它为读写提供了单独的锁,并允许您进行写操作
    高性能数据结构,如并发哈希表和条件阻塞。Java线程面试的问题越来越多。
    越会根据企业面试者的回答来提问。我强烈发展建议在你去参加多线程的面试问题之前进行认真读一下
    锁,因为它目前有大量的客户端缓存和事务连接空间用于构建电子交易终端。
3)、java中等待和休眠方法的区别?
    在电话面试中经常被问到的问题。最大的区别是,在等待的同时,等待释放
    锁,而睡眠永远握着锁。Wait通常用于线程间交互,sleep通常用于暂停执行。
4)、用Java 实现信息阻塞管理队列。
    这是一个相对困难的多线程面试问题,而且它做了很多事情。首先,它可以检测出候选人是否是
    您真的可以用Java线程编写一个程序吗;其次,您可以检查候选人对并发场景的理解,然后您可以根
    根据这个问很多问题。如果他使用 wait ()和 notify ()方法来阻塞队列,您可以要求他使用最新的
    用Java 5的并发类再写一遍。
5)、用Java 写代码来解决企业生产者——消费者分析问题。
    与上面的问题很类似,但这个社会问题更经典,有些什么时候进行面试过程中都会问下面的发展问题。在Java 中怎
    当然有很多方法可以解决生产者-消费者问题,我已经使用阻塞队列共享了一个实现
    方法。 有时他们甚至问如何实现哲学家的饮食问题。
 6)、如何处理 java 中导致死锁的编程?
    这是我最喜欢的Java 线程进行面试环境问题,因为我们即使死锁问题在写多线程并发程序时可以非常具有普遍,
    但是许多选择器无法编写无死锁代码(没有死锁代码?),他们在挣扎。告诉他
    您有N个资源和N个线程,您需要所有资源来执行一个操作。 为了简单起见
    N 可以被2替换,数据越大,问题就越复杂。通过避免 java 中的死锁来学习更多关于 java 的知识
    死锁的更多信息。
7)、什么是原子操作,Java中的原子操作是什么?
    非常具有简单的java 线程面试环境问题,接下来的问题是你需要发展同步建设一个原子操作。
8)、在Java中,易失性的关键作用是什么?你该如何使用它呢?在Java中,它有一些与同步方法相关联的东西么不同?
    随着Java 5和Java内存模型的变化,基于易失性关键字的线程问题变得越来越普遍。 应该
准备回答关于 volatile 变量如何确保并发环境中的可见性的问题。
9)、竞争条件是什么?你是如何发现和解决竞争的?
    这是中国一道主要出现在多线程进行面试的高级发展阶段的问题。大多数的面试官会问最近你遇到的竞争条碎片,以及你如何解决它。有时,他们会编写简单的代码,然后让您检测代码的竞争条
碎片。 查看我上一篇关于Java竞争条件的文章。 在我看来,这是最好的java线程访问一个问题是,它可以准确地衡量一个候选人的经验,解决竞争条件,或编写代码是免费的《Data or any other competitive situation. The best book on this is Concurrent Practice Java》。
10)、你将如何通过使用threaddump?你将如何进行分析Thread dump?
    在UNIX中,您可以使用kill -3,然后线程转储将打印日志,在windows中,您可以使用“CTRL+Break”。 很简单和专业的面试问题,但如果他问你如何分析,它将是棘手。
11)、为什么在执行 run ()方法时要调用 start ()方法,为什么不能调用 run ()方法?
    这又是一个非常经典的java多线程面试问题。这也是我刚开始写线程化程序时的困惑。目前的在这个社会问题我们通常在进行电话面试工作或者是在初中级Java 面试的第一轮被问到。这个环境问题的回答应这样,当您调用start()方法时,您将创建新的线程并在run()方法中执行代码。但是,如果直接调用run()方法,则它不会创建新线程或执行调用线程代码。 听我说有关更多信息,请参见前一篇文章,了解 start 方法和 run 方法之间的区别。
12)、在Java中如何唤醒一个被阻塞的线程?
    这是个关于一个线程和阻塞的棘手的问题,它有自己很多学生解决教学方法。如果使用线程遇到了IO 阻塞,我并不会考虑中止一个程。如果线程调用wait()、sleep()或加入()方法你可以把线弄断,然后通过扔断续的地址把它唤醒,我之前写的如何处理 java 中的阻塞方法有很多关于处理线程阻塞的信息。
13)、Java中的环式带锁和反锁有什么区别?
    这个线程问题主要用于检查您是否熟悉 jdk5中的并发包。两者之间的区别在于周期屏障以重复进行使用技术已经可以通过的障碍,而CountdownLatch 不能出现重复使用。
14)、什么是不可变的对象,以及它如何帮助编写并发应用程序?
    另一个多线程的经典面试问题,不是直接与线程相关的,而是间接的帮助很大。 这个java面试问题可以变得非常棘手,如果他让你写一个不可变的对象,或者问你为什么String是不可变的。
15)、你在多线程技术环境中遇到的常见的问题原因是什么?你是怎么可以解决它的?
    在多线程和并发程序中经常遇到的是内存接口、竞争条件、死锁、实时锁和饥饿等问题它没有尽头,如果你犯了错误,就很难找到和调试。 这主要是基于面试,而不是基于面试实际应用中的 java 线程问题。

更多JAVA参考:https://pan.baidu.com/s/1brJVbjPK4kacncAsQtgrmA 提取码:1234 

以上是关于JAVA_并发编程面试金典15问的主要内容,如果未能解决你的问题,请参考以下文章

JAVA_并发编程面试金典15问

一线大厂面试官最喜欢问的15道Java多线程面试题

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

面试的反杀-你有没有想要问我的

我没有高并发项目经验,但是面试的时候经常被问到高并发性能调优方面的问题,有什么办法可以解决吗?

华为18级大佬总结的15个顶级多线程面试题及答案