Facebook系统设计面试

avatar 713912
tsunade
22154
35
大家好,在我之前的文章中,我讨论了通过浏览多个网站收集的五个最常见的Facebook系统设计面试问题。这些问题是:1.设计Facebook NewsFeed
2.设计Facebook状态搜索
3.在Facebook上设计实时评论
4.设计Facebook Messenger或WhatsApp
5.设计Instagram

链接到我以前的帖子:instant.1point3acres.cn

在本文中,我总结了另外五个常见的Facebook系统设计面试问题。
感谢社区帮助我为面试做准备。我希望这篇文章对面试中的每个人都有益。 🙂

设计邻近服务器
在Facebook上,邻近服务器用于发现附近的景点,例如地点和事件,然后将其推荐给用户。在这个问题中,开发具有以下功能的服务后端:
1.用户可以添加,更新和删除位置。
2.给定以纬度和经度表示的位置,用户可以查询给定距离内的所有附近地点。
3.对该问题的一种可选的后续措施是还查询特定时间在给定位置附近的事件。这基本上将时间的第三个维度添加到了问题上。

设计提前建议
Google会根据我们已经在搜索框中输入的字符来预测并建议自动完成查询列表。这些建议称为提前输入建议,它们有助于增强用户体验并更好地表达其搜索查询。因此,在这个问题上:
1.开发一项服务,根据用户已经在搜索框中键入的字符来建议前十名搜索查询。
2.为简单起见,假设查询的受欢迎程度可以由过去搜索查询的频率来确定。

Facebook的设计隐私设置
在Facebook上,我们可以为发布的帖子设置不同的隐私级别,以仅对特定用户群(例如公共,朋友,朋友的朋友等)可见。
1.开发一项服务,使用户可以为帖子指定不同级别的隐私,以使其仅对Facebook上的特定用户可见。
2.为了使讨论简单,请针对此问题实施两个级别的隐私,即“公共”和“朋友”。
3.如果时间允许,可以在面试结束时讨论更复杂的级别,例如朋友的朋友和自定义组。

设计前N首歌曲
这个问题与为“前N大趋势”主题设计系统非常相似。在这个问题上:
1.开发服务的后端,以在过去X天内为用户获得前N首歌曲。
2.为简单起见,假定一首歌曲的受欢迎程度可以由过去收听该歌曲的频率来确定。

设计网络爬虫
像许多搜索引擎一样,Google使用名为Web Crawler的软件程序来扫描万维网。它下载并索引所有网页,以供用户提交的搜索查询使用。
1.设计Web爬网程序的后端。给定种子网页的列表,它应该下载所有网页并将它们编入索引以供将来检索。
2.该服务应处理重复的网页,以便存储唯一的URL。

通过此视频了解有关这些问题的设计目标,规模估算,高级设计概述和详细架构图的更多信息:youtube.com
  • 637
35条回复