# 1. statx() 的 STATX_ATTR(FS_NODUMP_FL、FS_IMMUTABLE_FL 等)flags 字段? A stx_attributes 只包含权限位,与 inode flags 无关 B stx_attributes 中每一位都保证有效,可无条件使用 C 文件属性标志属于传统 ioctl 专属,statx 无法提供 D 必须结合 stx_attributes_mask 判断哪些位真实有效,STATX_ATTR_IMMUTABLE 对应不可修改属性 ✓ 正确答案
# 2. APFS 的崩溃一致性,为何不用传统日志,checkpoint 与 COW 元数据树如何保证断电后状态一致? A APFS 依赖传统 journal 重放日志来恢复一致性 B APFS 通过 COW 元数据树与 checkpoint 原子更新,断电后从最新有效 checkpoint 恢复 ✓ 正确答案 C APFS 崩溃后必须运行 fsck 深度扫描才能恢复 D APFS 的元数据原地覆盖,断电可能损坏 inode
# 3. statx() 与 statx_timestamp 的 nanoseconds 字段在 NFSv4.2 协议的兼容? A NFSv4.2 不支持纳秒时间戳,statx 的 nsec 恒为 0 B NFSv4.2 以 nsec 精度传输时间戳,但底层文件系统精度可能更低,nsec 可能为 0 ✓ 正确答案 C statx 的纳秒字段在 NFS 上会被截断为秒 D NFSv4.2 时间戳与本地文件系统完全一致,无精度差异
# 4. APFS 的 clone(写时拷贝文件)API 在 macOS(10.12+ 公开)的工程价值? A clonefile 是传统硬链接,修改共享 inode B clonefile 必须复制全部数据,只是命名更友好 C clonefile 通过 COW 共享数据块,创建 O(1) 且零拷贝,写入时才分裂 ✓ 正确答案 D clonefile 只能用于空文件
# 5. Linux 4.11+ statx() 相对 stat() 在纳秒级时间戳(stx_atime, stx_mtime, stx_ctime, stx_btime)的工程价值? A statx 与 stat 时间戳完全相同,无差别 B statx 提供纳秒精度并新增 stx_btime 创建时间,更利于精确变更检测 ✓ 正确答案 C statx 反而把时间戳降级为秒级 D statx 不支持 btime
# 6. statx 的 mask 参数如何让调用方只请求需要的字段(如 STATX_BASIC_STATS),相比 stat 每次全量返回有何性能意义? A mask 让调用方只请求需要的字段,可减少内核与网络文件系统的额外属性查询 ✓ 正确答案 B mask 只影响返回格式,不影响内核工作 C mask 必须请求全部字段,否则返回错误 D stat 与 statx 的 mask 语义相同
# 7. statx() 支持 STATX_BTIME(创建时间)的 backup time 与 crtime 在 ext4 的协同? A btime 只在 NTFS 上有效 B btime 是独立生成的随机值,与 crtime 无关 C ext4 不支持 crtime,btime 恒为 0 D ext4 的 i_crtime 是 statx stx_btime 的数据来源,备份工具利用 btime 做更可靠的变更追踪 ✓ 正确答案
# 8. statx() 在 NFS / SMB / FUSE / 9P 与传统 stat() 兼容的工程边界? A 所有文件系统都完整支持 statx 的全部字段 B 内核会为未实现 statx 的文件系统提供 fallback,调用方须通过 stx_mask 校验字段是否可用 ✓ 正确答案 C statx 在 FUSE 上完全不可用 D statx 的字段缺失时直接返回错误
# 9. APFS snapshot 与 Time Machine 备份的工程价值? A 快照创建必须复制全部数据,成本高 B Time Machine 只能做全量备份 C APFS 快照创建后无法回滚 D APFS 快照基于 COW 即时创建,Time Machine 结合本地快照与增量同步实现高效备份与回滚 ✓ 正确答案
# 10. APFS Space Sharing 在同一物理卷的多卷(Container)共享空间的工程价值? A 每个 Volume 独立固定分区,相互不能借用空间 B 各卷之间不能共享空间 C Space Sharing 只用于临时文件 D Container 内多个 Volume 共享空间,可设 reserve/limit 约束,容量管理更灵活 ✓ 正确答案
# 11. statx 与 stat 的差异,子秒精度时间戳与扩展属性如何? A statx 提供纳秒时间戳、btime 与 stx_attributes 扩展属性,且通过 mask 按需请求 ✓ 正确答案 B stat 比 statx 精度更高 C 两者完全等价 D statx 无法提供文件属性
# 12. APFS 的克隆与快照,COW 与空间共享如何实现? A 克隆与快照都基于 COW,前者针对文件副本,后者针对卷级时间点,均通过共享数据块节省空间 ✓ 正确答案 B 克隆会复制全部数据 C 快照会复制全部数据 D 克隆与快照不共享数据块
# 13. 文件系统时间戳的 2038 问题,为什么 32 位 time_t 会在 2038 年溢出,ext4/APFS 的纳秒时间戳如何规避? A 64 位时间戳也会在 2038 年溢出 B 2038 问题只影响 APFS,不影响 ext4 C 纳秒字段与 2038 问题无关 D 32 位有符号 time_t 在 2038 年溢出,ext4/APFS 用 64 位时间戳加纳秒规避 ✓ 正确答案
# 14. macOS 上 fsync 与 F_FULLFSYNC 的差异,为何 fsync 不保证落盘,APFS 下何时必须用 F_FULLFSYNC? A 两者完全等价 B fsync 比 F_FULLFSYNC 更严格 C fsync 不保证物理落盘,F_FULLFSYNC 强制刷到介质,严格持久性场景必须用 F_FULLFSYNC ✓ 正确答案 D F_FULLFSYNC 只用于网络文件系统
# 15. statx 的 stx_mask 返回位如何指示字段有效性(如 STATX_BTIME、STATX_MNT_ID 可能缺失),迁移代码为何必须校验? A stx_mask 无实际作用 B 未请求的字段也会被填充 C stx_mask 恒等于请求的 mask D 调用方必须校验 stx_mask 中请求字段是否置位,否则可能误用缺失(常为 0)的字段 ✓ 正确答案
# 16. APFS encryption(per-volume)与 macOS FileVault 的关系? A FileVault 基于 APFS 的 per-volume 加密实现,加密发生在 APFS 层对上层透明 ✓ 正确答案 B 两者无关 C FileVault 是独立于 APFS 的应用层加密 D APFS 不支持加密
# 17. APFS 相对 HFS+ 的 crash consistency 改进? A APFS 改用 COW 元数据树与 checkpoint,恢复更快更可靠,取代 HFS+ 的日志机制 ✓ 正确答案 B APFS 从不用 checkpoint C APFS 与 HFS+ 完全一致 D APFS 恢复比 HFS+ 更慢
# 18. APFS 的快照与克隆,写时复制(COW)的机制如何? A COW 创建时立即复制全部数据 B COW 让快照/克隆共享数据块,创建 O(1) 零成本,写入时才分裂 ✓ 正确答案 C COW 与数据块共享无关 D COW 只用于克隆不用于快照
# 19. 文件系统时间戳,纳秒精度与 statx 的扩展如何? A 纳秒时间戳只是统计口径,无实际作用 B statx 不支持纳秒 C 现代文件系统存储纳秒时间戳,statx 规范暴露纳秒字段并新增 btime,利于精确变更检测 ✓ 正确答案 D 纳秒时间戳只有在 64 位系统才有意义
# 20. APFS 容器内卷的空间预留(reserve)与上限(limit),如何限制单卷占用,超出时行为如何? A reserve 保证最小可用空间,limit 限制最大占用,超限写入返回 ENOSPC ✓ 正确答案 B 两者都只影响性能不影响容量 C APFS 卷无法共享空间 D reserve 是上限,limit 是下限