查看: 21948| 回复: 17
跳转到指定楼层
上一主题 下一主题
收起左侧

[经验总结] 10道系统设计精选题

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
花了很长时间研究各种系统,读paper,和行业的一些技术大牛讨论相关的技术,并且结合自己在大公司工作十几年的经验,在这里分享一下一些系统 设计的总结,希望对大家有用。设计题被普遍认为是很难的一轮面试,很多公司都用这轮面试决定录取员工的级别。下面我总结一下10道比较流行设计题,并且附上high-level 的system设计图。因为空间有限,所以很多细节就不在这里详细解释了了。感兴趣的可以到我的网站查看其中一些题完整的详细设计。https://systeminterview.com/

1. Design a Chat System (Facebook messenger, Whatsapp)
聊天系统总体来说可以分为三个模块:
1). Stateless service模块. Stateless service往往是建立高扩展系统的基础,很多常用系统往往都是stateless的。比如,authentication service, group management, user profile等等.
2). Stateful service模块。这是一个比较独特的模块。用户和chat service之间会有persistent连接,比如WebSocket。
3). Third party模块.最重要的third-party是push notification service。当聊天用户不在线的时候,消息将会以push notification的方式发布。


2. Design a Video Streaming Service (YouTube, Netflix)
视频播放和视频上传是两个最重要的话题。下图主要列举视频上传和转码的的过程。转码后的视频将放在CDN里。大家可以去网站上看完整的设计


3. Design a Key-value Store
随着键值系统变得越来越流行,比如Cassandra, Google BigTable, Amazon DynamoDB。键值存储也变成很多公司常考的面试题。键值存储系统设计很复杂,在这里我们只列举数据读取的流程。下图主要是参考Cassandra的数据读取流程。这个只是整体系统的一个部分。



4. Design a URL shortener
短网址看起来很容易实现,但是这题的考点可以很多,而且实现方式也有多种。下图主要讲解怎么样从长网址转换为短网址。



5. Design a Web Crawler
关于网络爬虫,有一篇很有名paper: Mercator: A Scalable, Extensible Web Crawler. 很多网络爬虫的设计都是基于这paper上的。网络爬虫的设计本身不难, 但是如果加上高效率,高性能,分布式读取,“礼貌”等等,设计就复杂了。下图是关于网络爬虫的设计轮廓。



6. Design a Shared Cloud Drive (Google Drive, Dropbox)
设计网络硬盘也是一道颇受欢迎的一道面试题。其中比较重要的考点有文件的上传和异地同步。文件上传的高层次设计图如下。



7. Design a News feed System
这道设计题应用比较广泛,比如设计Facebook, Twitter或者Instagram。动态新闻的设计主要包括两方面。第一是feed publishing的流程。第二是news feed retrieval的流程。下面的设计图包括feed publishing的流程。


8. Design a Search Autocomplete System
一提起autocomplete system,很多人都会想到Trie数据结构。Trie确实是被广泛应用到autocomplete system里,但是系统的设计要远多于此。从高层次来说,系统主要可以分为两部分。第一,搜索的数据是如何采集的,并且Trie是如何建立的。第二,但用户输入搜索关键字后,系统是如何取得结果的。下面的设计主要集中在数据的采集和Trie的建立。



9. Design a Notification System
推送系统的应用非常广泛,基本上所有的应用都有这个feature.这里的消息推送包括三种: mobile push notification, email and SMS message. 下面高层次的设计图主要包括苹果的推送,但是可以应用到其他的推送方式。


10. Design a scalable system that supports millions of users
设计一个可以支持百万用户的网站。这道题是很多系统设计题的基础,其中会涉及到怎么样扩展web server, cache, database, multi-data center, logging, monitoring等等。高层次的设计图如下。网站有每个部分的详细讲解



如果觉得这个帖子有用或者想要看到更完整详细的设计讲解,请查看
https://systeminterview.com/



评分

参与人数 21大米 +29 收起 理由
pud + 1 很有用的信息!
momogogo + 2 很有用的信息!
youling_tong + 1 很有用的信息!
一片云的猫 + 2 给你点个赞!
zwmtrue + 2 很有用的信息!

查看全部评分


上一篇:推荐个不错的youtube视频讲system design
下一篇:整理分享系统设计学习资料

本帖被以下淘专辑推荐:

推荐
 楼主| deltaZero 2021-4-10 13:20:15 | 只看该作者
全局:
ppscyye 发表于 2021-3-16 11:50
楼主,内容很好,图画的更好。麻烦问一下图用啥软件画的?

用的是draw.io

评分

参与人数 1大米 +2 收起 理由
ppscyye + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
ZionHuang 2020-9-8 12:17:54 | 只看该作者
全局:
楼主 网站资料整理的不错,我会一直关注的。希望多多更新最新的大厂面试题
回复

使用道具 举报

推荐
skyshuaiboy 2022-6-28 11:44:15 | 只看该作者
全局:
楼主你好 systeminterview.com  挂了 可以发一下详解么
回复

使用道具 举报

全局:
太强了 谢谢楼主分享!

评分

参与人数 1大米 +1 收起 理由
jfu_u + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
ppscyye 2021-3-16 11:50:26 | 只看该作者
全局:
楼主,内容很好,图画的更好。麻烦问一下图用啥软件画的?
回复

使用道具 举报

🔗
ppscyye 2021-4-12 11:09:36 | 只看该作者
全局:

谢谢楼主
回复

使用道具 举报

全局:
点赞,感谢楼主分享
回复

使用道具 举报

🔗
cg132015 2021-6-1 12:27:08 | 只看该作者
全局:
手动点赞~~紫薯紫薯
回复

使用道具 举报

🔗
test_name 2021-6-24 11:19:00 | 只看该作者
全局:
太强了, 买了买了, 跳槽就靠这个了
回复

使用道具 举报

🔗
Mars Wong 2021-7-5 13:29:38 | 只看该作者
全局:
手动给你打call
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表