Java(并发)多线程编程面试

文章目录

  1. 基础知识

    1. 什么是进程?什么是线程?什么是协程?三者之间的联系与区别?
    2. 什么是僵尸进程?什么是孤儿进程?
    3. 什么是守护线程?守护线程和用户线程有什么区别呢?
    4. 如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?
    5. 说一说并发和并行的区别?
    6. 为什么要进行多线程(并发)编程?多线程编程有什么缺点?
    7. 说一说线程的生命周期以及对应的状态?Java多线程中分别调用什么方法能够转换为下一个状态?
    8. 什么是线程死锁?如何避免死锁?写个Java死锁代码?
    9. 什么是线程上下文切换?
  2. Java线程基础

    1. Java中创建线程有哪几种方式?
    2. 说一下 runnable 和 callable 有什么区别?
    3. 线程的 run()和 start()有什么区别?启动线程调用run()不行吗?
    4. 什么是 Callable 和 Future?
    5. 说一说FutureTask?
    6. Java 中用到的线程调度算法是什么?线程的调度策略?什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?
    7. sleep() 、wait()和 yield() 有什么区别?
    8. 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?
    9. Thread 类中的 yield 方法有什么作用?为什么Thread 类的 sleep()和 yield ()方法是静态的?
    10. notify() 和 notifyAll() 有什么区别?
    11. interrupt()、isInterrupted()和interrupted()方法有什么区别?
  3. Java内存模型相关

    1. 说一说JMM(Java内存模型)?
    2. 知道ThreadLocal吗?有什么作用?知道原理吗?碰到过ThreadLocal内存泄漏问题吗?
    3. 什么是指令重排序?happens-before知道吗?as-if-serial语义知道吗?
    4. 什么是伪共享?如何避免?
  4. 多线程中的锁?

    1. 乐观锁和悲观锁
    2. 公平锁和非公平锁
    3. 独占锁和共享锁
    4. 什么是可重入锁
    5. 什么是自旋锁
    6. 锁升级过程?
    7. 什么是CAS
    8. LockSupport
    9. Condition
  5. voliate、synchronized、reentrantLock

    1. voliate关键字以及 voliate实现原理?
    2. synchronized锁以及synchronized底层实现原理?
    3. reentrantLock及reentrantLock原理?
    4. reentrantLock和synchronized和voliate的区别?
  6. 并发容器

    1. ConcurrentHashMap
    2. CopyOnWriteArrayList
  7. 原子操作类

  8. 多线程阻塞队列(AQS)

  9. 线程池

    扫描二维码关注公众号,回复: 12758936 查看本文章
    1. 线程池参数
    2. 线程池拒绝策略
    3. 等待队列(阻塞队列)
  10. 并发工具类

    1. CountDownLatch
    2. CyclicBarrier
    3. Semaphore

猜你喜欢

转载自blog.csdn.net/weixin_44533129/article/details/112970209
今日推荐