我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

  在微软和Facebook的十年担任高级软件工程师和面试官。我与数百名申请人一起工作,因为他们解决了不同的系统设计问题。

  开发人员倾向于解决SDI问题,因为它们是如此开放,并且通常需要一个批判性思维,这些思维不能练习其他编码面试挑战。

  虽然SDI问题随着时间的推移而变化,但其中一些问题在各种顶级公司仍然非常受欢迎。

  如今,我们将探讨最常见的10个系统设计面试问题,必须在每个问题和一些工具中解决常见问题解答,可以帮助您完成此任务。

  这是我们今天要介绍的内容:

  任何问题的提示1。设计聊天服务2。汽车共享服务设计3。设计URL缩短服务4。设计社交媒体服务5。设计社交留言板6。设计文件存储服务7。设计视频流服务8。设计API率限制器9。设计一个接近服务器10。设计前进输入服务旁边了解到任何SDI问题的提示是开始通过语句开始每个问题,您知道:列出系统的所有必需功能,这种系统可能遇到的常见问题以及系统愿望处理的流动。列出该过程允许面试官在开始解决方案之前查看您的程序技能,并纠正任何可能的误解。任何权衡叙述:每个系统设计选择都很重要。在每个决策点,至少列出了选择的前部和负面影响。请澄清您的面试官:大多数系统设计问题故意尴尬。提出澄清问题,显示您的面试官您如何看待问题并了解系统需求。讨论新兴技术:每个问题的结束概述了系统以及您可以从机器学习中受益的地方。这将表明您不仅为当前解决方案准备。它还为未来的解决方案做好准备。

  

  1。设计全球聊天服务,例如, Facebook Messenger或WhatsApp

  关于这个问题,您将设计一项服务,允许用户通过Internet互相聊天。谈话可以是一对一对话。它也可以与许多成员聊天。对话框中包含的邮件只能访问这些消息。

  必须通过Internet发送和接收基本函数消息。服务必须支持一对一和群组聊天。稍后应稍后存储该消息。用户应该能够发送图像和视频和短信。应在传输过程中加密消息。该消息应在最小延迟处可见。如果您在没有互联网连接的情况下发送电子邮件,常见问题是什么?它在恢复后发送它吗?如何加密和解密消息而不会增加延迟?用户如何接收通知?从设备中拉动消息(如果服务器正在等待发送消息,服务器将定期提示设备或将消息推到服务器(设备提示服务器发送)?需要将数据库模式划分为多个表的工具:用户表(具有用户ID和联系人),聊天表(使用聊天ID和参与用户ID)和消息表(具有引用聊天ID的过去的消息)。使用WebSocket设备和服务器之间的双向连接。使用推送通知通知会员,即使他们离线。

  

  2。设计拼车或Lyft等拼车

  此问题要求您创建与附近驱动程序匹配的乘车共享服务。用户可以输入目的地并发送当前位置,在几秒钟内通知附近的司机。

  然后,该应用程序跟踪驱动程序和用户当前位置之间的路由,然后跟踪从用户位置到目的地的路由。

  基本函数必须跟踪所有用户和驱动程序的当前位置。在运输,用户和驱动程序必须收到更新的旅行信息。必须在此过程的所有阶段支持成千上万的用户。并相应地扩展。驱动程序和用户必须始终连接到服务器。常见问题解答如何在繁忙时期保持较低的延误?驾驶员与用户配对如何?迭代所有司机都将获得欧洲交付距离效率低下。如果驾驶员或用户失去连接怎么办?如何存储所有缓存的位置数据?需要被视为使用S2Geometry库将位置拆分为单元格的工具。驾驶员的距离是使用位于同一单元格中同一单元格中的驱动器计算的。使用分布式存储来存储所有用户的位置,每个用户的位置数据约为1KB。如果位置数据被暂停,等待重新连接时,设备将继续报告其先前的位置。提示最近的司机旅行,请留下缓冲区。如果他们拒绝,转到下一个司机。

  

  3.设计URL短期服务,例如tinyurl或bit。l

  此问题要求您创建一个程序来缩短长URL,例如tinyurl或bit。莉。这些程序使用长URL并生成一个新的唯一短URL。它们还可以输入缩短的URL并返回原始的完整URL。

  基本函数返回短的URL必须存储原始URL的原始URL新URL必须能够链接到存储的原始URL缩短的URL应该允许重定向支持自定义短URL必须支持许多请求常见问题解答如果两个用户用户同样自定义 URL,该怎么办?如果用户数量超过预期怎么办?数据库如何调整存储空间?需要考虑的创建网站需要多少钱工具使用哈希链接原始和新URL使用REST API负载均衡高流量,并使用多线程处理前端客户端通信一旦使用NoSQL数据库存储原始URL,就处理了多个请求(没有关系 存储的URL之间)

  

  4.设计公共社交媒体服务,例如, Facebook,Twitter或Instagram.

  关于这个问题,您将为100设计进行社交媒体服务,000用户如Instagram。用户应该能够查看追随者帖子的新闻,并建议用户的新内容。

  面试官经常想听你讨论你的新闻来源。

  强大的新闻来源和推荐的系统用户可以发布公共帖子其他用户可以评论或顶级INS, 您必须舒适地容纳许多用户系统。 您必须使用常见问题。 众所周知的用户将有数百万人的粉丝。与普通用户相比,他们将如何处理?系统如何分配重量?与新帖子相比,旧帖子的浏览可能性很小。节点读写的比率是多少?是否有更多读取请求(用户正在查阅帖子)或写请求(用户正在创建一个帖子)?您如何增加可用性?系统如何更新?如果节点出现故障会发生什么?您如何有效地存储您的帖子和图像?需要考虑的工具用于最大限度地使用滚动更新和复制节点来最大限度地提高可用性。使用训练有素的机器学习算法推荐帖子。创建数据库架构,分别存储名人和用户。使用社交地图进一步跟踪以下习惯

  网站建设开发公司

  5。设计社交网络和留言板服务,例如, Quora,reddit或hackernews.

  关于这个问题,您将设计一个类似于论坛的系统,用户可以发布问题和链接。

  其他用户可以查看和评论问题。问题有一个标签代表其主题,用户可以按照标签查看有关特定主题的问题。用户有一个新闻来源,新闻源突出了标签和相关主题的常见问题。

  前提用户必须能够创建公共帖子,应用标签帖子必须按标签排序其他用户必须能够实时发布评论。数据库必须存储在每个帖子上(视图的数量,按新闻源必须从以下标签和用户想要的其他标签显示帖子。必须支持高流量受众和新帖子。常见问题我们的产品只需要在网络上运行?用户上传的用户/链接在哪里?系统将如何确定相关标签?显示非付费标签的帖子是多少?如何在服务器网络上分配帖子?需要考虑使用SQL数据库映射关系数据的工具(有帖子,帖子有评论/喜欢,类别有相关的帖子,等待)使用多线程和负载均衡器层来帮助支持更高的流量。使用碎片来破坏系统。根据类别,考虑将相同标签的帖子锐化。使用机器学习和自然语言处理来找到标签之间关系之间的相关性

  

  6。设计全球文件存储和共享服务,例如, Dropbox,谷歌云硬盘或谷歌专辑

  关于这个问题,您将创建一个同步跨平台存储系统,例如, dropbox。用户可以存储文件和照片并从其他设备访问它们。

  前提用户应该能够为旧版本的文件保存/删除/更新/共享文件以保存回滚文件更新,应在多个设备上同步常见问题解答?你如何处理更新?您是否再次重新上传整个文件?您需要完整的文件更新吗?系统如何同时处理两个用户?需要被视为将文件划分为多个部分的工具。仅更新零件,不是整个文件。使用像Amazon S3等云存储来处理内部数据库。使客户端不断检查服务器以确保应用程序同时更新。

  

  7。设计全球视频流服务,如youtube或netflix

  此问题要求您创建在线视频流服务。例如, YouTube。此服务将存储并传输数百个PB的视频数据。它还必须存储统计信息(查看,喜欢这个数字,观看号码, 等等。),并允许用户评论。

  您的解决方案必须可扩展,支持数千个并发用户。

  必要的功能视频应该能够通过互联网接收不间断的流视频统计,以接收不间断的流视频统计,应该存储和访问每个视频。必须保存和显示的评论,视频向其他网民评论应支持数千名用户的高流量常见问题您的服务您的服务如何确保广泛的互联网质量?您的服务如何应对流动突然下降(缓冲区,质量下降, 等等。)?视频存储如何?需要考虑用于存储和传输视频数据的工具。使用机器学习建议新的视频内容。雕像以防止不一致造成的现象。用户在片刻之前查看了数据。没有输入数据。

  

  8。Firebase或GitHub的设计API率限制器

  关于这个问题,您将创建API率限制器,可以通过在给定时间段限制服务来接收API调用的数量。避免过载。

  面试官可以从机器到整个分布式网络,各种尺寸的要求。

  如果其请求被阻止,基本函数设备仅限为每小时10个请求,限制器必须通知用户。必须处理适合其尺寸的流量。常见问题解答您的系统如何测量每小时请求?如果用户在1:20发出10个请求,然后在2:10发送另外10个请求,然后, 虽然小时数发生了变化,它们仍在同一1小时窗口中发出20个请求。分布式系统和本地系统的设计是什么?需要考虑的工具用于使用滑动时间窗口来避免每个小时重置。保存计数器整数而不是请求本身以保存空间。

  

  9。设计一个类似于yelp或附近的地方/朋友的关闭服务器

  对于最后一个问题,您将设计一个邻近的服务器,它用于存储和报告与餐厅和其他地方的距离。用户可以按距离或流行搜索附近的位置。数据库必须将数据存储在世界各地的5000万个地点。但延迟低。

  必要的功能存储在超过5亿个位置。必须唯一确定位置,并具有相应的数据,例如, 质量检验和服务时间。搜索必须以最少的延迟返回结果。用户必须能够通过距离或质量搜索结果。常见问题如何存储这么多位置数据?你如何获得快速搜索结果?您的系统如何处理不同的人口密度?刚性纬度/经度网格将导致基于密度的变化。我们如何优化常见的搜索位置?需要被视为使用关系数据库存储位置列表和相关数据的工具。使用缓存来存储最流行地点的数据。使用碎片化根据区域分割数据。在动态网格中搜索。如果单个单元格中有超过500个位置,请将网格分成4个较小的细胞。重复直到您只需要搜索少于500个位置。

  

  10。设计和搜索引擎相关服务,例如,输入类型

  该服务将部分完成搜索查询,显示5个建议以完成查询。它应该实时适应高度搜索内容。并建议它给其他用户。

  E.G,海英队在活动后几分钟内赢得了超级碗。

  基本功能服务应将一些查询与流行查询相匹配。应纠正较小的拼写错误,例如, “DGO→Dog”应该猜测根据查询的5个最可能的选项应该在写查询时更新, 您对拼写错误有更多的纠正纠正措施吗?如何在不造成延迟的情况下更新选择?您如何确定最可能的查询?它是否适应用户的搜索?如果用户快速使用它,我该怎么办?它建议只在完成后显示?需要考虑使用自然语言处理机器学习算法来预测下一个字符的工具。使用Markov链排列最高排名的查询概率。每小时更新ML算法或每日(不是实时),减轻负担。接下来应该学到什么?

  这些问题应该帮助您了解系统设计访谈中将解决的问题类型。锻炼解决方案并解释了这些问题是准备下一次面试的最有效方法。

  (本文“十大系统设计访谈问题”由文教团队的文舞舞蹈舞蹈翻译。请注明来源。)


企业网站的建设公司 公司建网站多少钱 企业网站改版
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 13968746378,我们会详细为你一一解答你心中的疑难。项目经理在线
相关阅读

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13968746378

上班时间

周一到周六

公司电话

400-600-6240

二维码
线
在线留言