15个顶级Java多线程面试题(附答案)

电脑杂谈  发布时间:2019-06-12 19:13:22  来源:网络整理

事业单位面试题目逻辑题_多线程面试题 论坛_微软面试100题及答案

在典型的 java 面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承 thread 类还是调用 runnable 接口),然后逐渐问到并发问题像在 java 并发编程的过程中遇到了什么挑战,java 内存模型,jdk1.5 引入了哪些更高阶的并发工具,并发编程常用的 设计模式,经典多线程问题如生产者消费者,哲学家就餐,读写器或者简单的有界缓冲区问题。在典型的java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用runnable接口),然后逐渐问到并发问题像在java并发编程的过程中遇到了什么挑战,java内存模型,jdk1.5引入了哪些更高阶的并发工具,并发编程常用的设计模式,经典多线程问题如生产者消费者,哲学家就餐,读写器或者简单的有界缓冲区问题。在并发编程中使用生产者和消费者模式能够极速11选5绝大多数并发问题.该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度.。

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

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

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

nsuserdefaults 提供了一个与默认设置交互的接口. 这些默认设置允许一个 app 为每一个单独的用户的设置提供定制化的行为. 数据的同步 我们可以通过 nsuserdefaults 对象在运行时从读取用户的数据, 并添加到缓存中. 在我们正常获取或者设置 nsuserdefaults 的值时, 和缓存中的数据其实并没有同步更新, 因为这样...。优点:1、快速2、简单3、多种缓存策略4、缓存数据有两级:内存和磁盘,因此无需担心容量问题5、缓存数据会在虚拟机重启的过程中写入磁盘6、可以通过、可插入p等方式进行分布式缓存7、具有缓存和缓存管理器的侦听接口8、支持多缓存管理器实例,以及一个实例的多个缓存区域9、提供的缓存实现。a、在 java 中类只允许单一继承 b、在 java 中一个类只能实现一个接口 c、在 java 中一个类不能同时继承一个类和实现一个接口 d、在 java 中接口只允许单一继承 paint()方法中的参数可使用哪种类型 ( ) a、graphics b、graphics2d c、string d、color 以下不属于 java 基本数据类型的是( ) a、int b、boolean c、float d、char 以下哪项可能包含菜单条( )。

lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。

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

通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。

4)用Java实现阻塞队列。

微软面试100题及答案_事业单位面试题目逻辑题_多线程面试题 论坛

这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。

5)用Java写代码来极速11选5生产者——消费者问题。

与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在Java中怎么极速11选5生产者——消费者问题,当然有很多极速11选5方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。

6)用Java编程一个会导致死锁的程序,你将怎么极速11选5?

-- david a. patterson & john l. hennessy 并发编程模型的分类 java ,c# 共享内存 pthread,win32线程库并发编程 jvm上的scala 消息传递 google 的go ericsson的erlang 共享内存模型的线程间通信 通过共享变量 线程a 的写-读来通信 线程b首先,线程a写 然后,线程b读 共享内存空间 a 1 消息传递模型的线程间通信 线程之间通过明确 的发送消息来通信 线程a 线程a向b发送消息 线程b 读/写 读/写独立内存空间a 独立内存空间b a 1 b 2 它们就是想对着干。多线程资源控制,由于线程之间共享进程中的资源,所以同一进程中的多个线程的通讯的重心之一是对共享的资源进行控制多线程面试题 论坛,例如当多个线程同时使用进程某个资源时,有可能需要采用互斥/同步等手段保证资源被正确操作,在采用互斥/同步手段时候,需要避免产生死锁的情况。> 进程与线程比较- 进程是资源分配单位,线程是cpu调度单位- 进程拥有一个完整的资源平台,而线程只独享指令流执行的必要资源,如寄存器和栈- 线程具有就绪/等待和运行三种基本状态和状态间的转换关系- 线程可以减少并发执行的时间和空间开销线程的创建与终止时间比进程短同一进程内的线程切换时间比进程短同一进程的各个线程间共享内存和文件资源,可不通过内核直接通信。

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

非常简单的java线程面试问题,接下来的问题是你需要同步一个原子操作。

当a线程调用anyobject对象加入synchronized关键字的x方法时,a线程就获得了x方法锁,更准确地讲,是获得了时象的锁,所以其他线程必须等a线程执行完毕才可以调用x方法,但b线程可以随意调用其他的非synchronized同步方法。同步一段指令集序列通常是由java语言中的synchronized语句块来表示的,java虚拟机的指令集中有monitorenter和monitorexit两条指令来支持synchronized关键字的语义。volatile只有内存可见性语义,synchronized有互斥语义,一写多读使用volatile就可以,多写就必须使用synchronized,fetch-mod-get也必须使用synchronized。

自从Java 5和Java内存模型改变以后,基于volatile关键字的线程问题越来越流行。应该准备好回答关于volatile变量怎样在并发环境中确保可见性。

多线程面试题 论坛_微软面试100题及答案_事业单位面试题目逻辑题

9) 什么是竞争条件?你怎样发现和极速11选5竞争?

每个线程都有一个threadlocal就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。另外,wait_for 的重载版本(predicte(2))的最后一个参数 pred 表示 wait_for 的预测条件,只有当 pred 条件为 false 时调用 wait() 才会阻塞当前线程,并且在收到其他线程的通知后只有当 pred 为 true 时才会被解除阻塞,因此相当于如下代码:。另外,wait_until 的重载版本(predicte(2))的最后一个参数 pred 表示wait_until 的预测条件,只有当 pred 条件为 false 时调用 wait() 才会阻塞当前线程,并且在收到其他线程的通知后只有当 pred 为 true 时才会被解除阻塞,因此相当于如下代码:。

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

在UNIX中你可以使用kill -3,然后thread dump将会打印日志多线程面试题 论坛,在windows中你可以使用”CTRL+Break”。非常简单和的线程面试问题,但是如果他问你怎样分析它,就会很棘手。

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

这是另一个非常经典的java多线程面试问题。这也是我刚开始写线程程序时候的困惑。现在这个问题通常在电话面试或者是在初中级Java面试的第一轮被问到。这个问题的回答应该是这样的,当你调用start()方法时你将创建新的线程,并且执行在run()方法里的代码。但是如果你直接调用run()方法,它不会创建新的线程也不会执行调用线程的代码。阅读我之前写的《start与run方法的区别》这篇文章来获得更多信息。

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

这是个关于线程和阻塞的棘手的问题,它有很多极速11选5方法。如果线程遇到了IO阻塞,我并且不认为有一种方法可以中止线程。如果线程因为调用wait()、sleep()、或者join()方法而导致的阻塞,你可以中断线程,并且通过抛出InterruptedException来唤醒它。我之前写的《How to deal with blocking methods in java》有很多关于处理线程阻塞的信息。

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

事业单位面试题目逻辑题_多线程面试题 论坛_微软面试100题及答案

这个线程问题主要用来检测你是否熟悉JDK5中的并发包。这两个的区别是CyclicBarrier可以重复使用已经通过的障碍,而CountdownLatch不能重复使用。

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

另一个多线程经典面试问题,并不直接跟线程有关,但间接帮助很多。这个java面试问题可以变的非常棘手,如果他要求你写一个不可变对象,或者问你为什么String是不可变的。

15) 你在多线程环境中遇到的常见的问题是什么?你是怎么极速11选5它的?

多线程和并发程序中常遇到的有Memory-interface、竞争条件、死锁、活锁和饥饿。问题是没有止境的,如果你弄错了,将很难发现和调试。这是大多数基于面试的,而不是基于实际应用的Java线程问题。

补充的其它几个问题:

1) 在java中绿色线程和本地线程区别?

2) 线程与进程的区别?

3) 什么是多线程中的上下文切换?

事业单位面试题目逻辑题_多线程面试题 论坛_微软面试100题及答案

4)死锁与活锁的区别,死锁与饥饿的区别?

5) Java中用到的线程调度算法是什么?

6) 在Java中什么是线程调度?

7) 程中你怎么处理不可捕捉异常?

8) 什么是线程组,为什么在Java中不推荐使用?

9) 为什么使用Executor框架比使用应用创建和管理线程好?

10) 在Java中Executor和Executors的区别?

11) 如何在Windows和Linux上查找哪个线程使用的CPU时间最长?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


本文来自电脑杂谈,转载请注明本文网址:
http://xinshanjie.com/a/jisuanjixue/article-105546-1.html

    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 周宗锋
      周宗锋

      故以老旧舰试探

    • 孙岘
      孙岘

      其实还有一个更好的极速11选5方案

      • 宝箱人艾门
        宝箱人艾门

        指挥部才最后确认飞机已经全部安全落地

    • 杨凝
      杨凝

      因为那是他们当年玩剩下的

    热点图片
    拼命载入中...