项目描述:Facebook
简要了解“Facebook”,并学习本项目中我们将实现的功能。
简介
Facebook 是全球最大的社交媒体公司。该公司还拥有 Instagram 等其他社交媒体平台,Facebook 的工程团队持续探索在各个平台之间更高效地连接用户的方法。这使得用户能够通过彼此的连接,在所有平台上共享和查看内容。
本章讨论的场景和问题涉及 Facebook 在不同平台间的内容分享与浏览功能,以及如何对其进行优化。
问题描述
假设你是 Facebook 工程团队的一名开发者。你的团队需要提升各“姊妹”平台之间的集成度。集成过程中一个关键关注点是通过高效的代码、API 请求频率限制,以及消除同一用户在不同平台上的重复请求,来实现操作效率的提升。此外,团队还被要求借此机会实现检测潜在违规内容的功能。
功能需求
为实现上述功能,我们需要引入以下特性:
-
功能 #1: 找出 Facebook 上属于某用户好友圈的所有人。
-
功能 #2: 将该用户在 Facebook 上的所有好友推荐到 Instagram 上。由于 Instagram 是独立平台,其所有关联关系需复制到独立的数据库中。
-
功能 #3: 同步 Facebook 的动态列表到 Instagram。
-
功能 #4: 限制用户的请求频率。同一请求在另一平台发起前,必须等待指定时间间隔后才能再次发送。
-
功能 #5: 识别被篡改的滥用词和脏话变体,以便标记包含这些词汇的帖子为不适当内容。
-
功能 #6: 将相似的无意义帖子归类聚合,以发现其背后的编码规律。
-
功能 #7: 对用户发布内容进行模式挖掘,需在高性能集群上完成。你需要提出一种最优的帖子分配方案,使集群节点的处理能力得到充分利用。
-
功能 #8: 找出用户提及的话题中最短的连续序列,该序列与好友提及的话题存在重叠。
-
功能 #9: 为了向 Instagram 用户推荐广告,我们希望使用 Facebook 的推荐决策树。已知原始决策树以先序遍历和中序遍历的形式序列化存储,需重建该决策树。
理解这些功能需求并设计相应的解决方案,将有助于我们将所需功能整合进 Facebook 系统。
在接下来的课程中,我们将讨论这些功能的推荐实现方式。在开始之前,建议你先思考如何实现这些功能。你可能会意识到其中隐藏的基础问题,而解决这些问题的方法也适用于常见的编程面试题。