乐趣区

关于java:大厂面试系列二并发编程

并发编程

多线程类的应用

  • 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 内实现用户申请,然而在最高峰的时候每单位工夫几百万的用户申请,也就是高并发,但我必须要实现零碎响应及时,而且高可用,如果你是架构师,你该如何架构这个零碎,聊聊你的计划。
  • 线程编程题:写两个线程,一个往数组加数据,一个往数组减数据,要求数据不会越界。其实就是生产消费者
  • 秒杀零碎如何设计?
  • 如果解决并发时候呈现死锁?

欢送搜寻关注自己与敌人共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】

退出移动版