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