面试题

面试题

并发

基础部分

多线程

  1. java中有几种方法可以实现一个线程?
  2. 如何停止一个正在运行的线程?
  3. notify()和notifyAll()有什么区别?
  4. sleep()和 wait()有什么区别?
  5. 什么是Daemon线程?它有什么意义?
  6. java如何实现多线程之间的通讯和协作?

  1. 什么是可重入锁(ReentrantLock)?
  2. 当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法?
  3. synchronized和java.util.concurrent.locks.Lock的异同?
  4. 乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

并发框架

  1. SynchronizedMap和ConcurrentHashMap有什么区别?
  2. CopyOnWriteArrayList可以用于什么应用场景?

线程安全

  1. 什么叫线程安全?servlet是线程安全吗?
  2. 同步有几种实现方法?
  3. volatile有什么用?能否用一句话说明下volatile的应用场景?
  4. 请说明下java的内存模型及其工作流程。
  5. 为什么代码会重排序?

实战部分

并发容器和框架

  1. 如何让一段程序并发的执行,并最终汇总结果?
  2. 如何合理的配置 Java 线程池?如CPU密集型任务,基本线程池因该配置多大?IO密集型的任务,基本线程池因该配置多大?用有界队列好还是无界队列好?任务非常多的时候,使用什么阻塞队列能获取最好的吞吐量?
  3. 如何使用阻塞队列实现一个生产者和消费者模型?请写代码。
  4. 多读少写的场景应该使用哪个并发容器,为什么使用它?比如你做了一个搜索引擎,搜索引擎每次搜索前需要判断搜索关键词是否在黑名单里,黑名单每天更新一次。

Java 中的锁

  1. 如何实现乐观锁(CAS)?如何避免ABA问题?
  2. 读写锁可以用于什么应用场景?
  3. 什么时候应该使用可重入锁?
  4. 什么场景下可以使用volatile替换synchronized?

并发工具

  1. 如何实现一个流控程序,用于控制请求的调用次数?

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,一毛也是爱

打开微信或者支付宝扫一扫,即可进行扫码打赏哦