面试问题:大型社交网络的数据结构

use*_*090 10 algorithm data-structures

我偶然发现的另一个有趣的访谈问题 -

为非常大的社交网络(Facebook,LinkedIn等)设计数据结构?

另外,设计一个算法来显示两个人之间的连接或路径(例如me-> foo-> bar-> rob-> ron)

小智 5

我可能会考虑一些不同的无向图,可能存储为稀疏邻接矩阵.至于找到两个人之间的最短路径,由于边缘成本是一致的,我会考虑进行双向搜索.

基本上,以每个人为中心的同心圆出去,其中每个圆圈都是他自己,然后是他的朋友,然后是朋友的朋友等,在每个步骤测试两个圆圈中是否有人.沿着从你发现的第一个人向每个人的中心走的路径,你找到了最短的路径.

您可以尝试其他最短路径算法,但一般来说,大多数最短路径算法只能给出距离而不是实际路径.