CronJob 的调度表达式、时区与并发策略 concurrencyPolicy 如何配置?
围绕“CronJob 的调度表达式、时区与并发策略 concurrencyPolicy 如何配置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Allow/Forbid/Replace 三种并发策略及 timeZone 字段的版本要求。
并发编程专题面试题第 4 页,显示第 151–200 题,共找到 448 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“CronJob 的调度表达式、时区与并发策略 concurrencyPolicy 如何配置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Allow/Forbid/Replace 三种并发策略及 timeZone 字段的版本要求。
围绕“Linux 中如何查出某个端口被哪个进程占用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 ss -lntup 与 lsof -i 的具体用法及输出字段解读。
围绕“如何防止误执行的递归 fork(fork 炸弹)把服务器进程表耗尽”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 RLIMIT_NPROC 对普通用户的进程数约束及其局限。
本文介绍定位Linux进程内线程级CPU占用问题的方法,重点使用 top -H 和 pidstat -t 获取TID,并通过转换十六进制关联线程栈,同时说明适用边界与常见误区。
围绕“磁盘 IO 被打满时如何定位是哪个进程在读写”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用 iotop 或 pidstat -d 关联进程与读写速率,并说明需要 root 的原因。
分析kill、pkill、killall的定位与匹配差异,重点指出killall在不同Unix平台上的危险行为,并给出先pgrep再kill的安全实践原则,避免误杀他人进程。
围绕“lsof 除了看打开文件,还能回答哪些排障问题?举三个不同场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用端口占用、已删除文件持有者、某进程全部网络连接三个互不相同场景说明,不与单独的 ss 题重复结论。
围绕“怀疑某进程内存泄漏,如何用 /proc 和工具确认 RSS 持续增长”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 /proc/pid/status 的 VmRSS 采样与 pmap/smaps 定位增长段的方法。
围绕“CPU 紧张时如何用 nice/renice 降低批处理任务影响而不停掉它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 nice 值与调度权重关系、非 root 只能降不能升的限制。
围绕“进程被系统莫名杀掉,如何确认是 OOM Killer 干的并调整 oom_score”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 dmesg/journalctl 查 OOM 记录的方法及 oom_score_adj 保护关键进程的方式。
围绕“孤儿进程和守护进程在进程树上表现有何不同,如何让进程脱离终端存活”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分被 init 收养的孤儿与主动 daemon 化进程,并比较 nohup、setsid、disown 的适用场景。
本文解释 Linux 进程 D 状态的不可中断睡眠原理,说明 kill 无效的原因,并给出用 /proc/pid/stack、dmesg 和 ps 定位 IO 卡点的方法,强调必须恢复底层设备而非强杀进程。
围绕“排查异常进程时 ps aux、ps -ef 与 pstree 各自适合回答什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按诊断目标(资源排序、完整命令行、父子关系)区分三者输出,不罗列全部 ps 选项。
本文解释 SIGTERM 与 SIGKILL 的本质区别:可捕获性。说明为何排障时先尝试 SIGTERM,分析 SIGKILL 的残留风险,并给出具体场景和边界判断。
围绕“进程响应变慢时如何用 strace 找到它卡在哪类系统调用上”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 strace -p 附加、-c 统计耗时分布与识别 connect/futex 卡住的读法。
本文解释 load average 包含 D 状态任务,CPU 低时如何通过 ps 查 D 进程、iostat 验 IO,区分 CPU 与 IO 瓶颈。
围绕“要对几万个文件执行命令,xargs 相比 for 循环快在哪,-P 并行有什么坑”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 xargs 减少进程 fork 次数的批量机制及 -P 并发的输出交错与退出码问题。
本题讲解 Linux 僵尸进程的产生机制、用 ps 定位父进程 PPID 的方法,以及为何只有父进程 wait 才能回收。给出排查步骤和应急处理,区分僵尸与孤儿进程,并说明 kill 无效的原因。
围绕“MongoDB TTL 索引过期删除是实时的吗,延迟来自哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明后台线程周期清理导致延迟及分片/副本集上的行为。
围绕“在高并发场景下,同一请求中多个异步数据获取是否存在竞态条件?如何防止”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明由于数据获取是并发的,但缓存机制会自动合并结果,因此无需额外加锁,但需注意副作用。
围绕“Next.js 14+ 中,如何通过 `cache` 配置控制单个请求的数据缓存行为?不同配置对并发请求的影响是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 `force-cache`、`no-store` 和 `stale-while-revalidate` 的语义差异,以及它们如。
解释 cwd 只改变子进程工作目录、env 显式对象不会自动与父环境合并,结合绝对可执行路径示例说明 PATH 查找、相对文件路径和跨平台环境键名问题。
解释 detached 的平台差异、unref 对父事件循环引用的影响和 stdio 连接的责任,说明它们不提供守护重启或资源管理,并给出后台任务应交给进程管理器的判断依据。
区分 spawn 的参数校验异常、异步启动失败和程序非零退出,解释 ENOENT 的命令与 cwd 来源,并用 Promise 包装示例展示及时监听 error 以及只结算一次的调用接口。
解释 execFile 默认不经过 shell 时元字符如何作为普通参数传递,通过参数回显示例验证边界,并讨论 shell:true、选项注入、路径授权、Windows 脚本与运行权限的限制。
区分子进程退出与标准流关闭,说明 exit 后输出仍可能到达、共享管道为何延迟 close,以及启动失败、退出信号和输出收集任务应如何统一收尾。
说明 fork 是启动 Node 子进程并建立 IPC 的专用方式,区分它与操作系统 fork、共享内存和普通 spawn,并讨论消息序列化、send 回调、业务确认、背压及断连后的任务状态。
解释 exec 与 execFile 收集 stdout、stderr 的缓冲限制,使用中文输出示例区分字符数与字节数,并比较调整有界预算、spawn 流式消费、文件输出和保留有效诊断的处理方式。
围绕“如何实现 Node.js 子进程之间类似 shell 管道 a | b 的数据流转”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出将一个子进程的 stdout pipe 到另一个的 stdin 及错误传播处理。
围绕“fork 的子进程 IPC 发送对象时序列化机制是什么,哪些类型不能传”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出默认 JSON 序列化丢失函数/undefined/Symbol 及 advanced 序列化的差异。
围绕“spawn 时设置 shell:true 会带来哪些行为变化和代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 shell:true 支持管道通配符等 shell 语法但增加注入风险和进程开销。
从 shell 解析、参数传递、输出消费和进程生命周期比较 spawn 与 exec,说明 execFile 的位置、大输出与长任务的选择,以及异步创建进程为什么仍需要处理背压和错误。
按 stdin、stdout、stderr 三个文件描述符解释 stdio 配置,比较管道消费、终端继承和忽略输出,说明 null 流、背压、交互工具及 IPC 对进程退出的影响。
说明同步子进程阻塞当前 Node 线程事件循环的范围,区分 spawnSync 返回结果与 execSync 抛错,并纠正 timeout 一定按时返回的误解,给出 CLI、启动任务和服务请求的选择依据。
围绕“Node.js 父进程异常退出后其子进程会怎样,如何避免孤儿进程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出父进程崩溃不会自动回收子进程及退出钩子/killSignal/tree-kill 的清理方案。
围绕“Node.js cluster 模块如何工作,为什么能监听同一个端口”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出主进程创建多个 worker 进程、主进程或操作系统分发连接实现端口共享。
围绕“cluster 模块的轮询调度策略在 Windows 之外如何分发新连接”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出默认 round-robin 由主进程接收连接并轮流分发给 worker、可用 schedulingPolicy 修改。
围绕“cluster 模式下 WebSocket 或有状态连接为什么需要粘性会话,如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出轮询分发会把同一会话的连接落到不同 worker、需按客户端标识哈希分发或外置共享状态。
围绕“多核利用场景下 cluster 和 worker_threads 分别适合什么任务”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 cluster 隔离进程适合服务横向扩容与故障隔离、Worker 线程适合计算卸载与共享内存。
围绕“cluster 的主进程和 worker 进程之间如何通信”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 worker 基于 fork 内置 IPC 通道用 send/message 交换消息。
围绕“cluster 中某个 worker 崩溃后如何保证服务整体可用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出监听 exit 事件自动 fork 新 worker、配合重启频率限制防崩溃风暴。
围绕“如何用 cluster 实现 Node.js 服务的平滑重启(零停机发布)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出逐个 fork 新 worker 并优雅关闭旧 worker 先停收新连接再处理完存量请求。
围绕“不引入 worker_threads 时如何把一个长 CPU 计算拆小避免阻塞事件循环”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出用 setImmediate/定时器把循环切片让出事件循环及其与 Worker 方案的性能差距。
围绕“设计 Node.js 接口服务时如何判断一个任务应该卸载到 Worker 线程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出按任务耗时与调用频率评估对事件循环的影响、给出生成器分片/Worker 的取舍标准。
围绕“子进程 IPC 消息发送过快时 send 返回 false 意味着什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 IPC 通道有内部缓冲、返回 false 表示需等待 drain 否则内存积压。
围绕“Node.js IPC 中 send(message, sendHandle) 传递句柄能实现什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出可把 TCP server/socket 句柄传给子进程让多个进程共享监听或接管连接。
围绕“进程间通信选择 Node.js 内置 IPC 还是本地 TCP/Unix Socket,依据是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出内置 IPC 零配置但仅限 fork 的子进程关系、跨语言跨机器需走标准网络协议。
围绕“进程级隔离和线程级隔离在 Node.js 故障场景下的行为差异是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出子进程崩溃不影响父进程、Worker 内崩溃可控但共享内存误写会污染数据。
围绕“在 Worker 线程中 AsyncLocalStorage 等异步上下文能否跨线程传递”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出每个 Worker 有独立事件循环与上下文、跨线程传递需显式携带数据。
围绕“Node.js Worker 线程中 Atomics.wait 和 Atomics.notify 解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 SharedArrayBuffer 读写竞争需要 Atomics 做原子操作与阻塞唤醒。