并发编程

精通预计深耕 6 个月+

星团 后端

学习定位数据结构与算法操作系统原理→ 并发编程 →学完本技能可衔接的下游技能建设中

岗位需求

2 核心 · 0 加分

在职岗位将其列为技能要求

核心岗位薪资带

20k-60k

核心要求岗位的月薪区间

需求趋势

上升 1稳定 1收缩 0

核心要求岗位的趋势分布

面试题库

高频真题 · 参考答案随题展开
1. 并发与并行、同步与异步有什么区别?

并发是任务在同一时间段内交替推进的能力(单核也可并发,靠调度分时),关注任务组织结构;并行是同一时刻真正同时执行(多核多机),关注物理执行。并发不必然并行,单线程事件循环也能并发处理上万个 IO 任务。同步与异步描述调用方等待方式:同步调用阻塞等待结果返回,异步调用立即返回、结果经回调、Future 或事件通知送达;阻塞与非阻塞描述被调用方在等待资源时的状态,两组概念常被混用但正交——同步非阻塞(轮询就绪再读)与异步阻塞(提交后专门等完成事件)都存在。工程含义:CPU 密集任务靠并行多核加速,IO 密集任务靠并发(异步或协程)提高吞吐。能辨析四组词并各举一例即完整。

2. 互斥锁、自旋锁、读写锁分别适合什么场景?

互斥锁(mutex)竞争失败即休眠让出 CPU,唤醒有上下文切换成本(微秒级),适合临界区长、持锁时间不确定的场景,是默认选择。自旋锁失败后忙等循环重试,无切换成本但空烧 CPU,仅当临界区极短(几十纳秒到微秒级)且多核时划算,内核与底层库常用,应用层慎用;实际实现常自旋若干次再退化休眠(自适应自旋)。读写锁允许多读单写,读多写少且读侧持锁较久时可提升并行度,但写者可能饥饿(需写优先策略),且读临界区若很短,锁自身开销可能超过收益,不如直接用普通锁或 seqlock、RCU 思路。进阶可提乐观并发:版本号 CAS 无锁推进,冲突才重试。答题给持锁时长与读写比两个判断维度并各配场景即佳。

3. CAS 是什么?ABA 问题如何解决?

CAS 即比较并交换,硬件级原子指令:仅当内存值等于预期旧值时才写入新值并返回成功,否则失败重试,是乐观并发的基石,Java 的 AtomicInteger、锁升级的轻量级阶段、无锁队列、数据库乐观锁(版本列)都基于它。优点是无挂起与唤醒开销、竞争适中时吞吐高;缺点一是高竞争下自旋重试浪费 CPU,二是只能保证单个变量的原子性(多变量要用锁或打包成对象),三是 ABA 问题:值从 A 改成 B 又改回 A,CAS 认为没变过而实际发生了中间态,对指针复用类场景(无锁栈弹出后压回同地址节点)会破坏正确性。解法是附加版本号:Java 的 AtomicStampedReference 带 stamp,数据库加 version 列,或用 hazard pointer 等回收机制。答出三点缺陷即优秀。

4. 什么是 happens-before 与内存屏障?

编译器与 CPU 会重排指令、缓存也会延迟可见,多线程下「写了不一定马上读到」。happens-before 是语言层(Java、Go、C++)给出的可见性承诺:若 A 操作 happens-before B,则 A 的结果对 B 可见且顺序不可重排。建立关系的常见规则:程序顺序、解锁 happens-before 后续加锁、volatile 或原子写 happens-before 后续读、线程 start 与 join、channel 收发(Go)、C++ 的 acquire 与 release 语义。内存屏障是硬件层实现手段:load 与 store 屏障禁止特定重排并刷新或失效缓存行,acquire 读屏障与 release 写屏障配合构成同步边。错误示范是双检锁不加 volatile 的半初始化对象问题。答题先讲问题(重排与可见性),再讲承诺(happens-before 规则列举),最后落到实践:用高层同步原语,避免自己推导屏障。

5. 线程池的核心参数如何设置与调优?

以 Java ThreadPoolExecutor 为例:corePoolSize 常驻线程、maximumPoolSize 上限、workQueue 任务队列、keepAliveTime 非核心线程空闲存活、拒绝策略(抛异常、调用者执行、丢弃、丢弃最旧)。执行顺序是核心线程、队列、非核心线程、拒绝,先排队再扩容这点反直觉必须讲清。参数经验:CPU 密集取核数加一,IO 密集按 核数 乘(1 加 等待与计算比)估,或直接压测定;更可靠的是按延迟与吞吐目标用指标反推,并给队列设界(无界队列会掩盖过载导致 OOM,有界才有背压)。拒绝策略联动降级(记日志落库补偿、调用者执行做天然限流)。监控线程数、队列深度、任务耗时与拒绝数。另提 Go 与协程池不同,goroutine 便宜仍需并发原语限流。能讲执行顺序与有界队列背压即高分。

🔒 解锁完整面试题库与参考答案(Pro)

含高频追问与作答要点,系统准备面试。

官方文档

2 条

推荐教程

2 条

推荐课程

1 条

上手实践

1 条

🔒 完整前置链分析 + 逐岗位引用明细

本页已免费展示学习定位与市场聚合;Pro 深读补齐完整前置依赖链分析与逐岗位引用明细 (核心/加分与深度档、岗位画像)。

知识分享

社区经验 · 管理员审核后展示

暂无分享——第一个来聊聊你的经验和踩坑吧。

有经验想分享?登录后可提交你的知识分享,管理员审核通过后将署名展示。

难度档决定星等与难度分权重(入门 1 / 进阶 2 / 精通 3);学习资源由编辑部遴选并持续维护, 经验心得欢迎在上方「知识分享」区署名分享。