mmap 共享映射如何实现进程间通信,MAP_SHARED 与 MAP_PRIVATE 差异是什么?
围绕“mmap 共享映射如何实现进程间通信,MAP_SHARED 与 MAP_PRIVATE 差异是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明共享映射的页回写与匿名共享用法。
程序员面试题库第 65 页,收录第 3201–3250 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“mmap 共享映射如何实现进程间通信,MAP_SHARED 与 MAP_PRIVATE 差异是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明共享映射的页回写与匿名共享用法。
围绕“pthread_mutex 在 Linux 上基于 futex 如何做到无竞争时零系统调用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明快路径用户态原子操作、慢路径 futex 等待。
围绕“互斥锁和信号量的本质区别是什么,能用二值信号量替代互斥锁吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明所有权与释放者限制及优先级继承差异。
围绕“nice 值如何影响 CFS 中进程实际获得的 CPU 时间”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 nice 到权重的映射改变 vruntime 增速。
围绕“Linux OOM killer 如何挑选要杀掉的进程,如何保护关键进程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 oom_score 计算与 oom_score_adj 调整手段。
围绕“孤儿进程为什么会被 init 收养而不是变成僵尸”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明父进程先退出时 reparent 到 PID 1 的机制。
围绕“匿名管道和命名管道 FIFO 的区别是什么,管道的容量与阻塞行为如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明有无文件系统节点、PIPE_BUF 原子性及读写阻塞规则。
围绕“优先级反转是如何发生的,优先级继承如何解决”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用三任务经典场景说明,并解释 PI mutex 的提升与恢复。
围绕“Linux 进程有哪几种状态,R、D、Z 各代表什么含义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分可运行、不可中断睡眠与僵尸状态的产生原因。
围绕“pthread_join 与 pthread_detach 的区别是什么,不回收线程会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明线程资源由谁回收及两者都不做导致的泄漏。
围绕“什么是竞态条件,为什么单核 CPU 上也可能发生”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用交错执行而非并行性解释竞态。
围绕“SCHED_FIFO 与 SCHED_RR 的区别是什么,实时任务饿死普通进程怎么办”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分时间片有无及实时节流机制。
围绕“读写锁适合什么读写比例,写者饥饿如何避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须分析读者优先导致的写饥饿与内核 rwsem 的缓解策略。
围绕“Linux SCHED_DEADLINE 适用于什么场景,它如何保证任务按时完成”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 runtime/deadline/period 三参数模型。
围绕“select、poll、epoll 在 fd 数量增长时性能差异的根源是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要聚焦 O(n) 拷贝遍历与就绪事件回调模型的差异。
围绕“System V 或 POSIX 共享内存本身为什么不提供同步,需要配什么机制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明共享内存只是裸内存区、需配合信号量或 futex。
围绕“Linux 信号有哪些不可靠性,为什么信号处理函数里只能调用异步信号安全函数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明信号不排队、可重入问题及 async-signal-safe 限制。
围绕“signalfd 相比传统信号处理函数解决了什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明把异步信号转为同步 fd 事件、可进 epoll 的优势。
围绕“什么场景用自旋锁优于互斥锁,为什么用户态程序很少用自旋锁”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按临界区时长与能否睡眠给出判断。
围绕“线程局部存储 TLS 解决什么问题,__thread 变量的生命周期如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明每线程独立副本避免共享竞态及随线程创建销毁的生命周期。
围绕“同进程内线程切换为什么比跨进程切换便宜”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要聚焦地址空间是否切换导致的页表与 TLB 差异。
围绕“本机通信选 Unix domain socket 还是 TCP loopback,性能与功能差在哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较协议栈开销、文件描述符传递与权限控制。
围绕“vfork 与 fork 的行为差异和使用风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 vfork 共享地址空间、父进程挂起及子进程只能 exec/_exit 的限制。
围绕“进程和线程在资源隔离与共享上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从地址空间、文件描述符、调度单位三个维度说明差异。
围绕“如何诊断并调整 PostgreSQL autovacuum 让它跟上高更新频率的大表”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须基于 pg_stat_user_tables 的死元组与上次清理时间诊断,并说明 scale_factor、thresh。
围绕“PostgreSQL 的 CHECK 约束对 NULL 值如何判定,什么时候约束不会生效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 CHECK 表达式为 NULL 时视为通过这一规则及 NOT VALID 约束对存量数据的行为。
围绕“PostgreSQL 的 CREATE INDEX CONCURRENTLY 如何避免锁表,失败后会留下什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明两阶段扫描降低锁级别的机制、不能在事务块内执行的限制及失败后 invalid 索引的清理。
围绕“为什么 PostgreSQL 前面通常需要连接池,短连接直连会有什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释每连接一个后端进程的模型带来的内存与建立开销及 max_connections 瓶颈。
围绕“PostgreSQL 中 DEFERRABLE 约束在什么场景下需要,推迟到提交时检查有什么代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确环形外键与批量插入乱序场景的用法及延迟检查对性能与触发时机的影响。
围绕“PostgreSQL 排他约束(EXCLUDE)能解决哪些唯一约束无法表达的建模问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须以时间段不重叠预约类场景说明 GiST 与范围类型的配合。
围绕“PostgreSQL 外键的 ON DELETE CASCADE 与 ON DELETE SET NULL 该如何选”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须基于父子数据生命周期归属给出选择标准并提到级联对大表删除的锁与性能影响。
围绕“为什么 PostgreSQL 外键的被引用列自动有索引而引用列没有,什么时候必须手动为引用列建索引”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释父表行被删除或更新时需扫描子表引用列这一机制并给出判断建索引的标准。
围绕“PostgreSQL 热备库上的查询为什么会与 WAL 重放冲突并被取消,如何缓解”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明重放需要清理的行与备库快照冲突的机制,并权衡 hot_standby_feedback 与 max_standby_stream。
围绕“PostgreSQL jsonb 的 @> 包含操作符语义是什么,嵌套数组和对象的匹配规则有哪些边界”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清包含匹配对对象子集、数组元素不要求顺序与重复的判断规则及常见误判。
围绕“PostgreSQL 中如何为 jsonb 的特定查询模式选择 GIN、带 jsonb_path_ops 的 GIN”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按 @> 包含查询、? 键存在查询和等值查询三种模式分别匹配索引类型。
围绕“为什么 PostgreSQL jsonb 不保留键顺序并丢弃重复键,这对依赖原始文档的系统有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确规范化存储语义导致的行为及需要保留原文时应改用 json 或 text 列的取舍。
围绕“PostgreSQL 的 jsonpath 查询语言相比 -> 和 #> 操作符在 jsonb 上多出了哪些能力”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明条件过滤、通配与类正则等表达能力及 @@ 操作符的索引支持情况,不逐一罗列函数签名。
围绕“PostgreSQL 中更新 jsonb 大文档的一个小字段为什么可能很慢,如何缓解”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 jsonb 不可原地更新导致整行重写与 TOAST 影响,并给出拆列、拆表或控制文档大小的对策。
围绕“PostgreSQL 中 json 与 jsonb 两种类型的存储和处理差异是什么,为什么生产上通常选 jsonb”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确文本原样存储与二进制分解存储的差异及其对键顺序、重复键、索引支持和查询性能的影响。
围绕“什么情况下应该用 PostgreSQL jsonb 列而不是拆成关系表加列的建模方式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从查询模式、约束可表达性、索引能力和 schema 演进四个维度给出决策标准。
围绕“PostgreSQL 逻辑复制与物理流复制分别适用于什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从复制粒度、跨版本支持、备库可写性和 DDL 传播四个维度对比并给出选型。
围绕“长时间未提交的事务为什么会导致 PostgreSQL 表膨胀且 VACUUM 无法回收”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释快照仍引用旧版本使死元组不可回收的机制,并给出通过 pg_stat_activity 定位与终止长事务的方法。
围绕“用逻辑复制做 PostgreSQL 异构迁移时,切换割接的关键步骤和风险点是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须涵盖初始数据同步、增量追平、序列值校正与写入停机等割接步骤。
围绕“PostgreSQL 的 MVCC 是如何通过元组版本实现读写互不阻塞的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释每行多版本加事务快照判断可见性的机制,并指出它导致死元组需要清理这一后果。
围绕“PostgreSQL 的 NOT VALID 约束如何做到在线给大表加约束而不长时间锁表”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分添加 NOT VALID 约束与 VALIDATE CONSTRAINT 两步各自的锁级别和对新旧数据的不同约束效力。
围绕“如何在 PostgreSQL 上对在线大表执行加列、改列类型等迁移而不长时间锁表”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分带默认值的加列(11 起不重写表)与改列类型触发整表重写的差异,并给出影子列或建新表切换的低停机方案。
围绕“如何用 PostgreSQL 部分唯一索引实现「每个用户只有一条有效记录」这类软删除场景的唯一性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出带 WHERE 条件的唯一索引设计并说明它与全表唯一约束在查询优化上的差异。
围绕“如何用 PostgreSQL 的 DETACH PARTITION CONCURRENTLY 在线归档历史分区数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明该操作相对直接 DETACH 的锁优势、需要两阶段提交的外键前提及归档后续步骤。
围绕“PostgreSQL 分区表能否挂载外部表作为分区,这种混合分区适合什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 FDW 外部表可作分区的可行性及查询性能与约束保证的损失。
围绕“为什么 PostgreSQL 分区表的唯一约束和主键必须包含分区键,这带来哪些设计限制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释约束只能在分区内保证唯一这一实现原因,并讨论对全局唯一 ID 设计的影响。