iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >15个Java线程并发面试题和答案
  • 609
分享到

15个Java线程并发面试题和答案

java面试题Java 2018-09-09 16:09:57 609人浏览 才女
摘要

1. 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?这个线程面试题通常在第一轮面试或电话面试时被问到,这道多线程问题为了测试面试者是否熟悉 join 方法的概念。答案也非常简

1. 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?

这个线程面试题通常在第一轮面试或电话面试时被问到,这道多线程问题为了测试面试者是否熟悉 join 方法的概念。答案也非常简单——可以用 Thread 类的 join 方法实现这一效果。

2. Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。

多线程和并发编程中使用 lock 接口的最大优势是它为读和写提供两个单独的,可以让你构建高性能数据结构,比如 ConcurrentHashMap 和条件阻塞。

这道 Java 线程面试题越来越多见,而且随后的面试题都基于面试者对这道题的回答。

我强烈建议在任何 Java 多线程面试前都要多看看有关锁的知识,因为如今电子交易系统的客户端和数据交互中,锁被频繁使用来构建缓存

3. Java 中 wait 和 sleep 方法有什么区别?

我们来看看另一个经常被问到的线程面试题。这道题常出现在电话面试中。两者主要的区别就是等待释放锁和监视器。sleep方法在等待时不会释放任何锁或监视器。wait 方法多用于线程间通信,而 sleep 只是在执行时暂停。可以看我另一篇有关Java 中 wait 和 sleep的文章。

4. 如何在 Java 中实现一个阻塞队列?

这是一道相对困难的 Java 多线程面试题,考察点很多。它考察了面试者是否真正写过 Java 多线程代码,考察了面试者对并发场景的理解。并且可以根据面试者的代码问很多后续问题,如果他用 wait() 和 notify() 方法成功实现了阻塞队列,可以让他用 Java 5 的并发类重新实现一次。

5. 如何在 Java 中编写代码解决生产者消费者问题?

答案和上面有关线程的问题相似,这个问题在工作中很典型,但有时面试官会问这类问题,比如“在 Java 中如何解决生产者消费者问题?”其实,有很多解决方式。我分享过用 Java 中 BlockingQueue 的解决方案。有时他们甚至会让你给出哲学家进餐问题的解决方案。

6. 写一段死锁代码。你在 Java 中如何解决死锁?

这是我最喜欢的 Java 多线程面试题,因为即使死锁在多线程并发编程中十分常见,许多面试者仍然抓耳挠腮,不能写出无死锁的代码。

只需要问他们如果有 N 个资源和 N 个线程去执行某个操作,然后请求所有资源。

这里的 N 可以是 2 作为最简单的情况,也可以是个很大的数字让问题变复杂。

7. 什么是原子操作?Java 中有哪些原子操作?

这是个简单的 Java 线程面试题。另一个紧随其后的问题将是:你需要同步原子操作吗?你可以看这篇文章了解更多Java 同步。

8. Java 中 volatile 关键字是什么?你如何使用它?它和 Java 中的同步方法有什么区别?

自从 Java 5 中调整 volatile 关键字和 Java 内存模型后,有关 volatile 关键字的线程问题越来越常见。掌握 volatile变量在并发环境中如何确保可见性、有序性和一致性非常重要。

9. 什么是竞态条件?你如何发现并解决竞态条件?

这个 Java 多线程问题一般出现在高级面试。多数面试官会问你最近一次遇到的竞态条件,如何解决的,有时他们也会写点简单代码让你发现竞态条件。可以看看我的这篇文章Java 中的竞态条件。我认为,这是最棒的 Java 线程面试问题之一,而且可以测试出面试者解决竞态条件的经验,或是编写无数据竞争、无其竞态条件的代码经验。

10. 在 Java 中你如何转储线程(thread dump)?如何分析它?

在 UNIX 中,你可以使用 kill -3 然后线程转储日志会打印在屏幕上,可以使用 CTRL+Break 查看。这只是一个较简单的线程面试题,狡猾一点的话他们会问你如何分析转储日志。线程转储日志对于分析死锁情况非常有用。

11. 既然 start() 方法会调用 run() 方法,为什么我们调用 start() 方法,而不直接调用 run() 方法?

这是一个基本的 Java 多线程面试题。最初,我刚开始多线程编程时对此还有些困惑。如今我一般在 Java 中级面试的电话面试或一轮面试中遇到。

这道问题的答案是这样的。当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码。如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行。

12. Java 中你如何唤醒阻塞线程?

这是有关线程的一个很狡猾的问题。有很多原因会导致阻塞,如果是 io 阻塞,我认为没有方式可以中断线程(如果有的话请告诉我)。另一方面,如果线程阻塞是由于调用了 wait(),sleep() 或 join() 方法,你可以中断线程,通过抛出 InterruptedException 异常来唤醒该线程。

13. Java 中 CyclicBarriar 和 CountdownLatch 有什么区别?

最近的 Java 线程面试题多数在测试你对 jdk 5 并发包的掌握程度。两者区别之一就是 CyclicBarrier 在屏障打开之后(所有线程到达屏障点),可以重复使用。而 CountDownLatch 不行。想了解更多可以参与课程Java 中的多线程和并行计算。

14. 什么是不可变类?它对于编写并发应用有何帮助?

尽管这道面试题和线程没有直接关系,但间接影响也很大。如果面试官随后让你写一个不可变类,或问你为什么 Java 中的 String 是不可变的,会让面试题变得更加复杂。

15. 你在多线程环境中遇到的最多的问题是什么?你如何解决的?

内存干扰、竞态条件、死锁、活锁、线程饥饿是多线程和并发编程中比较有代表性的问题。这类问题无休无止,而且难于定位和调试。

--结束END--

本文标题: 15个Java线程并发面试题和答案

本文链接: https://www.lsjlt.com/news/2768.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python面试题及答案:12个 Python 程序员面试必备问题与答案
    这段时间很多伙伴问我有没有关于Python的面试题和答案,哈哈哈,7月确实也是面试跳槽的高峰哈!这两天总结了一下,这12个Python面试题和答案是必考的,给大家列了下来,认真看哈!...
    99+
    2023-06-02
  • 91 个常见的 Laravel 面试题和答案
    以下是经常问到的 Laravel 和 PHP 相关的面试问题,以便菜鸟以及有经验的应聘者找到合适的工作。1) 什么是 Laravel Laravel是一个开源的、广泛使用的PHP框架。该平台主要用于利用MVC架构模式开发web应用程序。La...
    99+
    2023-05-12
    Laravel 面试 答案 工作
  • JAVA开发中有哪些面试题及答案
    本文小编为大家详细介绍“JAVA开发中有哪些面试题及答案”,内容详细,步骤清晰,细节处理妥当,希望这篇“JAVA开发中有哪些面试题及答案”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。自我介绍、自己做的项目和技术领...
    99+
    2023-06-05
  • Java面试题经典面试题220道(附答案)
    Java基础: JDK 和 JRE 有什么区别? == 和 equals 的区别是什么?== 解读 两个对象的 hashCode() 相同, 那么 equals() 也一定为 true吗? final 在 Java 中有什么作用? ...
    99+
    2023-09-06
    java 面试 jvm
  • 35个MySQL常见面试题+答案
    今天给大家总结了35 个 Mysql 常见的小问题 说一说三大范式 2.MyISAM 与 InnoDB 的区别是什么? 3.为什么推荐使用自增 id 作为主键? 4.一条查询语句是怎么执行的 5.使用 Innodb 的情况下,一条更新语句是...
    99+
    2023-09-11
    java 经验分享 数据库架构
  • Java集合面试问题和答案有哪些
    这篇文章主要讲解了“Java集合面试问题和答案有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java集合面试问题和答案有哪些”吧!1.Java集合框架是什么?说出一些集合框架的优点?每...
    99+
    2023-06-17
  • Java并发编程面试之线程池
    目录什么是线程池线程池好处线程池的执行流程怎么用线程池corePoolSizemaximumPoolSizekeepAliveTimeunitworkQueuethreadFacto...
    99+
    2024-04-02
  • 电话邦PHP线上面试题(带答案!)
    如果你看到这篇文章你是幸运的! 写一个函数,可以逆序一个字符串的内容。不考虑效率,如:输入abaacd,返回dcaaba 答: function reverses($str){ for($i =...
    99+
    2023-08-31
    php 开发语言
  • Hadoop面试题和答案有哪些
    本篇内容介绍了“Hadoop面试题和答案有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!      &nb...
    99+
    2023-06-04
  • 总结2023Android开发面试题(含答案)
    1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linu...
    99+
    2023-08-31
    android 动画 flutter android jetpack kotlin Powered by 金山文档
  • Java并发编程面试题——JUC专题
    文章目录 一、AQS高频问题1.1 AQS是什么?1.2 唤醒线程时,AQS为什么从后往前遍历?1.3 AQS为什么用双向链表,(为啥不用单向链表)?1.4 AQS为什么要有一个虚拟的head节点1.5 ReentrantLock的...
    99+
    2023-08-18
    面试 java 并发编程
  • 华为C++开发工程师面试总结整理,面试问题你能答上几个?含答案
    前言:虽然全世界每个月都可能会出现新的语言,但从TIOBE世界编程语言排行榜的数据来看,从2009年到现在,C/C++一直都在前3甲中。不论历史的车轮如何滚滚向前,学好C/C++永远不会落后。面试官问的面试题:一面:先自我介绍;把自己简历上...
    99+
    2023-06-05
  • 最全java面试题及答案(208道)
    本文分为十九个模块,分别是:「Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Clou...
    99+
    2023-10-12
    java 面试
  • java基础中并发多线程面试题有哪些
    java基础中并发多线程面试题有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。01 什么是线程线程是操作系统...
    99+
    2024-04-02
  • 面试官问你Java并发编程,如何回答?
    Java并发编程是Java程序员必须掌握的重要技能之一。在面试中,面试官可能会问到一些与Java并发编程相关的问题,例如线程安全、同步机制等。那么,如果面试官问你Java并发编程,你应该如何回答呢?本文将为大家提供一些指导性的建议。 首先,...
    99+
    2023-11-14
    响应 面试 并发
  • Java架构师面试必备题(含答案)
    第一题:一条sql执行过长的时间,你如何优化,从哪些方面? 答:1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2、涉及链表的查询,是否能进行分表查询,单表查询之...
    99+
    2023-09-15
    java 面试 数据库
  • Java多线程并发与并行和线程与进程案例
    目录一、并发与并行二、线程与进程三、创建线程类前言: 程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计? 要解决上述问题,咱们得使用...
    99+
    2024-04-02
  • 【2022最新Java面试宝典】—— SpringCloud面试题(49道含答案)
    目录 Spring Cloud1. 什么是微服务架构2. 为什么需要学习Spring Cloud3. Spring Cloud 是什么4. SpringCloud的优缺点5. SpringBoot和SpringCloud的区别?6....
    99+
    2023-08-18
    SpringCloud 面试
  • Python经典面试题和答案有哪些
    这篇文章主要介绍了Python经典面试题和答案有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python经典面试题和答案有哪些文章都会有所收获,下面我们一起来看看吧。  ...
    99+
    2024-04-02
  • 【2022最新Java面试宝典】—— MySQL面试题(40道含答案)
    目录 1、MySQL 中有哪几种锁?2、MySQL 中有哪些不同的表格?3、简述在MySQL 数据库中 MyISAM 和InnoDB 的区别4、MySQL 中InnoDB 支持的四种事务隔离级...
    99+
    2023-09-03
    java 面试 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作