一道关于图的面试题
2012-12-07 20:45
239 查看
最近一直在做一个build system的依赖管理,感觉其中某些内容可以抽取出来,作为一道很不错的面试题:
假设你在同时编译n个项目,他们相互之间有依赖关系,比如:
现在,让你写一个算法,把每个项目的依赖拍平:即把其所有间接依赖+直接依赖的项目都输出。
比如上面这个图的输出就为:
a: b c d e f g
b: c d
c: d
d:
e: f g
f: g
g:
然后,还可以有后续的问题:
如果有环,如何判断并输出环?
如果这些项目有可能有一些外部的依赖,请改变你的算法以适合这种情况。
好,面试到此结束。
下面是个扩展题,没在工作中做到,但后来想了下,觉得挺有意思:
为了提高编译速度,现在需要找出那些可以并行编译的项目,请改进算法实现之。
假设你在同时编译n个项目,他们相互之间有依赖关系,比如:
现在,让你写一个算法,把每个项目的依赖拍平:即把其所有间接依赖+直接依赖的项目都输出。
比如上面这个图的输出就为:
a: b c d e f g
b: c d
c: d
d:
e: f g
f: g
g:
然后,还可以有后续的问题:
如果有环,如何判断并输出环?
如果这些项目有可能有一些外部的依赖,请改变你的算法以适合这种情况。
好,面试到此结束。
下面是个扩展题,没在工作中做到,但后来想了下,觉得挺有意思:
为了提高编译速度,现在需要找出那些可以并行编译的项目,请改进算法实现之。
相关文章推荐
- JavaScript 关于变量作用域的一道面试题
- 一道关于PHP类型转换的面试题
- 关于微软的一道面试题
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- 一道关于Promise应用的面试题
- 一道关于OO面试题
- 一道华为面试题,关于程序优化的
- 由一道面试题想到的关于归并排序的几种写法
- 关于JavaScript的一道初级面试题
- 一道经典的关于Fibonacci数列的面试题(问题)的新想法 -> N阶楼梯问题
- 百度的一道面试题(关于Cache的)
- 关于ThreadLocal的一道面试题(酷我公司)
- 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
- 关于网上的一道面试题
- 一道关于C++继承类的面试题
- 也谈关于一道1到N自然数排序的华为面试题
- 又一道关于STL中的vector容器的面试题
- 测试鸡蛋的硬度:一道关于查找的面试题
- 关于《程序员面试宝典》中一道面试题的答案
- 一道关于反射的面试题(通过反射修改父类私有属性)