版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、15个Java多线程面试题及答案1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3 在 T2 执行完后执行 ?这个线程问题通常会在第一轮或电话面试阶段被问到, 目的是检测你 对” join方法是否熟悉。这个多线程问题比较简单,可以用 join方法 实现。2)在Java中Lock接 口比synchronize(块的优势是什么?尔需要实现一 个高效的缓存, 它允许多个用户读, 但只允许一个用户写, 以此来保 持它的完整性,你会怎样去实现它 ?lock接口在多线程和并发编程中最大的优势是它们为读和写分别提 供了锁,它能满足你写像ConcurrentHashMap这样的高性能数
2、据结构 和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来 提问。芯学苑老师强烈建议在你在面试之前认真读一下Locks因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。3)在java中wait和sleep方法的不同?通常会在电话面试中经常被问到的 Java线程面试问题。最大的不同 是在等待时wait会释放锁,而sleep 一直持有锁。Wait通常被用于线 程间交互,sleep通常被用于暂停执行。4)用Java实现阻塞队列。这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一, 它可以检测侯选者是否能实际的用 Java线程写程序;第二,可以检测 侯选者对并发场景的
3、理解, 并且你可以根据这个问很多问题。 如果他 用wait()和notify。方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。5)用Java写代码来解决生产者一一消费者问题。与上面的问题很类似, 但这个问题更经典, 有些时候面试都会问下面 的问题。在Java中怎么解决生产者一一消费者问题,当然有很多解决 方法,我已经分享了一种用阻塞队列实现的方法。 有些时候他们甚至 会问怎么实现哲学家进餐问题。6)用Java编程一个会导致死锁的程序,你将怎么解决 ?这是我最喜欢的Java线程面试问题,因为即使死锁问题在写多线程 并发程序时非常普遍,但是很多侯选者并不能写deadloc
4、k free code无 死锁代码?),他们很挣扎。只要告诉他们,你有N个资源和N个线程, 并且你需要所有的资源来完成一个操作。 为了简单这里的 n 可以替换 为2,越大的数据会使问题看起来更复杂。通过避免Java中的死锁来得到关于死锁的更多信息。7)什么是原子操作,Java中的原子操作是什么?非常简单的 java 线程面试问题,接下来的问题是你需要同步一个原子 操作。8) Java中的volatile关键是什么作用?怎样使用它?在Java中它跟 synchronize(方法有什么不同 ?自从Java 5和Java内存模型改变以后,基于volatile关键字的线程问 题越来越流行。应该准备好回
5、答关于 volatile 变量怎样在并发环境中 确保可见性、顺序性和一致性。9) 什么是竞争条件 ?你怎样发现和解决竞争 ? 这是一道出现在多线程面试的高级阶段的问题。 大多数的面试官会问 最近你遇到的竞争条件, 以及你是怎么解决的。 有些时间他们会写简 单的代码,然后让你检测出代码的竞争条件。10)你将如何使用thread dump?尔将如何分析 Thread dump?在 UNIX 中你可以使用 kill -3,然后 thread dump 将会打印日志,在windows中你可以使用” CTRL+Break非常简单和专业的线程面试问 题,但是如果他问你怎样分析它,就会很棘手。11)为什么我
6、们调用start()方法时会执行run()方法,为什么我们不能 直接调用run()方法?这是另一个非常经典的 java 多线程面试问题。这也是我刚开始写线程 程序时候的困惑。 现在这个问题通常在电话面试或者是在初中级 Java 面试的第一轮被问到。这个问题的回答应该是这样的,当你调用 start() 方法时你将创建新的 线程,并且执行在run()方法里的代码。但是如果你直接调用run()方法,它不会创建新的线程也不会执行调用线程的代码。12) Java中你怎样唤醒一个阻塞的线程?这是个关于线程和阻塞的棘手的问题, 它有很多解决方法。 如果线程 遇到了 10阻塞,我并且不认为有一种方法可以中止线
7、程。如果线程因为调用wait()、sleep()、或者join()方法而导致的阻塞,你可以中断 线程,并且通过抛出 InterruptedException 来唤醒它。13) 在 Java中 CycliBarria和 CountdownLatcl有什么区别?这个线程问题主要用来检测你是否熟悉JDK5中的并发包。这两个的区别是CyclicBarrier可以重复使用已经通过的障碍,而CountdownLatch 不能重复使用。14) 什么是不可变对象,它对写并发应用有什么帮助 ?另一个多线程经典面试问题, 并不直接跟线程有关, 但间接帮助很多 这个 java 面试问题可以变的非常棘手, 如果他要求
8、你写一个不可变对 象,或者问你为什么 String 是不可变的。15) 你在多线程环境中遇到的共同的问题是什么?你是怎么解决它的?多线程和并发程序中常遇到的有 Memory-interface 、竞争条件、死锁、 活锁和饥饿。问题是没有止境的, 如果你弄错了,将很难发现和调试。这是大多数基于面试的,而不是基于实际应用的Java线程问题。补充的其它几个问题:1) 在 java 中绿色线程和本地线程区别 ?2) 线程与进程的区别 ?3) 什么是多线程中的上下文切换 ?4)死锁与活锁的区别,死锁与馅饼的区别 ?5)Java中用到的线程调度算法是什么?6)在Java中什么是线程调度?7)在线程中你怎么处理不可捕捉异常 ?8)什么
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024情侣共同投资合作协议书3篇
- 浙江交通职业技术学院《建筑综合体实训休闲娱乐空间》2023-2024学年第一学期期末试卷
- 《病毒性肝炎护理》课件
- 2024独家房产交易居间合作合同版B版
- 金融行业市场营销总结
- 物流仓储销售工作总结
- 环境工程师工作总结
- 2024年特惠版广告投放协议3篇
- 渠道管理与控制总结
- 2024年音乐节舞台设备租赁合同3篇
- 光伏项目安全专项施工方案
- 消化科护士的职责和工作流程
- 展望未来4-单词表
- 冠脉旋磨术疾病查房
- 教师培训的教师专业知识与技能
- 人工智能在体育训练与竞技分析中的应用
- 2024版幼儿园哲学思考与人生观主题班会课件
- 2023年拓展加盟经理年终总结及下一年计划
- 比赛对阵表模板
- 混凝土技术规格书
- 医美药品基本管理制度范本
评论
0/150
提交评论