二.多线程
多线程是java的一名必修课,熟悉并掌握多线程在面试中很重要。一般多线程的面试集中在底层实现,基本概念,线程池等问题。如果对多线程的概念有兴趣可以看下公众号中多线程系列的文章。
-
Volatile的作用是什么?底层是怎么实现的?缓存的一致性协议是什么?有没有了解过内存屏障?
-
Synchronized 的原理有了解?和reentryLock的区别是什么?锁升级是指什么?
-
并发和并行的概念有了解?Java实现并发的方式有几种?
-
线程和进程的概念?守护线程是干什么的?常见的守护线程有哪些?
-
Java怎么创建一个线程,native关键字的作用是什么?Thread类中绝大部分的方法是native的,有了解过怎么实现的么?
-
Runnable和callable分别是什么?Future的作用是什么?
-
线程的状态有哪些?是怎么转换的?Jvm怎么查看线程的运行状态?
-
Sleep和wait的区别?Notify和notifyall的区别是啥?
-
AQS的源码有了解过?怎么实现一个公平锁和非公平锁?共享和非共享?
-
Condition的源码有了解么?什么是等待队列,什么是同步队列?
-
多线程的三个基本特性是什么?Java是怎么实现原子性,有序性,一致性呢?
-
Thread 类中的start和run方法的区别是什么?
-
Threadlocal有了解过?其使用在哪些场景?ThreadlocalMap的key 和value是什么?怎么保证内存不会泄露
-
Java的CAS是怎么实现的?Atomic包中的atmoicinteger 和atmoicintegerFiledUpdater 的区别是什么?分别在什么场景下使用?
-
Java的线程池是怎么实现的?其原理是什么?线程池怎么设计核心线程数和最大线程数,拒绝策略怎么选择?怎么优雅关闭一个线程池?
-
了解死锁么?怎么防止死锁?
-
ConcurrenthashMap的put方法?其扩容过程有了解过?
-
Java安全的阻塞队列有哪些?分别提供了什么功能?
-
Java中提供了哪些线程安全的队列?
-
Fork-join框架有了解过?ParallelStream有使用过?
-
简述一下JMM,as-if-serial语义、happens-before模型?