Project Icon

System-Design

系统设计指南与高级软件架构资源

页面汇总了多篇系统设计相关的文章和资源,适合各级别的软件工程师。内容包括系统设计面试技巧、基础知识、高级软件架构、面向对象设计及分布式系统设计等,帮助工程师提升系统设计能力,应对工作和面试中的复杂问题。

系统设计爱好者的简短文章

系统设计讨论

我收集并整理了一些文章,作为在IIT Kanpur攻读CS654A课程的一部分,这是一门由Prof.Dr.T.V.Prabbhakar教授的高级软件架构课程。

修改自Zach的系统设计库。添加了更多的链接和主题,涵盖了PS/DS和系统设计面试。我们将不时更新此帖。更多极好的资源

如何在“硅谷代码营2019”中像软件架构师一样“思考”(和设计)

用C4模型可视化软件架构 - Simon Brown,敏捷在海滩2019

系统设计不仅仅是面试,它也可以是你管理生活的方式。好好想想

免责声明/致谢

我没有自己写这些文章。我喜欢扩展对系统设计复杂性的理解,因此阅读了许多书籍、研究论文和文章来提升我的知识。我借此机会感谢每一位发现此资源库有用的人。我要感谢所有撰写和开发了此资源库中文章的作者和开发者。

更多内容即将到来!

我们正在努力创建优质内容以满足系统设计新手的需求。请随时将任何资源或材料分享到lahiri.devs@gmail.com

软件工程知识手册 & PDFs

经典收藏

如何准备系统设计问题?

系统设计是一个非常广泛的话题。即使是一位在顶级IT公司拥有多年工作经验的软件工程师,也可能不是系统设计的专家。如果想成为专家,你需要阅读许多书籍、文章,并解决实际的大规模系统设计问题。

为了练习设计一些系统,无论是为了学习还是准备面试,你可以使用这个练习平台

这个资源库只教你如何以系统的方式简洁地处理系统设计面试。如果你有时间,可以深入了解每个主题。当然,欢迎添加你的想法!

目录

[⬆] 系统设计面试技巧 & PS/DS

澄清约束条件并识别用例

花几分钟询问面试官并就系统的范围达成共识。 记住要确保了解面试官在一开始没有告诉你的所有要求。

用例表示系统的主要功能,约束条件列出系统的规模,如每秒请求数、请求类型、每秒写入数据量、每秒读取数据量。

在实际情况下,超越白板面试设置的场景中,必须理解工程项目的功能非功能要求。

高级架构设计

绘制重要组件及其之间的连接,但不要进入细节。 通常,一个可扩展的系统包括web服务器(负载均衡器)、服务(服务分区)、数据库(主/从数据库集群加缓存)。

组件设计

对于每个组件,你需要为每个组件编写特定的API。你可能需要完成 特定功能的详细面向对象设计。你还可能需要为数据库设计数据库模式。

重温基本的PS/DS和机器编码问题

面向对象编程的基础知识,SOLID概念,算法和数据结构将大大有助于通过大多数大型科技公司的现场面试。养成在LeetCode或CodeForces上解决问题的习惯,肯定会帮助你在解决问题的方法上思考得更快更好。

[⬆] 系统设计的基本知识:

这里有一些关于系统设计相关主题的文章。

当然,如果你想深入了解系统相关主题,这里有一个关于服务工程的优秀阅读清单,以及关于分布式系统的优秀材料集合。

[⬆] 题外话博客:

[⬆] 公司工程博客:

如果你要与公司进行现场面试,你应该阅读他们的工程博客。

[⬆] 产品和系统:

以下文献/文章/幻灯片可以帮助你了解不同真实产品和系统的一般设计思路。

趋势

[⬆] 热点问题和参考:

以下是每个问题的一些优秀参考文献。这里的参考文献是幻灯片和文章。

设计一个 CDN 网络
参考文献:

设计一个 Google 文档系统
参考文献:

设计一个随机 ID 生成系统
参考文献:

设计一个键值数据库
参考文献:

设计 Facebook 新闻推送功能
参考文献:

设计 Facebook 时间线功能
参考文献:

设计一个函数来返回过去时间间隔内的前 k 个请求
参考文献:

设计一个在线多人卡牌游戏
参考文献:

设计一个图搜索功能
参考文献:

设计一个图片分享系统
参考文献:

设计一个搜索引擎
参考文献:

设计一个推荐系统
参考文献:

设计一个 tinyurl 系统
参考文献:

设计一个可扩展的网络爬虫系统
参考:

设计Facebook聊天功能
参考:

设计一个微博客网站
参考:

设计一个酒店预订平台
参考:

设计一个热门话题系统
参考:

设计一个缓存系统
参考:

设计LeetCode

设计一个支付系统

基础的SRE 参考:

设计一个React Native应用程序 参考:

从具体实现中获取数字 参考:

[⬆] 好书推荐:

[⬆] 面向对象设计指南:

面向对象设计面试技巧

阐明场景,写出用例

用例是对事件序列的描述,这些事件共同作用,从而使系统做一些有用的事情。谁将使用它,如何使用它。系统可能非常简单或非常复杂。

特殊系统需求,如多线程、读写导向。

定义对象

将身份映射到类:一个场景对应一个类,这个场景中的每个核心对象对应一个类。

考虑类之间的关系:某些类必须有唯一实例,一个对象拥有许多其他对象(组合),一个对象是另一个对象(继承)。

为每个类识别属性:将名词改为变量,将动作改为方法。

使用设计模式,使其可以在多个应用程序中重用。

有用的网站

[⬆] 分布式系统设计:

分布式系统设计

[⬆] 项目尝试 :

杂项

更多信息

可随时联系 Sumit Lahiri

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号