拿下技术面上传简历

一个构建系统有 n 个模块,依赖用 m 条有向边表示:若存在 A→B,表示 B 必须先于 A 构建。要求输出一个可行的构建顺序;如果依赖里存在环,还要能定位并输出环上的节点。请说明你选 Kahn 入度法还是 DFS 三色法、怎么判环,以及在"要求输出字典序最小的构建顺序"这个附加约束下要改哪里。

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

面试官在考什么

判断候选人是否两种拓扑排序实现都写过,能不能区分"只知道有环"和"能定位环",以及是否清楚字典序最小该怎么改。

拓扑排序

回答框架 · 前两步

  1. Kahn:统计所有节点入度,入度为 0 的入队;出队时把其邻居入度减 1,减到 0 就入队。结束后若已输出节点数 < n,说明有环。O(n+m)。
  2. DFS 三色标记(白=未访问、灰=在栈上、黑=已完成):遇到指向灰色节点的边就找到了环,沿递归栈回溯即可输出环上节点;后序反转就是拓扑序。

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

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

延伸阅读

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

同一能力域的其他题