拿下技术面上传简历

线上有一棵组织关系树,约 2000 万个节点,每个节点子节点数最多 50,深度最深可能上万层。现在要把整棵树按'层级顺序'导出成文件(同一层的节点写在一起),进程可用堆内存 4GB。你会选 BFS 还是 DFS?BFS 队列的峰值会到多大、4GB 放不放得下?如果业务改成'每个节点必须先输出它的所有子节点、再输出自己',你的方案要怎么变?

数据结构与算法线性与树结构3-5 年知识点 1 个

面试官在考什么

判断候选人能否把遍历方式与内存峰值、栈深度、输出顺序的实际约束挂钩,而不是背三种遍历的定义。

二叉树遍历

回答框架 · 前两步

  1. 按层输出天然是 BFS,但瓶颈是宽度而不是深度:50 叉、上万层意味着叶子层可能接近节点总量,队列里即使只存 8 字节引用也是 1.4 亿字节量级,再叠加节点对象就容易顶到 4GB,必须代入数字判断而不是说'BFS 省内存'。
  2. 深递归 DFS 的风险:上万层深度,每层栈帧几百字节到 1KB,总量从几 MB 到几十 MB,超过线程默认栈(常见 512KB~1MB)必然 StackOverflowError,要用显式栈或调大栈并承担风险。

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

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

延伸阅读

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

同一能力域的其他题