进程&线程
Q: 线程和进程的概念、并行和并发的概念
Q: 创建线程的方式及实现
Q: 进程间通信的方式
Q: 说说 CountDownLatch、CyclicBarrier 原理和区别
Q: 说说 Semaphore 原理
Q: 说说 Exchanger 原理
Q: ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理
Q: 讲讲线程池的实现原理
Q: 线程池的几种实现方式
Q: 线程的生命周期,状态是如何转移的
多线程
Q: 说说线程安全问题,什么是线程安全,如何保证线程安全
Q: 重入锁的概念,重入锁为什么可以防止死锁
Q: 产生死锁的四个条件(互斥、请求与保持、不剥夺、循环等待)
Q: 如何检查死锁(通过jConsole检查死锁)
Q: volatile 实现原理(禁止指令重排、刷新内存)
Q: synchronized 实现原理(对象监视器)
Q: synchronized 与 lock 的区别
Q: AQS同步队列
Q: CAS无锁的概念、乐观锁和悲观锁
Q: 常见的原子操作类
Q: 什么是ABA问题,出现ABA问题JDK是如何解决的
Q: 乐观锁的业务场景及实现方式
Q: Java 8并法包下常见的并发类
Q: 偏向锁、轻量级锁、重量级锁、自旋锁的概念
Q: AtomicInteger底层实现原理;
Q: synchronized与ReentraLock哪个是公平锁;
Q: CAS机制会出现什么问题;
Q: 用过并发包下边的哪些类;
Q: 一个线程连着调用start两次会出现什么情况?
Q: wait方法能不能被重写,wait能不能被中断;
Q: 线程池的实现?四种线程池?重要参数及原理?任务拒接策略有哪几种?
Q: 线程状态以及API怎么操作会发生这种转换;
Q: 常用的避免死锁方法;
Q: 一个线程连着调用start两次会出现什么情况?(由于状态只有就绪、阻塞、执行,状态是无法由执行转化为执行的,所以会报不合法的状态!)
Q: wait方法能不能被重写?(wait是final类型的,不可以被重写,不仅如此,notify和notifyall都是final类型的),wait能不能被中断;
Q: Java线程池的核心属性以及处理流程;
Q: CountDownLatch和CyclicBarrier的区别;
Q: Java线程池的几个参数的意义和实现机制;
Q: Java线程池使用无界任务队列和有界任务队列的优劣对比;
Q: Java中有哪些同步方案(重量级锁、显式锁、并发容器、并发同步器、CAS、volatile、AQS等)
Q: 多个线程同时读写,读线程的数量远远⼤于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?
Q: 线程池内的线程如果全部忙,提交⼀个新的任务,会发⽣什么?队列全部塞满了之后,还是忙,再提交会发⽣什么?
Q: synchronized关键字锁住的是什么东西?在字节码中是怎么表示的?在内存中的对象上表现为什么?
Q: wait/notify/notifyAll⽅法需不需要被包含在synchronized块中?这是为什么?
Q: ExecutorService你一般是怎么⽤的?是每个Service放一个还是个项目放一个?有什么好处?
Q: volatile关键字作用;
Q: 多线程是解决什么问题的?线程池解决什么问题?
Q: 线程池,如何设计的,里面的参数有多少种,里面的工作队列和线程队列是怎样的结构,如果给你,怎样设计线程池?
Q: AQS原理,ReentranLock源码,设计原理,整体过程。
Q: 继续聊多线程源码,sync原理,然后一个场景设计题;
Q: 说下多线程,我们什么时候需要分析线程数,怎么分析,分析什么因素;
Q: 两个线程设计题。记得一个是:t1,t2,t3,让t1,t2执行完才执行t3,原生实现。