项目描述:Netflix
简要了解“Netflix”,并学习本项目中我们将实现的功能。
引言
Netflix 是全球最大的视频流媒体平台,提供电影、剧集、人物传记、真人秀等多种内容。其视频资源库正在迅速增长。因此,Netflix 的工程团队持续探索更优的方式向用户展示内容。
本章讨论的场景和问题也适用于任何内容展示功能的优化,以及如何提升用户体验。
问题描述
假设你是一名 Netflix 工程团队的开发者,正在致力于改善用户寻找观看内容的体验。这包括优化搜索功能和推荐系统。
功能需求
为了实现上述改进,我们需要引入以下功能:
-
功能 #1: 允许用户在存在轻微拼写错误的情况下仍能查看相关搜索结果。
-
功能 #2: 在已知不同地理区域各自拥有独立电影排名的前提下,展示全球评分最高的电影。
-
功能 #3: 作为一项人口统计研究的一部分,我们希望高效更新观众的中位年龄数据,每当有新用户注册 Netflix 时。
-
功能 #4: 为更高效地向不同地区分发内容并为用户推荐节目,需要识别出正在流行度上升或下降的节目标题。
-
功能 #5: 为客户端应用实现一个缓存机制,采用“最近最少观看”策略进行缓存项替换。
-
功能 #6: 作为替代方案,实现一种基于“最不常观看”内容的缓存替换策略。
-
功能 #7: 在用户会话期间,用户通常会浏览多个节目以寻找想看的内容。在此过程中,我们希望支持用户在最近浏览过的节目历史中前后跳转。作为开发者,你应该能想到这是一个典型的 栈 结构。但同时,我们也希望用户能够直接跳转到他们浏览过的节目中排名最高的那个。
-
功能 #8: 在对 功能 #7 进行测试时,有用户反馈“上一个”和“下一个”功能无法正常工作。我们需要根据用户的会话历史记录,验证当前实现是否正确,是否存在缺陷。
-
功能 #9: 给定一组初始类别/类型,实现一个功能,返回该类别/类型下的所有可能的电影组合。
-
功能 #10: 在用户会话过程中,可能会出现数据包丢失或缓冲事件等问题。我们需要记录单次会话中缓冲事件的中位数,以便后续优化用户体验。
-
功能 #11: 需要将一组电影以不同顺序呈现给不同用户。我们需要生成指定马拉松播放列表中所有可能的电影排列组合。
-
功能 #12: 为提升 Netflix 用户体验,计划重构“继续观看”栏,使其返回最常被观看的节目。
理解这些功能需求并设计相应的解决方案,将帮助我们将所需功能成功集成到 Netflix 系统中。
在接下来的课程中,我们将讨论这些功能的推荐实现方式。在开始之前,建议你先思考如何实现这些功能。在思考过程中,你会逐渐意识到需要解决的一些底层问题。而这些问题的解决方案,同样适用于常见的编程面试题。