拿下技术面上传简历

一个构建系统的依赖图有 10^5 个任务、约 5×10^5 条依赖边,要求输出一个可执行顺序;同时要把“互不依赖的任务”划分成批次并行执行,批次内任务可同时跑、批次数尽量少。另外系统运行中会不断有新任务和新依赖加入。你怎么做?

数据结构与算法图与搜索3-5 年知识点 1 个

面试官在考什么

考察拓扑排序两种实现的选择、批次划分的等价条件,以及增量维护拓扑序的工程意识。

拓扑排序

回答框架 · 前两步

  1. 环检测:Kahn(入度法)最后输出节点数小于 N 即有环;DFS 后序 + 三色标记(白/灰/黑),遇到指向灰节点的边即有环。
  2. 批次划分等价于 Kahn 按层推进:初始批次是所有入度 0 的节点;每批处理完把出边终点的入度减 1,新归零的进入下一批,批次数等于最长依赖链长度。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题