社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
翻译自:https://medium.com/geekculture/top-10-system-design-interview-questions-10f7b5ea123d
在我作为微软和Facebook的高级软件工程师和面试官的10年时间里,我曾与数百名应聘者一起工作,帮助他们解决不同的系统设计问题。
开发人员往往会在SDI问题上挣扎,因为它们是开放式的,通常需要一种批判性思维,而在其他编码面试挑战中没有实践过。
虽然SDI问题会随着时间的推移而变化,但有些问题在各大顶级公司的面试中仍然很受欢迎。
今天,我们将探讨10个最常见的系统设计面试问题,你必须在每个问题中解决的常见问题,以及一些帮助你做到这一点的工具。
以下是我们今天要讲的内容::
回答任何问题的技巧
对于这个问题,您将设计一种允许用户在互联网上相互聊天的服务。对话可以是一对一的,也可以是与多个成员的群聊。信息应该只被包含在对话中的人访问。
这个问题要求您创建一个拼车服务,将用户与附近的司机匹配起来。用户可以输入目的地并传输当前位置,并在几秒钟内通知附近的司机。
然后,应用程序跟踪司机和用户当前位置之间的路径,然后从用户的位置到目的地。
这个问题要求你创建一个程序来缩短像TinyURL或bit.ly这样的长url。这些程序接受一个长URL并生成一个新的、唯一的短URL。它们还可以接受缩短的URL并返回原始的完整URL。
对于这个问题,你要设计一个社交媒体服务,我的10万用户都在使用它,比如Instagram。用户应该能够查看被关注用户的帖子的新闻提要,并建议用户可能喜欢的新内容。
面试官通常希望听到你更深入地讨论新闻推送。
对于这个问题,您将设计一个类似论坛的系统,用户可以在其中发布问题和链接。
其他用户可以查看并评论这些问题。问题有表示其主题的标签,用户可以通过标签查看特定主题的问题。用户有一个新闻提要,从他们跟随的标签和相关主题中突出热门问题。
对于这个问题,您将创建一个同步的、跨平台的存储系统,如Dropbox。用户可以存储文件和照片,并从其他设备访问它们。
这个问题要求你创建一个像YouTube这样的在线视频流媒体服务。该服务将存储和传输数百拍字节的视频数据。它还必须存储统计数据(视图、喜欢、视图数量等),并允许用户发表评论。
您的解决方案必须是可伸缩的,以支持数以千计的并发用户。
对于这个问题,您将创建一个API速率限制器,用于限制服务在给定时间段内可以接收的API调用数量,以避免过载。
面试官可以在不同的范围内提出这个问题,从一台机器到整个分布式网络。
对于最后一个问题,您将设计一个近距离服务器,用于存储和报告到餐馆等地方的距离。用户可以根据距离或受欢迎程度搜索附近的地点。该数据库必须存储全球5亿个地方的数据,但具有低延迟。
该服务将部分完成搜索查询,并显示5个建议来完成查询。它应该实时适应高度搜索的内容,并向其他用户提供建议。
例如,“海鹰队赢得了超级碗”会在事件发生的几分钟内被提示。
这些问题可以帮助你理解在系统设计面试中你需要解决的问题类型。练习解决和解释这样的问题是你为下一次面试做准备的最有效的方法。
学习快乐!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!