2026年juc经典面试题及答案_第1页
2026年juc经典面试题及答案_第2页
2026年juc经典面试题及答案_第3页
2026年juc经典面试题及答案_第4页
2026年juc经典面试题及答案_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年juc经典面试题及答案考试时长:120分钟满分:100分一、判断题(总共10题,每题2分,总分20分)1.JUC中的`ReentrantLock`比`synchronized`具有更高的性能。2.`volatile`关键字可以保证变量的可见性,但无法保证原子性。3.`CAS`(Compare-And-Swap)操作是JUC中实现线程安全的核心机制之一。4.`CountDownLatch`和`CyclicBarrier`都可以用于线程间的等待与通知,但用途不同。5.`ThreadPoolExecutor`中的核心线程数默认等于可用处理器核心数。6.`ConcurrentHashMap`的底层数据结构是Segment数组,每个Segment是独立的锁。7.`AtomicInteger`的`getAndIncrement`方法是线程安全的,但不是原子操作。8.`ReentrantReadWriteLock`允许多个读线程同时访问,但写线程是独占的。9.`ThreadLocal`变量在线程结束时由系统自动回收,无需手动清理。10.`Phaser`(分段器)适用于大型并发场景,可以动态调整参与线程的数量。二、单选题(总共10题,每题2分,总分20分)1.以下哪个方法可以用于判断当前线程是否持有`ReentrantLock`?A.`isLocked()`B.`isHeldByCurrentThread()`C.`hasQueuedThreads()`D.`getQueueLength()`2.`volatile`变量的内存访问具有什么特性?A.必须先写后读B.具有原子性C.不会引起指令重排D.必须加锁保护3.`CAS`操作中,如果比较并交换失败,线程会执行什么操作?A.直接返回失败B.重新尝试CASC.进入阻塞状态D.抛出异常4.以下哪个类是线程安全的集合?A.`ArrayList`B.`LinkedList`C.`HashMap`D.`ConcurrentHashMap`5.`ThreadPoolExecutor`的`corePoolSize`和`maximumPoolSize`的关系是?A.`corePoolSize`必须小于等于`maximumPoolSize`B.`maximumPoolSize`必须大于等于`corePoolSize`C.两者可以相等D.两者必须相差16.`ConcurrentHashMap`的`putIfAbsent`方法的作用是?A.如果键不存在则添加,否则更新B.如果键存在则添加,否则忽略C.如果键不存在则添加,否则返回当前值D.如果键存在则删除,否则添加7.`AtomicInteger`的`compareAndSet`方法中,如果替换成功,返回什么值?A.`true`B.`false`C.当前值D.新值8.`ReentrantReadWriteLock`的读锁和写锁的兼容性是?A.读锁可以升级为写锁B.写锁可以升级为读锁C.读锁之间互斥,写锁之间互斥D.读锁和写锁可以同时存在9.`ThreadLocal`的内存泄漏风险是什么?A.线程池中线程长时间存活B.`ThreadLocal`未手动清理C.`ThreadLocal`被频繁使用D.JVM垃圾回收效率低10.`Phaser`与`CyclicBarrier`的主要区别是?A.`Phaser`支持动态调整线程数B.`Phaser`只能用于同步C.`Phaser`内存占用更高D.`Phaser`不支持公平锁三、多选题(总共10题,每题2分,总分20分)1.`ReentrantLock`与`synchronized`的相同点包括?A.都支持可重入锁B.都支持公平锁C.都支持条件变量D.都支持非公平锁2.`volatile`关键字的作用包括?A.保证变量的可见性B.保证变量的原子性C.防止指令重排D.提高执行效率3.`CAS`操作的缺点包括?A.可能导致CPU空转B.无法保证原子性C.只能用于整数类型D.可能引起数据竞争4.`ThreadPoolExecutor`的拒绝策略包括?A.`AbortPolicy`B.`CallerRunsPolicy`C.`DiscardPolicy`D.`DiscardOldestPolicy`5.`ConcurrentHashMap`的优势包括?A.高并发性能B.支持原子操作C.内存占用高D.支持分段锁6.`AtomicInteger`的常用方法包括?A.`incrementAndGet()`B.`getAndSet()`C.`addAndGet()`D.`set()`7.`ReentrantReadWriteLock`的适用场景包括?A.高读低写场景B.写操作频繁场景C.读操作频繁场景D.写读比例接近场景8.`ThreadLocal`的内存回收方式包括?A.手动清理B.线程结束自动回收C.JVM垃圾回收D.强制回收9.`Phaser`的常用方法包括?A.`register()`B.`arrive()`C.`arriveAndDeregister()`D.`isTerminated()`10.JUC中实现线程安全的常用方式包括?A.`synchronized`B.`volatile`C.`CAS`D.`ThreadLocal`四、简答题(总共4题,每题4分,总分16分)1.简述`synchronized`与`ReentrantLock`的区别。2.解释`volatile`变量的内存模型。3.描述`ThreadPoolExecutor`的核心参数及其作用。4.说明`CAS`操作可能导致的问题及解决方案。五、应用题(总共4题,每题6分,总分24分)1.假设有100个线程需要同时更新一个全局计数器,如何使用JUC实现线程安全?2.解释`ConcurrentHashMap`的底层数据结构及其并发优化机制。3.设计一个线程安全的计数器,要求支持自增和自减操作。4.使用`ReentrantReadWriteLock`实现一个读写分离的缓存系统。【标准答案及解析】一、判断题1.×(`ReentrantLock`需要手动获取和释放,开销比`synchronized`大)2.√(`volatile`保证可见性,但复合操作需额外保证原子性)3.√(`CAS`是JUC的核心机制之一)4.√(`CountDownLatch`用于倒计时,`CyclicBarrier`用于同步)5.×(默认核心线程数等于处理器核心数,但可配置)6.√(`ConcurrentHashMap`使用Segment分段锁)7.×(`getAndIncrement`是原子操作)8.√(读锁共享,写锁独占)9.×(需手动清理,否则可能导致内存泄漏)10.√(`Phaser`支持动态线程数调整)二、单选题1.B2.A3.B4.D5.A6.A7.A8.C9.B10.A三、多选题1.A,D2.A,C3.A,D4.A,B,C,D5.A,B,D6.A,B,C,D7.A,C8.A,B,C9.A,B,C10.A,B,C,D四、简答题1.答:-`synchronized`是JVM原生锁,`ReentrantLock`是API锁。-`synchronized`自动获取和释放,`ReentrantLock`需手动操作。-`synchronized`支持公平锁,`ReentrantLock`默认非公平,可配置。-`ReentrantLock`支持条件变量,`synchronized`不支持。2.答:-`volatile`保证变量可见性,防止指令重排。-内存模型分为工作内存和主内存,`volatile`变量直接读写主内存。-写操作立即同步到主内存,读操作先从主内存获取。3.答:-`corePoolSize`:核心线程数,任务队列满时新建线程上限。-`maximumPoolSize`:最大线程数,超过则执行拒绝策略。-`keepAliveTime`:线程空闲存活时间。-`unit`:时间单位。4.答:-问题:CPU空转、数据竞争。-解决方案:使用`Lock`或`synchronized`替代,或引入`Backoff`策略。五、应用题1.答:```javaimportjava.util.concurrent.atomic.AtomicInteger;AtomicIntegercounter=newAtomicInteger(0);Runnabletask=()->{for(inti=0;i<1000;i++){counter.incrementAndGet();}};```2.答:-底层数据结构:Node数组+Segment数组(Java8后改为Node数组)。-并发优化:分段锁(Segment),CAS操作。3.答:```javaimportjava.util.concurrent.atomic.AtomicInteger;publicclassSafeCounter{privateAtomicIntegercount=newAtomicInteger(0);publicvoidincrement(){count.incrementAndGet();}publicvoiddecrement(){count.decrementAndGet();}publicintgetCount(){returncount.get();}}```4.答:```javaimportjava.util.concurrent.locks.ReentrantReadWriteLock;publicclassCache<K,V>{privatefinalMap<K,V>cache=newHashMap<>();privatefinalReentrantReadWriteLocklock=newReentrantReadWriteLo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论