并发编程
多线程类的应用
- java 线程同步有哪些办法、各自的优缺点
- synchronized 和 ReentrantLock 区别,可重入锁是什么?
- threadlocal 有什么用
- Java 中创立线程有几种形式?别离是?当主线程执行完结后,子线程还会继续执行上来吗?
- JUC 中有哪些罕用的汇合?(我的项目中用到的)
- CopyOnWriteArrayList 的实现原理?次要利用什么场景下?优缺点别离是?
- HashMap 不是线程平安的,在高并发环境中做插入会呈现什么状况?为什么?
- jdk1.8 以前 ConcurrentHashMap 是如何实现线程平安的?jdk1.8 当前呢?(1.8synchronized 加 CAS,并引入了红黑树)
- 当调用 ConcurrentHashMap 的 size 办法时,有元素并发插入,ConcurrentHashMap 是怎么解决的?
- synchronized 和 java.util.concurrent.locks.Lock 的比拟。AtomicInteger 原理,为什么要用 CAS 而不是 synchronized?银行的后端如果呈现多人想一个账户大钱的状况,会碰到什么问题?
- 什么是 CAS 操作,如何实现一个自定义锁
- Synchronized 的实现,锁的降级过程。
- AQS 锁理解么?
- wait()、notify 必须在什么状况下应用
- 线程、过程、协程的关系。
- 对 volatile 的了解
- 具体的说一下 concurrentHashMap put 流程
- 你是如何了解同步 / 异步,并发 / 并行的概念的
- 那谈谈 Lock 接口的 API 以及其实现类相干的理解?
- 那么 ReentrantLock 中的 lock 和 unlock 之间的同步如何进行线程间的通信?
- Semaphore 类的理解?
- JUC 包下的计数锁?CountDownLatch?
- CyclicBarrier 的了解?
- ReadWriteLock 与 ReentrantReadWriteLock 的了解和区别?
- 你还理解 ReentrantReadWriteLock 哪些个性?
- ReentrantLock 如何实现偏心和非偏心锁是如何实现?CountDownLatch 和 CyclicBarrier 的区别?各自实用于什么场景?
- 乐观锁和乐观锁的区别?如何实现一个乐观锁?
- AQS 是如何唤醒下一个线程的?
- ConcurrentHashMap 是如何让多线程同时参加扩容?get 须要加锁么,为什么?
- Disruptor 框架的用法,实现
- Future 的异步调用过程是咋样的?Future 超时的状况?有限递归会造成 jvm 内存的什么问题?
- Java8 之后的 ConcurrentHashMap 为什么舍弃分段锁?
- 线程池一整套(实现类及对应的阻塞队列、回绝策略、具体参数、ScheduledThreadPool 有三种构造方法,别离代表什么含意?)
- synchronized 别离润饰在实例办法上和静态方法上,多线程并发时是否会竞争锁?synchronized 润饰在办法上和代码块上有什么区别,底层是怎么实现的?
- 并发编程中的生产者消费者模式代码。[最简略的形式就是应用 wait 和 notify 去阻塞唤醒,当然还能够应用可重入锁 (ReentrantLock),应用锁计数器(CountdownLatch) 等等]
- 为什么要用读写锁而不必 synchronized 这种同步锁
- 如何实现控制线程在某段时间内实现,不实现就撤销。
- 参照 ConcurrentHashMap,如果在多线程场景下应用 HashMap,有什么伎俩提高效率又保障线程平安吗?
- 对 Java 内存模型的了解,以及其在并发中的利用;指令重排序,内存栅栏等
- Java 有什么锁类型?
- 并发容器有哪些, 并发容器和同步容器的区别?
- CLH 同步队列是怎么实现非偏心和偏心的?
- HashMap 在高并发下如果没有解决线程平安会有怎么的安全隐患,具体表现是什么。
- Lock 接口有哪些实现类,应用场景是什么。
- 可重入锁的用途及实现原理,写时复制的过程,读写锁,分段锁(ConcurrentHashMap 中的 segment)
- CountDown 有理解过吗?CountDown 和 CycliBarrier 的区别是是什么?在应用上有啥区别?
- volatile 从指令重排序,内存屏障,聊到总线风暴
- 问了父子线程怎么共享数据
- List 是非线程平安的,你如何把他变成线程平安的?
- synchronized 可否在运行以后线程时运行其它线程
- 什么叫守护线程,用什么办法实现守护线程?如何进行一个线程?
- 并发编程问的很细。多个线程达到同一个状态而后再一起执行,达到某一个状态之后再持续并发执行,这种怎么实现?
- 如何实现控制线程在某段时间内实现,不实现就撤销
- 读写锁中加读锁后如何防止写线程饿死
- 线程池的一些原理,锁的机制升降级
- 问自旋锁实现的形式是什么 问指针指向的地址是虚拟地址还是物理地址。问页表置换的算法有哪些,以及现如今哪种算法比拟高效。问缺页异样置换的过程。如果一个线程批改一个数据,但这时候须要把以后页表置换进来,操作系统如何解决。
- 过程与线程的区别,怎么依据硬件确定你最大创立的线程数(线程池须要思考)
线程池
- 线程池 什么时候达到最大线程数 达到最大线程后持续提交的体现 用过哪些锁
- 线程池有哪些外围参数?简略形容下线程池的原理?
- 创立线程池的形式?
- 线程池线程的提交形式和优缺点。
- 如果咱们在线程池中应用无界队列会造成什么影响呢?
- 多个外围线程去 take 阻塞队列中线程,谁能拿到了?
- 线程池怎么实现复用线程的
- JDK 中偏差锁、自旋锁、轻量级锁、重量级锁的区别?JDK 锁自旋的自旋阈值理解吗?如何调整自旋次数?
- 你们零碎中下单的时候为什么要用线程池?能够用其余的实现计划吗?
多线程的扩大
- 分布式锁 zookeeper 的应用场景 —— 实现分布式锁的形式 ———-redis 分布式锁和 zookeeper 分布式锁
- 你会如何解决高并发场景,例如商城秒杀?
- 数据库的并发策略
- 高并发时如何限流
- 场景模仿: 假如有一个场景,零碎须要某个特定工夫内响应用户申请,比如说 100ms 内实现用户申请,然而在最高峰的时候每单位工夫几百万的用户申请,也就是高并发,但我必须要实现零碎响应及时,而且高可用,如果你是架构师,你该如何架构这个零碎,聊聊你的计划。
- 线程编程题:写两个线程,一个往数组加数据,一个往数组减数据,要求数据不会越界。其实就是生产消费者
- 秒杀零碎如何设计?
- 如果解决并发时候呈现死锁?
欢送搜寻关注自己与敌人共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】