# 1. LSM-Tree 的读写放大中写放大与读放大相互制约,compaction 策略(size-tiered/leveled)如何取舍? A size-tiered compaction 的读放大更低 B leveled compaction 读放大低但写放大高,size-tiered 反之 ✓ 正确答案 C 写放大与读放大可以同时降到接近 1 D LSM 的 memtable 落盘不会产生任何放大
# 2. HAMT 的位图节点中如何用 32 位位图+稀疏子数组表示 5-bit 分叉,查询/插入的复杂度与结构共享? A HAMT 的查找复杂度为 O(log₂ n) B HAMT 节点用 32 位位图标记分支存在性,子数组仅存存在的分支 ✓ 正确答案 C HAMT 的不可变更新需要复制整棵子树 D 位图的作用是存储 key 本身
# 3. 函数式可合并堆中为什么斜堆(skew heap)的合并最坏 O(n) 但摊还 O(log n),配对堆在 decrease-key 上的表现? A 斜堆合并的最坏复杂度与摊还复杂度都是 O(log n) B 斜堆合并最坏 O(n),但可用"重轻节点"势能证明摊还 O(log n) ✓ 正确答案 C 配对堆的 decrease-key 需要维护严格的 rank 平衡 D 配对堆的插入复杂度为 O(log n)
# 4. Zipper 数据结构中如何用'焦点+上下文'实现 O(1) 的树/列表导航与局部修改,与可变指针遍历的差异? A Zipper 支持 O(1) 的随机访问 B Zipper 的每次修改需要复制整棵数据结构 C Zipper 的导航与局部修改均为 O(1),修改只重建上下文而共享其余结构 ✓ 正确答案 D Zipper 是可变数据结构,需要手工管理指针
# 5. 用摊还分析评估 AI 系统的资源消耗,如何衡量 token 使用与缓存命中的均摊成本,为什么峰值与均摊要分开看? A 均摊成本与峰值成本总是相等 B Prompt 缓存只降低延迟、不影响 token 均摊成本 C 容量规划应按均摊流量设计以保证 SLA D 均摊成本 = 总资源成本/操作数,适合成本核算与定价,而容量需按峰值设计 ✓ 正确答案
# 6. AI 生成算法的正确性验证中如何用对拍、性质测试与复杂度证明识别幻觉代码? A 复杂度证明能发现小数据下全部正确的超时幻觉代码 B 性质测试必须依赖另一个参考实现 C 对拍只能抓实现间的输出差异,无法发现"两个实现犯同样错误"的问题 ✓ 正确答案 D 对拍在数据规模增大后依然能测出超时
# 7. AI 辅助解题的常见错误中边界、溢出、复杂度过高与输入假设,如何系统排查? A 字符串用 + 拼接的复杂度是 O(n) B 边界错误只发生在数组为空时 C 排查溢出应扫描所有乘法与累加点并用最大输入估算位数 ✓ 正确答案 D 输入假设失效只会导致 RE,不会导致 WA
# 8. AI 生成代码的差分验证中如何用同一输入对比多个独立实现(暴力 vs 优化)的输出,定位 AI 代码的逻辑错误? A 参考实现必须与优化实现共享核心算法 B 差分验证只能发现超时错误 C 差分验证要求参考实现与目标实现路线独立,并用 delta debugging 约减最小错例 ✓ 正确答案 D 输出不一致时无需约减即可直接定位 bug
# 9. Prompt 缓存(Prefix Cache/Semantic Cache)的数据结构中如何按 prompt 前缀命中缓存,语义缓存的相似度阈值如何影响准确率? A 前缀缓存用 Trie/哈希按 token 前缀匹配并复用 KV cache,语义缓存用 ANN 加相似度阈值判定 ✓ 正确答案 B 语义缓存的阈值越高,命中率越高 C 前缀缓存需要嵌入模型计算相似度 D 阈值越低,误判命中的风险越小
# 10. 算法正确性的分层保障中单元测试、性质测试与对拍各覆盖哪类错误,如何组合使用成本最低? A 对拍的成本最低,应优先使用 B 单元测试能覆盖所有随机输入 C 性质测试不依赖参考实现,可抓"两实现同错",对拍覆盖面广但依赖参考实现 ✓ 正确答案 D 性质测试只能验证输出格式
# 11. Agent 记忆的分层存储中短期上下文窗口、长期向量检索(Mem0/MemGPT)如何用 ANN 索引管理,记忆的写入/遗忘策略? A 记忆写入不需要去重与合并 B 短期上下文窗口是无限容量的 C 遗忘策略与容量管理无关 D 长期记忆以嵌入向量存入 ANN 索引,配合元数据过滤与重排检索 ✓ 正确答案
# 12. Immer 的不可变更新原理中为什么基于 Proxy 的 draft 能实现结构共享,与手写展开(spread)在性能上的差异? A Immer 的 draft 是原对象的深拷贝 B Immer 通过 Proxy 实现惰性 copy-on-write,未修改子树保持原引用实现结构共享 ✓ 正确答案 C 手写 spread 会自动复制所有嵌套层 D Proxy 方案比手写展开在任何场景都更快
# 13. Lens 与 Prism 中如何用组合子实现嵌套不可变数据的读写,Prism 相对 Lens 在'可能缺失'结构上的差别? A Lens 组合后无法保持结构共享 B Lens 可以处理任意可能缺失的结构 C Prism 的 get 是总函数,永不失败 D Lens 聚焦必然存在的字段,Prism 用 Option 处理可能缺失的分支 ✓ 正确答案
# 14. 版本控制的底层结构中 Git 的对象模型(blob/tree/commit)如何用内容寻址实现不可变快照,与 path copying 的关系? A Git 每次提交都复制全部文件内容 B Git 用内容哈希寻址对象,未变化的子树被新快照直接共享(path copying) ✓ 正确答案 C commit 对象只记录文件差异 D 修改文件内容不会改变 blob 的哈希
# 15. 可持久化栈/队列/映射的实现中持久化队列需要双栈或显式版本指针,Clojure 的 PersistentQueue 如何 O(1) 入队出队? A 持久化队列可以直接用单链表实现 O(1) 出队 B Clojure PersistentQueue 用双栈实现:入队压入栈、出队弹输出栈,空时反转,摊还 O(1) ✓ 正确答案 C 持久化栈的 push 需要复制整个链表 D 持久化映射用平衡二叉树实现 O(1) 操作
# 16. 基于性质的测试(quickcheck),如何用随机生成输入+不变量(幂等、结合律)验证 AI 组件的鲁棒性,与示例驱动测试的差异? A 性质测试用随机输入验证不变量并自动收缩反例,覆盖比示例测试更广 ✓ 正确答案 B 性质测试需要人工列出所有期望输出 C 示例驱动测试能发现所有边界错误 D shrinking 的作用是放大反例
# 17. Okasaki 的惰性求值持久化中为什么惰性(lazy)与记忆化能让某些持久化操作摊还 O(1),如惰性队列的 rotate 技巧? A 惰性队列用 schedule 每次操作推进一点 rotate 工作,配合记忆化使出队摊还 O(1) ✓ 正确答案 B 惰性求值使每个操作立即执行 C 记忆化会让相同计算重复执行多次 D 持久化队列无法做到摊还 O(1)
# 18. Pyrsistent 库的不可变集合中如何在不复制全部数据的情况下实现 O(log n) 更新的持久化向量,与内置可变类型的互操作? A 持久化结构比原生 list 在所有场景都快 B PVector 的每次更新都会复制全部元素 C Pyrsistent 与内置 dict 的键比较语义不同 D Pyrsistent 的 PVector 用 32 路分支树 + 路径复制,更新 O(log n) 且共享未变子树 ✓ 正确答案
# 19. AI 系统的实验评估设计中如何控制随机种子与输入分布,用置信区间而非单次指标判断延迟/质量的差异? A 评估应固定随机种子、分层构造输入分布,并用置信区间与显著性检验判断差异 ✓ 正确答案 B 单次运行的指标足以判断两个版本的差异 C 随机种子只影响训练,不影响评估 D 输入分布只需覆盖平均情况
# 20. 渐进分析在 AI 时代的适用性中算法复杂度仍需先于实测评估(规模外推),LLM 相关组件如何做复杂度建模? A 小规模实测结果可以完全替代渐进分析 B 自注意力 O(L²) 意味着上下文长度翻倍计算量约翻 4 倍,复杂度可预测规模外推 ✓ 正确答案 C decode 阶段的 KV 缓存读取与上下文长度无关 D 复杂度分析无法用于 LLM 组件
# 21. AI 原生数据结构中学习型索引、ML 辅助缓存替换在经典复杂度框架下的定位与局限? A 学习型索引用模型预测位置 + 误差校正,收益依赖分布稳定,且缺乏最坏情况保证 ✓ 正确答案 B 学习型索引的最坏查询复杂度优于 B 树 C ML 缓存替换在所有负载上都优于 LRU D 学习型索引不需要任何校正步骤
# 22. AI 工具时代算法面试的考察重心变化中“讲清思路、复杂度与边界”比“默写模板”更重要,如何用 AI 辅助刷题而不形成依赖? A AI 时代面试更看重思路推导、复杂度论证与边界测试,而非默写模板 ✓ 正确答案 B 模板记忆在 AI 时代仍然是最重要的面试能力 C 用 AI 刷题时应直接采用 AI 的答案 D 复杂度论证能力可以被 AI 完全替代
# 23. 如何用 AI 生成代码做差分验证,同一题目让多个模型或多种解法作答,对比输出与复杂度的差异? A 多解合法的题目可以直接比较输出字符串 B 多模型/多路线生成实现并做输出与复杂度的双重差分,可降低同错概率 ✓ 正确答案 C 所有 AI 生成的实现使用完全相同的算法,差分无意义 D 复杂度差分只需比较小规模运行时间
# 24. 函数式语言中 AVL 树的实现中插入/删除通过路径复制返回新树,如何利用模式匹配实现旋转与平衡检查? A 函数式 AVL 的插入需要复制整棵树 B 函数式 AVL 插入沿路径复制节点、共享未变子树,并用模式匹配枚举旋转分支 ✓ 正确答案 C 模式匹配无法表达双旋情况 D 函数式 AVL 无法保留旧版本
# 25. Bw-Tree 的无锁结构中为什么用 delta 链与 CAS 代替原地修改,相比 B+ 树在多核写入上的优势与空间放大? A Bw-Tree 比 B+ 树在任何场景都更优 B Bw-Tree 的修改需要锁定整棵树的路径 C delta 链越长读性能越好 D Bw-Tree 通过页映射表 + CAS 与 delta 链实现无锁更新,代价是空间放大与读回放 ✓ 正确答案
# 26. 列式存储(Parquet/ORC)的压缩与查询优势中为什么按列存能提升压缩率并加速投影/聚合,与行存的应用边界? A 列式存储利用列内同构数据提升压缩率,并加速投影与聚合 ✓ 正确答案 B 列式存储对单行点查更高效 C 行存对整列聚合更高效 D 压缩率与存储布局无关
# 27. 并发哈希表的实现层次中 Java ConcurrentHashMap 的桶锁、TBB 的 concurrent_hash_map、无锁(Junction)各自的适用场景? A 锁粒度越粗吞吐越高 B TBB 的 concurrent_hash_map 是纯无锁实现 C 无锁哈希表不需要考虑内存回收问题 D ConcurrentHashMap 用 CAS 插入首节点 + 桶级锁处理冲突,读路径无锁 ✓ 正确答案
# 28. 数据跳过(Data Skipping)与 Zone Map 中如何在列存中记录每块 min/max 以跳过无关数据块,与布隆过滤器的配合? A 布隆过滤器可以完全替代 min/max 统计 B Zone Map 只能用于等值查询 C Zone Map 记录每块 min/max 做谓词区间判定跳过块,布隆过滤器补充等值谓词的块级判定 ✓ 正确答案 D 数据跳过对随机分布的数据列收益最大
# 29. 向量索引在 AI 检索中的选型中 ScaNN/Faiss/Milvus 的 IVF/HNSW/PQ 参数如何按数据规模与召回要求选择? A 向量索引不需要评测集调参 B IVF 的 nprobe 越大延迟越低 C PQ 量化不会损失任何精度 D HNSW 适合百万级高召回,IVF-PQ 用 nlist/nprobe 与量化压缩换规模与内存 ✓ 正确答案
# 30. 无锁队列的 FAA 与 LCRQ 中 fetch-and-add 比 CAS 环更简单,LCRQ 如何通过可重复入队提高吞吐? A FAA 队列用原子加法分配槽位替代 CAS 重试,LCRQ 分段减少全局竞争 ✓ 正确答案 B CAS 环队列在核数增加时吞吐线性提升 C LCRQ 的每个段只有一个全局计数器 D FAA 比 CAS 环更复杂
# 31. Free Monad 的解释器模式中如何用 Free 把命令构建与解释分离,与 tagless final 在编译期约束上的差异? A 两者完全等价 B Free 在编译期检查解释器支持性 C tagless final 有 AST 分配开销 D Free Monad 把命令构建为 AST 再解释,tagless final 用类型类在编译期约束效果 ✓ 正确答案
# 32. 对 AI 系统(RAG/Agent)做模糊测试中如何生成边界输入(长上下文、对抗性提示)并验证输出安全与引用准确性? A RAG 模糊测试需构造长上下文与注入等边界输入,并自动验证安全与引用准确性 ✓ 正确答案 B 模糊测试只需随机字符即可发现所有问题 C 引用准确性无需自动化验证 D 对抗性提示只影响聊天类模型
# 33. LLM 推理的 KV Cache 管理中 PagedAttention 如何按页分配 KV 缓存减少碎片,Speculative Decoding 如何用草稿模型并行验证加速? A 投机解码牺牲输出质量换取速度 B KV Cache 连续分配没有碎片问题 C PagedAttention 用页表式分配消除 KV 缓存碎片并共享前缀页,投机解码用草稿模型并行验证加速 ✓ 正确答案 D KV Cache 大小与序列长度无关
# 34. Michael-Scott 无锁队列中需要 dummy 节点与双 CAS(数据+next),内存回收(hazard pointer/epoch)为何必要? A 无锁队列可以直接 free 弹出的节点 B MS-queue 用 dummy 节点解耦头尾,无锁释放需 hazard pointer 或 epoch 回收防 ABA ✓ 正确答案 C dummy 节点是多余的 D 双 CAS 用于同时修改两个队列
# 35. CRDT 的持久化中如何把状态合并日志落盘并支持重放,与协同编辑离线同步的关系? A CRDT 重放必须按全局顺序执行 B CRDT 操作日志按因果序落盘,配合快照压缩,重放与合并均无冲突 ✓ 正确答案 C 协同编辑用"最后写入者赢"解决冲突 D CRDT 状态型与操作型完全一样
# 36. 三种可持久化技术对比中 Fat Node(O(1) 空间但查询需二分版本)、Path Copying(O(log n) 空间)、HAMT(位图压缩)各自的取舍? A Path Copying 每次修改复制整棵树 B Fat Node 查询无需版本查找 C HAMT 的空间复杂度为 O(n²) D Fat Node 空间 O(1)/修改但读某版本需二分版本号,Path Copying 空间 O(log n) 查询无额外因子 ✓ 正确答案
# 37. RAG 的混合检索中 BM25 稀疏检索与向量稠密检索如何融合(RRF/加权),元数据过滤如何用倒排+向量索引协同实现? A 元数据过滤只能在检索后做 B RRF 需要两路分数分布一致 C RRF 用排名倒数融合两路结果,无需归一化分数;元数据过滤可与 ANN 遍历下推协同 ✓ 正确答案 D BM25 与向量检索没有互补性
# 38. BPE/WordPiece 分词的数据结构中如何用词频统计与合并规则构建词表,Unigram 语言模型分词的 Viterbi 解码? A BPE 构建词表不需要统计共现频次 B WordPiece 按纯频次合并 C Unigram 分词只能用贪心最长匹配 D BPE 迭代合并最高频符号对构建词表,Unigram 用 Viterbi DP 求最优切分 ✓ 正确答案
# 39. 向量化执行(SIMD)在 OLAP 中的应用中如何按批处理列数据并用 SIMD 指令做过滤/聚合,与逐行解释执行的差异? A SIMD 过滤仍需逐行分支判断 B 逐行解释执行的指令开销可以摊薄到每行 C 向量化执行按批处理列数据,用 SIMD 掩码与累加器做过滤/聚合,规避逐行分派开销 ✓ 正确答案 D 向量化执行不需要数据对齐
# 40. Clojure 持久化集合在 JVM 的实现中为什么用 32 路分支(5-bit 段),与 Scala Vector 在分支因子与缓存局部性上的对比? A 32 路分支使节点恰好占数个缓存行,树高 log₃₂n,是缓存局部性最优折中 ✓ 正确答案 B 分支因子越大缓存局部性越差 C Scala Vector 没有尾数组优化 D Clojure 向量追加是 O(log n) 的严格上界
# 41. 形式化方法验证 AI 组件的边界中 TLA+ 适合验证并发协议而非神经网络,如何用模型检查验证 Agent 状态机不变量? A 安全性不变量与死锁无关 B 模型检查可以直接验证神经网络的输出质量 C TLA+/模型检查适合验证 Agent 状态机与并发协议的不变量,而非神经网络本身 ✓ 正确答案 D TLA+ 无法表达并发交错
# 42. 概率分析在 AI 系统中的应用中如何估计检索召回率、缓存命中率的分布,用期望与尾部分布(P99)指导容量设计? A 缓存命中率是恒定常数 B 用单次测量即可确定容量 C 命中率/召回率应作为分布估计,期望管平均成本、P99 管峰值容量预留 ✓ 正确答案 D 容量设计只取决于均值
# 43. 模型量化的原理中 INT8/INT4 如何用缩放因子近似权重,GPTQ/AWQ 的逐层误差补偿与推理加速的权衡? A 量化用 scale/zero-point 映射权重到低比特,GPTQ 用二阶信息补偿舍入误差,AWQ 保护激活显著的通道 ✓ 正确答案 B INT4 量化没有任何精度损失 C 量化只减少显存,不加速推理 D 量化误差只存在于权重,不随层传播
# 44. 向量检索的数据结构与参数中 HNSW 的 M/efConstruction、IVF-PQ 的 nlist/nprobe 如何权衡召回与延迟,DiskANN 的 SSD 索引如何设计? A HNSW 用 efSearch 控制查询召回-延迟,IVF-PQ 用 nprobe 与 PQ 压缩换规模,DiskANN 用压缩向量遍历 + 全精度重排适配 SSD ✓ 正确答案 B efSearch 越大延迟越低 C PQ 压缩不损失任何召回 D DiskANN 需要全索引常驻内存
# 45. 学习型索引与经典索引中在可预测数据分布下为何能逼近最优,最坏情况下如何退化? A 学习型索引在所有分布下都优于 B 树 B 学习型索引靠模型预测 + 误差校正逼近最优,但分布突变或对抗输入会使误差膨胀而退化 ✓ 正确答案 C 学习型索引不需要误差界保证正确性 D 插入删除不会影响学习型索引的误差
# 46. 算法复杂度在 LLM 推理成本评估中的作用中如何估算检索、生成、缓存各环节的时间与 token 成本? A 输出 token 与输入 token 单价相同 B 上下文长度不影响 KV cache 内存 C prefill 是 O(L²d) 随输入长度平方增长,decode 每 token 需读 O(Ld) 的 KV cache ✓ 正确答案 D 检索环节与 token 成本无关
# 47. 面试中遇到“AI 能秒解”的题如何展示差异化,从可维护性、边界覆盖、复杂度论证与测试设计角度作答? A 面试只需默写标准解即可 B 面对 AI 能秒解的题,应展示权衡论证、边界枚举与测试设计等工程判断 ✓ 正确答案 C 复杂度论证只需报出大 O 符号 D 边界覆盖与面试评分无关