这些问题涵盖了并发编程的基本概念、线程安全、锁机制、死锁、原子操作、线程池、并发容器以及线程间通信等重要知识点。在面试中,回答这些问题时应该结合具体的场景和实际经验进行回答,清晰地阐述相关的概念和解决方案,并展示对并发编程的深入理解和应用能力。
1.并行与并发有什么区别?
2.说说什么是进程和线程?
3.说说线程有几种创建方式?
4.为什么调用start()方法时会执行run()方法,那怎么不直接调用run()方法?
5.线程有哪些常用的调度方法
6.线程有几种状态?
7.什么是线程上下文切换?
8.线程间有哪些通信方式?
9.ThreadLocal是什么?
10.ThreadLocal怎么实现?
11.ThreadLocal内存泄露是怎么回事?
12.ThreadLocalMap的结构
13.ThreadLocalMap怎么解决Hash冲突的?
14.ThreadLocalMap扩容机制
15.ThreadLocal怎么进行父子线程通信
16.说一下你对Java内存模型(JMM)的理解?
17.说说你对原子性、可见性、有序性的理解?
18.说说什么是指令重排?
19.指令重排有限制吗?happens-before了解吗?
20.as-if-serial又是什么?单线程的程序一定是顺序的吗?
21.volatile实现原理了解吗?
22.synchronized用过吗?怎么使用?
23.synchronized的实现原理?
24.synchronized的可见性,有序性,可重入性是怎么实现的?
25.说说synchronized和ReentrantLock的区别
26.ReentrantLock实现原理?
27.ReentrantLock怎么实现公平锁的?
28.什么是CAS?
29.CAS存在什么问题?如何解决?
30.Java多线程中如何保证i++的结果正确
31.AtomicInteger的原理是什么?
32.什么是线程死锁?我们该如何避免线程死锁?
33.如何排查死锁问题34.什么是线程池?
35.简单说一下线程池的工作流程
36.线程池主要参数有哪些?
37.线程池的拒绝策略有哪些?
38.线程池有哪几种工作队列
39.线程池提交execute和submit有什么区别?
40.怎么关闭线程池?
41.有哪几种常见的线程池
42.说一说newSingleThreadExecutor工作原理
43.说一说newFixedThreadPool工作原理
44.说一说newCachedThreadPool工作原理
45.说一说newScheduledThreadPool工作原理
46.线程池异常怎么处理知道吗?
47.能说一下线程池有几种状态吗?
48.单机线程池执行断电了应该怎么处理?
49.NIO的原理,包括哪几个组件?
50.什么是零拷贝?
1.并行与并发有什么区别?
2.说说什么是进程和线程?
3.说说线程有几种创建方式?
4.为什么调用start()方法时会执行run()方法,那怎么不直接调用run()方法?
5.线程有哪些常用的调度方法
6.线程有几种状态?
线程在自身的生命周期中, 并不是固定地处于某个状态,而是随着代码的执行在不同的状态之间进行切换,如下图:
7.什么是线程上下文切换?
8.线程间有哪些通信方式?
题目太多篇幅太长,就不一一列举了,有需要的同学可以把文档拿回去再继续学习,出了并发的面试题以外还给大家准备了其他技术点的面试笔记,加起来大概十万字,免费分享给大家,需要的可以点下方跳转或者加末尾VX领取,文章有帮助的话希望大家多多点赞支持!
面试笔记资料领取