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. 线程池

    1. 线程池参数
    2. 线程池拒绝策略
    3. 等待队列(阻塞队列)
  10. 并发工具类

    1. CountDownLatch
    2. CyclicBarrier
    3. Semaphore
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值