没有合适的资源?快使用搜索试试~ 我知道了~
首页Java并发编程面试题--共87题
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 注:本文档根据http://www.importnew.com/12773.html 和http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 这两个网站的并发编程试题集整理得到的文档,
资源详情
资源评论
资源推荐
1
Java 并发编程
2
目录
1 什么是线程? ............................................................................................................................. 1
2 线程和进程有什么区别? ........................................................................................................... 1
3 如何在 Java 中实现线程? .......................................................................................................... 1
4 用 Runnable 还是 Thread? ......................................................................................................... 1
6 Thread 类中的 start() 和 run() 方法有什么区别? .................................................................. 1
7 Java 中 Runnable 和 Callable 有什么不同? ................................................................................ 1
8 Java 中 CyclicBarrier 和 CountDownLatch 有什么不同? ........................................................ 1
9 Java 内存模型是什么? ................................................................................................................ 2
10 Java 中的 volatile 变量是什么? ............................................................................................ 2
11 什么是线程安全?Vector 是一个线程安全类吗? (详见这里) .......................................... 2
12 Java 中什么是竞态条件? 举个例子说明。 ......................................................................... 2
13 Java 中如何停止一个线程? ................................................................................................... 2
14 一个线程运行时发生异常会怎样? ..................................................................................... 3
15 如何在两个线程间共享数据? ................................................................................................. 3
16 Java 中 notify 和 notifyAll 有什么区别? .............................................................................. 3
17 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面? ........................................ 3
18 什么是 ThreadLocal 变量? ..................................................................................................... 3
19 什么是 FutureTask? ................................................................................................................ 4
20 Java 中 interrupted 和 isInterruptedd 方法的区别? ........................................................... 4
21 为什么 wait 和 notify 方法要在同步块中调用? .................................................................. 4
22 为什么你应该在循环中检查等待条件? ................................................................................. 4
23 Java 中的同步集合与并发集合有什么区别? ....................................................................... 4
24 Java 中堆和栈有什么不同? ................................................................................................... 5
25 什么是线程池? 为什么要使用它? ..................................................................................... 5
26 如何写代码来解决生产者消费者问题? ............................................................................... 5
27 如何避免死锁? ....................................................................................................................... 5
28 Java 中活锁和死锁有什么区别? ........................................................................................... 6
29 怎么检测一个线程是否拥有锁? ........................................................................................... 6
3
30 你如何在 Java 中获取线程堆栈? .......................................................................................... 6
31 JVM 中哪个参数是用来控制线程的栈堆栈小的 ................................................................... 6
32 Java 中 synchronized 和 ReentrantLock 有什么不同? ....................................................... 6
33 有三个线程 T1,T2,T3,怎么确保它们按顺序执行? ...................................................... 6
34 Thread 类中的 yield 方法有什么作用? ................................................................................. 6
35 Java 中 ConcurrentHashMap 的并发度是什么? ................................................................... 7
36 Java 中 Semaphore 是什么? .................................................................................................. 7
37 如果你提交任务时,线程池队列已满。会时发会生什么? ................................................. 7
38 Java 线程池中 submit() 和 execute()方法有什么区别? ..................................................... 7
39 什么是阻塞式方法? ............................................................................................................... 7
40 Swing 是线程安全的吗? 为什么? ...................................................................................... 7
41 Java 中 invokeAndWait 和 invokeLater 有什么区别? .......................................................... 7
42 Swing API 中那些方法是线程安全的? .................................................................................. 8
43 如何在 Java 中创建 Immutable 对象? .................................................................................. 8
44 Java 中的 ReadWriteLock 是什么? ........................................................................................ 8
45 多线程中的忙循环是什么? ..................................................................................................... 8
46 volatile 变量和 atomic 变量有什么不同? .......................................................................... 8
47 如果同步块内的线程抛出异常会发生什么? ....................................................................... 9
48 单例模式的双检锁是什么? ................................................................................................... 9
49 如何在 Java 中创建线程安全的 Singleton? .......................................................................... 9
50 写出 3 条你遵循的多线程最佳实践 ....................................................................................... 9
51 如何强制启动一个线程? ..................................................................................................... 10
52 Java 中的 fork join 框架是什么? ......................................................................................... 10
53 Java 多线程中调用 wait() 和 sleep()方法有什么不同? .................................................... 10
54 进程和线程之间有什么不同? ............................................................................................... 10
57 我们如何创建一个线程? ..................................................................................................... 11
58 有哪些不同的线程生命周期? ............................................................................................... 11
59 可以直接调用 Thread 类的 run()方法么? ............................................................................ 11
60 如何让正在运行的线程暂停一段时间? ............................................................................... 11
61 你对线程优先级的理解是什么? ........................................................................................... 11
4
62 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)? ...................................... 11
63 在多线程中,什么是上下文切换(context-switching)? ........................................................ 12
64 你如何确保 main()方法所在的线程是 Java 程序最后结束的线程? ................................... 12
65 线程之间是如何通信的? ....................................................................................................... 12
66 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里? ..................... 12
67 为什么 wait(), notify()和 notifyAll()必须在同步方法或者同步块中被调用? ...................... 12
68 为什么 Thread 类的 sleep()和 yield()方法是静态的? .......................................................... 12
69 如何确保线程安全? ............................................................................................................... 12
70 volatile 关键字在 Java 中有什么作用? .................................................................................. 12
71 同步方法和同步块,哪个是更好的选择? ......................................................................... 13
72 如何创建守护线程? ............................................................................................................... 13
73 什么是 ThreadLocal? ................................................................................................................ 13
74 什么是 Thread Group?为什么不建议使用它? ................................................................... 13
75 什么是 Java 线程转储(Thread Dump),如何得到它?.......................................................... 13
76 什么是死锁(Deadlock)?如何分析和避免死锁? ................................................................. 13
77 什么是 Java Timer 类?如何创建一个有特定时间间隔的任务? ...................................... 14
78 什么是线程池?如何创建一个 Java 线程池? .................................................................... 14
79 什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)? ................ 14
80 Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势? .. 15
81 什么是 Executors 框架? ......................................................................................................... 15
82 什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型? .................................. 15
83 什么是 Callable 和 Future? ...................................................................................................... 15
84 什么是 FutureTask? .................................................................................................................. 16
85 什么是并发容器的实现? ........................................................................................................ 16
86 Executors 类是什么? ............................................................................................................... 16
87 为 什 么 说 ConcurrentHashMap 是 弱 一 致 性 的 ? 以 及 为 何 多 个 线 程 并 发 修 改
ConcurrentHashMap 时不会报 ConcurrentModificationException?........................................... 16
5
序
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java 语言一个
重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎。大多数待遇丰厚
的 Java 开发职位都要求开发者精通多线程技术并且有丰富的 Java 程序开发、调试、优化经
验,所以线程相关的问题在面试中经常会被提到。
在典型的 Java 面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程,
如何创建线程,用什么方式创建线程比较好(比如:继承 thread 类还是调用 Runnable接口),
然后逐渐问到并发问题像在 Java 并发编程的过程中遇到了什么挑战,Java 内存模型,JDK1.5
引入了哪些更高阶的并发工具,并发编程常用的设计模式,经典多线程问题如生产者消费者,
哲学家就餐,读写器或者简单的有界缓冲区问题。仅仅知道线程的基本概念是远远不够的,
你必须知道如何处理死锁,竞态条件,内存冲突和线程安全等并发问题。掌握了这些技巧,
你就可以轻松应对多线程和并发面试了。
许多 Java 程序员在面试前才会去看面试题,这很正常。因为收集面试题和练习很花时
间,所以我从许多面试者那里收集了 Java 多线程和并发相关的 50 个热门问题。我只收集了
比较新的面试题且没有提供全部答案。想必聪明的你对这些问题早就心中有数了, 如果遇
到不懂的问题,你可以用 Google 找到答案。若你实在找不到答案,可以在文章的评论中向
我求助。你也可以在这找到一些答案 Java 线程问答 Top 12。
剩余21页未读,继续阅读
普通网友
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3