项目描述:推特(Twitter)
简要了解“Twitter”,并学习本项目中我们将实现的功能。
简介
Twitter 是一个社交媒体平台,用户可以在上面发布并互动交流称为“推文”(Tweets)的消息。由于每条推文的文本长度最多为 280 个字符,Twitter 也被视为一种微型博客服务。Twitter 用户可以通过关注彼此来互动,从而查看对方发布的推文。他们还可以转发(Retweet)、评论或点赞其他推文。
本章讨论的场景和问题与 Twitter 的推文管理及推荐系统相关。
问题描述
假设你是 Twitter 工程团队的一名开发者,团队决定开发一些对外暴露的 API 接口,并构建可用于内部运作的模块。
部分功能涉及将来自多个来源的推文按时间顺序合并显示 feeds;另一些功能则与数据分析和推荐系统有关。
功能需求
为了实现上述功能,我们需要引入以下特性:
-
功能 #1:创建一个 API,用于计算某位用户所有推文的总点赞数。
-
功能 #2:实现一个模块,将某用户的推文按时间顺序插入到已填充的 Twitter 推文流中。
-
功能 #3:识别用户推文获得最多互动人数的时间段。
-
功能 #4:判断一组人是否可以被划分为两个组,使得同一组内的人互不关注对方;若可划分,则向同组成员推荐彼此。
-
功能 #5:通过追踪某一天全球范围内的热门推文,持续记录热搜话题标签(hashtags)。
-
功能 #6:在指定时间段内,计算用户数据的移动平均值,以动态调整部署的服务器数量。
-
功能 #7:给定一个表示某些人每日推文中使用的话题标签的日志列表,将使用相同话题标签组合的用户分组,并返回这些用户及其使用该标签组合的日期。
理解这些功能需求并设计相应的解决方案,将有助于我们将所需功能集成到 Twitter 系统中。
在接下来的课程中,我们将讨论这些功能的推荐实现方式。在开始之前,建议你先思考如何实现这些功能。你可能会发现其中一些问题与常见的编程面试题有相似之处。解决这些问题的基本思路同样适用于其他典型的编码面试题目。