2019年全网最热门的123个Java并发面试题总结

前言

并发编程几乎是所有互联网公司面试必问的问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。

关于Java并发编程的知识总结了个思维导图,分享给大家

整理了网络上热门的123道Java并发面试题,看看你都遇到过哪些?

Java 并发编程(一)

1、在 java 中守护线程和本地线程区别?

2、线程与进程的区别?

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

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

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

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

7、为什么使用 Executor 框架?

8、在 Java 中 Executor 和 Executors 的区别?

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

10、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?

11、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?

12、什么是 Executors 框架?

13、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?

14、什么是 Callable 和 Future?

15、什么是 FutureTask?使用 ExecutorService 启动任务。

16、什么是并发容器的实现?

17、多线程同步和互斥有几种实现方法,都是什么?

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

19、你将如何使用 thread dump?你将如何分析 Thread dump?

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

21、Java 中你怎样唤醒一个阻塞的线程?

22、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?

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

24、什么是多线程中的上下文切换?

25、Java 中用到的线程调度算法是什么?

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

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

28、java 中有几种方法可以实现一个线程?

29、如何停止一个正在运行的线程?

30、notify()和 notifyAll()有什么区别?

31、什么是 Daemon 线程?它有什么意义?

32、java 如何实现多线程之间的通讯和协作?

33、什么是可重入锁(ReentrantLock)?

34、当一个线程进入某个对象的一个 synchronized 的实例方法后,其它线程是否可进入此对象的其它方法?

35、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

36、SynchronizedMap 和 ConcurrentHashMap 有什么区别?

37、CopyOnWriteArrayList 可以用于什么应用场景?

38、什么叫线程安全?servlet 是线程安全吗?

39、volatile 有什么用?能否用一句话说明下 volatile 的应用场景?

40、为什么代码会重排序?

41、在 java 中 wait 和 sleep 方法的不同?

42、用 Java 实现阻塞队列

43、一个线程运行时发生异常会怎样?

44、如何在两个线程间共享数据?

45、Java 中 notify 和 notifyAll 有什么区别?

46、为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?

47、什么是 ThreadLocal 变量?

48、Java 中 interrupted 和 isInterrupted 方法的区别?

49、为什么 wait 和 notify 方法要在同步块中调用?

50、为什么你应该在循环中检查等待条件?

51、Java 中的同步集合与并发集合有什么区别?

52、什么是线程池? 为什么要使用它?

53、怎么检测一个线程是否拥有锁?

54、你如何在 Java 中获取线程堆栈?

56、Thread 类中的 yield 方法有什么作用?

57、Java 中 ConcurrentHashMap 的并发度是什么?

58、Java 中 Semaphore 是什么?

59、Java 线程池中 submit() 和 execute()方法有什么区别?

60、什么是阻塞式方法?

61、Java 中的 ReadWriteLock 是什么?

62、volatile 变量和 atomic 变量有什么不同?

63、可以直接调用 Thread 类的 run ()方法么?

64、如何让正在运行的线程暂停一段时间?

65、你对线程优先级的理解是什么?

66 、 什 么 是 线 程 调 度 器 (Thread Scheduler) 和 时 间 分 片 (TimeSlicing )?

67、你如何确保 main()方法所在的线程是 Java 程序最后结束的线程?

68、线程之间是如何通信的?

69、为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在Object 类里?

70、为什么 wait(), notify()和 notifyAll ()必须在同步方法或者同步块中被调用?

71、为什么 Thread 类的 sleep()和 yield ()方法是静态的?

72、如何确保线程安全?

73、同步方法和同步块,哪个是更好的选择?

74、如何创建守护线程?

75、什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?

Java 并发编程(二)

1、并发编程三要素?

2、实现可见性的方法有哪些?

3、多线程的价值?

4、创建线程的有哪些方式?

5、创建线程的三种方式的对比?

6、线程的状态流转图

7、Java 线程具有五中基本状态

8、什么是线程池?有哪几种创建方式?

9、四种线程池的创建:

10、线程池的优点?

11、常用的并发工具类有哪些?

12、CyclicBarrier 和 CountDownLatch 的区别

13、synchronized 的作用?

14、volatile 关键字的作用.

15、什么是 CAS

16、CAS 的问题

17、什么是 Future?

18、什么是 AQS

19、AQS 支持两种同步方式:

20、ReadWriteLock 是什么

21、FutureTask 是什么

22、synchronized 和 ReentrantLock 的区别

23、什么是乐观锁和悲观锁

24、线程 B 怎么知道线程 A 修改了变量

25、synchronized、volatile、CAS 比较

26、sleep 方法和 wait 方法有什么区别?

27、ThreadLocal 是什么?有什么用?

28、为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用

29、多线程同步有哪几种方法?

30、线程的调度策略

31、ConcurrentHashMap 的并发度是什么

32、Linux 环境下如何查找哪个线程使用 CPU 最长

33、Java 死锁以及如何避免?

34、死锁的原因

35、怎么唤醒一个阻塞的线程

36、不可变对象对多线程有什么帮助

37、什么是多线程的上下文切换

38、如果你提交任务时,线程池队列已满,这时会发生什么

39、Java 中用到的线程调度算法是什么

40 、 什 么 是 线 程 调 度 器 (Thread Scheduler) 和 时 间 分 片 (TimeSlicing)?

41、什么是自旋

42、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?

43、单例模式的线程安全性

44、Semaphore 有什么作用

45、Executors 类是什么?

46、线程类的构造方法、静态块是被哪个线程调用的

47、同步方法和同步块,哪个是更好的选择?

48、Java 线程数过多会造成什么异常?

上面的这些问题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。

关于这123个热门的Java并发面试题总结了50多页pdf文档

关注我的公种浩:程序员追风,回复 0111 即可领取!

希望能帮助到你面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

最后

欢迎大家一起交流,喜欢文章记得关注我点赞转发哟,感谢支持!

原文地址:https://www.cnblogs.com/zhuifeng523/p/12183129.html

时间: 2024-10-02 00:21:45

2019年全网最热门的123个Java并发面试题总结的相关文章

Java开发面试题整理(2019春招)

一.Java基础部分 1. HashMap和Hashtable各有什么特点,它们有什么区别?(必背题,超级重要) HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronization),以及速度. HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不

2019大厂Java岗面试题全曝光,刷完这1020道,金三银四大厂等你

2019大厂Java岗面试题全曝光,刷完这1020道,金三银四大厂等你 前言: 本文收集整理了各大厂常见面试题N道,你想要的这里都有 内容涵盖:Java.MyBatis.ZooKeeper.Dubbo.Elasticsearch.Memcached.Redis.MySQL.Spring.Spring Boot.Spring Cloud.RabbitMQ.Kafka.Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码. 看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏

2019年全网首发-vSphere 7之VCSA 7.0 RC部署指南

VMware vSphere 7.0 RC版本于2019年10月提供下载,整体的变化并不太大,我们先来看看VCSA 7.0 RC版本的部署.需要说明的是,7.0版本未发布基于Windows的版本. 第1步,下载VMware-VCSA-all-7.0.0-14896550文件,用虚拟光驱挂载或者解压运行,选择"安装". 第2步,提示安装分为两个阶段,特别注意,从6.7 U3版本开始VMware逐渐取消PSC,到7.0版本全面取消. 第3步,勾选"我接受许可协议条款".

2019年下半年系统集成项目管理师(中级)下午案例试题

试题一: 考的是整体管理 问题1: 找出项目存在的问题,这个比较好找 1)未制订其他项目管理子计划,比如:人力资源管理计划,风险管理计划,质量管理计划等 2)未对子计划进行整合 3)项目管理计划未进行整合 4)项目经理仅自己一人完成需求分析 5)项目经理仅凭经验完成需求分析 6)需求未经过评审就开始开发 7)针对需求的修改,未按照变更流程进行 或 未制订变更管理流程 8)与客户的未进行有效的沟通等 9)质量管理人员太晚进驻项目 问题2:一些判断题 问题3:监控项目管理工作的输出(4分) 1)变更

2019年3月31日 LeetCode——69 Java之 x 的平方根

题目要求: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842...,   由于返回类型是整数,小数部分将被舍去.思路:题目要求实现x的平方根,最后结果只保留整数部分.很容易的想到用二分法.代码示例: class Solution { public int mySqrt(int x

最热门的13个Java微服务框架(内附java学习教程分享)

曾经的服务器领域有许多不同的芯片架构和操作系统,经过长期发展,Java的"一次编译,到处运行"使得它在服务器领域找到一席之地,成为程序员们的最爱 本文,我们将和大家分享13个可靠的Java微服务架构最后,如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时间,减少很多在学习中遇到的难题. 1.Spring Boot Java构建Spring应用程序已经有很长一段时间了,Spring Boot是Spring的一个特定版本,它通过

2019最新java常见面试题整理

操作系统说一下线程和进程,它们的区别同步和异步的区别阻塞和非阻塞的区别操作系统中死锁的四个必要条件mmap和普通文件读写的区别,mmap的注意点CPU密集型和IO密集型的区别Linuxlinux 用过的命令kill 用法,某个进程杀不掉的原因(进入内核态,忽略 kill 信号)系统管理命令(如查看内存- 网络情况)管道的使用grep 的使用,一定要掌握,每次都会问在文件中查找shell 脚本find 命令awk 使用讲一下linux的Swap分区硬链接和软连接区别讲一下epoll的基本原理,优点

2019蚂蚁金服中高级Java工程师面试题

面试基础 谈谈一致hash算法? 按照hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间.将这些数字头尾相连,想象成一个闭合的环形.如果集群中加入新的机器,采用它的IP或者唯一别名计算哈希值,也映射到环中.新增key值以顺时针的方向,存储到离自己最近的机器中. 参考:https://blog.csdn.net/cb_lcl/article/details/81448570 说说乐观锁和悲观锁? 乐观锁:假设每次操作别人不会修改数据,当更新的时候根

2019 字节跳动java面试笔试题 (含面试题解析)

本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.滴滴等公司offer,岗位是Java后端开发,最终选择去了阿里巴巴. 面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助.另外,目前在阿里也做面试官的工作,身份从求职者变为面试官,看问题的很多角度也不一样,所以下文中既有求职者的视角,也有面试官的视角 面试流程 ??先说下面试流程,一般大公司都有3-4轮技术面,1轮的HR面.就阿里而言,我共经