总结并发编程常见面试题

Hello,你好呀,我是大白(●—●)

并发编程常见面试题

  • 在Java中守护线程和用户线程的区别?
  • 线程与进程的区别
  • 什么是多线程中的上下文切换
  • 死锁与活锁的区别,死锁与饥饿的区别?
  • synchronized底层实现原理
  • 什么是线程组,为什么在Java中不推荐使用?
  • 什么是Executors框架?为什么使用Executor框架
  • 在Java中Executor和Executors的区别?
  • 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic class)?
  • Java Concurrency API中的Lock接口(Lock interface)是什么? 对比synchronized它有什么优势?

  • 什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
  • 什么是Callable和Future?
  • 什么是FutureTask?
  • 什么是并发容器的实现?
  • 多线程同步和互斥有几种实现方法,都是什么?
  • 什么是竞争条件?
  • 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
  • 在Java中CycliBarriar和CountDownLatch有什么区别?
  • 什么是不可变对象,它对并发应用有什么帮助?
  • notify()和notifyAll()有什么区别?

  • 什么是可重入锁(ReentrantLock)?谈谈它的实现。
  • 当一个线程进入某个对象的一个synchronized的实例方法后,其他线程是否可进入此对象的其他方法?
  • 乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
  • 什么是CAS操作,缺点是什么?
  • SynchronizedMap和ConcurrentHashMap有什么区别?
  • 写时复制容器可以用于什么应用场景?
  • volatile有什么用?能否用一句话说明下volatile的应用场景?
  • 为什么代码会重排序?
  • 在java中wait和sleep方法的不同?
  • 一个线程运行时发生异常会怎样?

  • 为什么wait,notify和notifyAll这些方法不在thread类里面?
  • 什么是ThreadLocal变量
  • Java中interrupted和isInterrupted方法的区别?
  • 为什么wait和notify方法要在同步块中调用?
  • 为什么你应该在循环中检查等待条件?
  • 怎么检测一个线程是否拥有锁?
  • 你如何在Java中获取线程堆栈?
  • Java线程池中submit()和execute()方法有什么区别?
  • 你对线程优先级的理解是什么?
  • 你如何确保main()方法所在的线程是Java程序最后结束的线程?

  • 为什么Thread类的sleep()和yield()方法时静态的?
  • 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
  • 你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
  • 用Java实现阻塞队列
  • 用Java写代码来解决生产者—消费者问题。
  • 用Java编写一个会导致死锁的程序,你讲怎么解决?
  • Java中如何停止一个线程?
  • JVM中哪个参数是用来控制线程的栈堆栈大小的
  • 如果同步块内的线程抛出异常会发生什么?

  • 单例模式的双重检查实现是什么?为什么并不安全?如何在Java中创建线程安全的Singleton?
  • 写出3条你遵循的多线程最佳实践
  • 请概述线程池的创建参数,怎么样合理配置一个线程池的参数?
  • 请概述锁的公平和非公平,JDK内部是如何实现的。
  • 请概述AQS
  • 请概述Volatile

大白(●—●)陪你一起进步!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42292697/article/details/112676567