这是我的java面试问题之一......
有人问我,你会使用哪种数据结构来实现 Facebook 帖子、点赞和评论?
我很想听听所有成员的意见......
对于数据库来说,这确实是一项更多的任务(请注意,与此相比,下面的内容有多复杂(因为下面的所有内容都由具有适当索引的适当数据库处理)),但是......
注意我假设只有帖子可以被喜欢,评论是针对帖子的。
帖子:
Posts 可能是post ID 到 post object 的 Map。
如果您想查看用户发布的帖子列表,您还需要一个用户 ID 到一组帖子 ID 的 Map。
喜欢:
您想快速获取每个帖子的点赞数,并查看用户是否喜欢帖子,因此需要将帖子 ID 映射到喜欢它的用户的一组用户 ID。
如果您还想快速查看用户喜欢哪些内容,则需要另一种数据结构 -用户 ID 到喜欢的帖子 ID 集的映射。
注释:
评论可能是评论 ID 到评论对象的映射。连接的帖子 ID 将存储在评论对象中。
您想快速获取每个帖子的评论,因此将帖子 ID 映射到一组评论 ID。
如果您还想快速查看用户发表的评论列表,则需要另一种数据结构 -用户 ID 到一组评论 ID 的 Map。