软件工程师系统设计面试指南
系统设计面试的目标是评估候选人设计涉及多个组件的真实软件系统的技能。系统设计问题通常交给更资深的候选人(有几年经验)。实习生通常不会被问到系统设计问题,因为很难指望实习生有足够的相关行业经验来很好地回答这类问题。
一些常见问题包括:
- 设计一个网址缩写器(例如 Bitly)
- 设计一个社交媒体网站(如 Twitter)
- 设计一个视频观看网站(如 YouTube)
- 设计一个聊天服务(如电报、松弛、不和谐)
- 设计文件共享服务(例如 Google Drive、Dropbox)
- 设计拼车服务(如优步、Lyft)
- 设计照片分享服务(如 Flickr、Pinterest)
- 设计一个电子商务网站(如亚马逊,易贝)
- 设计一个工作门户网站(例如 LinkedIn)
- 设计一个网络爬虫(如谷歌)
info
系统设计内容仍在进行中,但以下是一些资源,可同时帮助您。
精品课程
- ByteByteGo——这是亚马逊上的畅销书《系统设计访谈书》的作者 Alex Xu 的一门新的系统设计课程。该课程涵盖系统设计基础知识,然后深入研究 10 多个著名常见产品的设计(如设计 YouTube 、脸书 Newsfeed 等)和多个大数据和存储系统的设计(如设计聊天系统)。对于每一次深入的探索,都有概念的解释和全面的图表,无论资历高低,都非常容易理解。
- 设计大师的“系统设计面试”——这可能是互联网上最著名的系统设计面试课程,它与大多数其他课程的不同之处在于,它完全是基于文本的,这对于推荐阅读而不是观看视频的人(比如我自己!).它包含一个流行的系统设计问题库,以及一个系统设计基础术语表。我个人已经完成了这个课程,并强烈推荐其他人使用它。
- 设计大师们的“探索高级系统设计面试”——我没试过这个,但它是由创作“探索系统设计面试”的同一批人写的,所以应该不错!在我看来,你可能不需要这个,除非你非常资深或者想要一个专家职位。
- 设计大师的“最佳系统设计”套装 -该套装允许您以折扣价购买设计大师的系统设计面试课程。最重要的是,它是终身的,而不是基于订阅的。
- 由 Exponent 主讲的“系统设计面试课程”——该课程涵盖了系统设计的基础知识,并拥有一个包含模拟面试视频的流行系统设计问题的庞大数据库。有些问题有文本答案、数据库模式和 API 供参考(我觉得很有帮助)。虽然订阅系统设计访谈内容可能有点贵,但他们也为数据结构、算法和行为访谈提供高质量的技术内容。涵盖技术面试准备所有方面的一站式平台的便利性非常诱人。
免费资源
- 系统设计入门 -最全面的系统设计资源。只有当你有大把时间的时候才推荐。
- 系统设计面试 -包含许多关于系统设计技巧、系统设计相关主题和著名公司工程博客的链接。
- 系统设计备忘单 -简明扼要的内容。在你进行系统设计面试之前,这是一次很好的复习。
书籍
- 系统设计访谈-内部人员指南,第二版 -初学者了解系统设计的友好资源,内容易于阅读和理解。