system_design, 系统设计问题的准备链接和资源

分享于 

11分钟阅读

GitHub

  繁體 雙語
Preparation links and resources for system design questions
  • 源代码名称:system_design
  • 源代码网址:http://www.github.com/shashank88/system_design
  • system_design源代码文档
  • system_design源代码下载
  • Git URL:
    git://www.github.com/shashank88/system_design.git
    Git Clone代码到本地:
    git clone http://www.github.com/shashank88/system_design
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/shashank88/system_design
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    系统设计准备
    • 如何准备和回答系统设计问题:

    目标

    我在今年准备访谈时收集和研究了许多链接,并发现不同的编码问题和组合资源。 人们最终从散乱的资源中读取,可能会让鸽子挖掘一个特定领域,并在回答这些问题。 因此我收集了这些链接和设计技巧,认为我应该与大家分享。 如果你已经熟悉了基本的( 以下给出),那么你将需要 ~2 月才能对这类问题进行强大的。 如果你有更少的时间,向下滚动到最底部的tmodel ;。

    索引

    从哪里开始?

    对于非常广泛的概述,请浏览这些讲座,真正有用:

    这些谈话应该给你体面的弹药,开始制定一些架构。

    <名称'基础知识'> 基础知识

    但在开始之前,这里有一些主题( 按特定顺序),我认为你应该在继续之前有一个非常好的理念。

    • Operating: 如何使用文件系统,虚拟内存,分页,指令执行周期等( 如果你已经有了正确的知识,请在操作系统上尝试 book
    • 网络基础:应该了解 tcp/ip协议栈,互联网的基础,HTTP,tcp/ip工作的最低限度。 cs75 ( 1st 讲座) 上的应该提供广泛的概述。 我个人喜欢网络是一个自上而下的方法。
    • 并发基础:线程。进程和你所了解的语言中的线程处理。 锁,互斥锁。
    • 数据库基础:( sql vs 不支持sql等)。散列和索引。基于EAV的。dbs。主slave等的类型
    • 基本网站架构的基本概念是: 假设负载均衡器。代理。服务器。数据库服务器。缓存服务器。预编程。日志大数据 等等 只是大致了解每个层是什么。
    • 这篇文章非常基本地总结了 CAP therem ( 从来没有被问到这个定理本身,但是知道它将帮助你设计大型的系统)。

    问:如何在面试中回答问题?

    • 我发现 hiredintech 视频是一个不错的起点。 如何解决链接中给出的设计问题是非常有用的。 我们从清除系统用例的方式入手,以抽象的方式思考各种组件和交互。 考虑系统的瓶颈以及对系统(。例如延迟 vs 可靠性 vs 正常运行时间等)的重要性,这些对于给出你的系统的折扣更加重要。

    • 在破解问题的过程中,通过首先解决一个小的事件,然后展开系统来解决问题。

    • 准备这类问题的最好方法是做模拟访谈,选择( 以下给出)的任何主题,然后看看它是如何设计的。 绝对没有别的选择 ! 白板设计问题类似于实际编写代码和测试它 ! 只是阅读将带你到目前为止。

    我在面试过程中如何处理系统设计问题的

    这些是我在访谈中经历的步骤,后面是实际的面试体验:

    • 答:绝对确信你理解问题的答案,在开始时澄清,而不是假设任何问题
    • ( a ) 使用 。这是关键,必须知道系统将要使用什么,它将使用什么规模。? 还有每秒请求,请求类型,每秒写入的数据,每秒读取数据的限制。
    • 解决了一个非常小的集的问题,例如 100个用户。 这将广泛帮助你确定整个模型的数据结构。组件。抽象设计。
    • d ) 写下到目前为止的各种组件,他们将如何互相交互。
    • e ) 记住至少记住这些:
    • 1.processing 和服务器
    • 2.storage
    • 3.caching
    • 4.concurrency 和通信
    • 5.security
    • 6.load 均衡和代理
    • 7.CDN
    • 赚钱:如果相关的话,你会怎么做? 什么类型的数据库( mysql会做什么)? 或者 NoSQL 适合 btr你需要缓存( 几乎总是) 和多少,安全是首要考虑? !
    • f ) 问题的特殊案例。 比如说设计一个用来存储缩略图的系统,文件系统是否? 如果你要为facebook或者谷歌进行规模调整? 基于 NoSQL的数据库工作?
    • 当所有的组件都准备好之后,我通常会尝试在不同的地方寻找次要的优化,这将有助于在 99%个案例中更好地扩展。
    • h ) [Scaling out or up] ( http://highscalability.com/blog/2014/5/12/4-architecture-issues-when-scaling-web-applications-bottlene.html )
    • 问:与面试官联系,还有其他特殊情况他想解决的问题? 如果你知道你在面试的公司,它的体系结构是什么,面试员对公司有什么感兴趣?

    通用设计问题

    它通常取决于你是什么,你将在。 你的级别是什么,但这些是一些更常见的面试问题。

    • 亚马逊经常设计的产品页面( 例如。 显示了你看到的最后 5个项目
    • 为多人游戏设计一个在线扑克游戏。 解决持久性,并发,规模问题。 为此绘制ER图
    • 设计一个 [url compression system] ( http://www.hiredintech.com/system-design/the-system-design-process/ )
    • 搜索引擎 ( 通常会问那些有领域知识的人): 基本抓取。收集。散列 等等 Dependes在你的本主题中
    • dropbox的设计架构在这个方面很好的论述。
    • 设计一个图片分享网站。 你将如何储存缩略图,照片? 如何在不同层次上使用缓存。
    • 根据地图设计产品,如酒店或者自动取款机的位置。
    • 设计 malloc,free和垃圾收集系统。 要使用的数据结构? decorator Pattern 上的装饰器。
    • 设计一个类似 junglee.com 例如 价格比较的网站,以及电子商务网站的可用性。 如何在电子商务网站上进行高效的搜索。分片。基本数据库设计。基本数据库设计。
    • 用于聊天的网页应用程序,例如 whatsapp,facebook聊天。 每个问题,缩放问题,状态和availablility通知等。
    • 在文档simulataneously上设计collaberating系统( 例如 Google Docs )
    • ( 非常常见:) 顶部'n'或者正在运行的数据流的最频繁项
    • 设计选举委员会架构:假设我们与选举委员会一起工作。 在计数日期,我们要整理在全国的投票展览会lakhs上收到的投票。 每个展览器都有一个投票机,当连接到网络时,返回表单 {[party_id, num_votes]。[party_id_2, num_votes_2]。"。}的一个 array。 我们要收集这些并实时获取当前分数。 我们需要连续的报告,每一个方的座位是多少。 请为此设计一个系统。
    • 设计日志记录系统( 对于web应用程序,通常有大量的服务器运行同一应用程序)。 在这种情况下,我们希望在任何服务器中引发异常时检查和警报。 我们希望一个系统能够检查任何服务器的日志中特定单词,"异常","磁盘已满"等等的外观。 你将如何设计这个系统?

    体系结构:

    我亲自查看了以下架构:

    公司工程师博客链接。

    courtesy checkcheckzz

    根据你在面试的地点,浏览公司的博客。 在面试中非常有用如果你有一个架构的思想,那么问题通常是那个领域。

    低时间

    如果你有一个星期的面试,我建议你不要带捷径,除非你有一周的时间。 最好的学习方法是通过练习,快捷方式可以帮助你在短期内学习,但建议你在面试后深入了解这个链接。

    • a ) 通过cs76和给定的链接进行缩放。
    • b ) 查阅你正在访问的公司的工程博客( 或者如果该公司的启动通过你最近的公司链接)。
    • 看这个对话:http://www.hiredintech.com/system-design/the-system-design-process/ 并开发一个过程来回答这个问题。
    • d ) 记住这些术语,只要在你的面试中把它们翻过来,如果有关的话,请参考。
    • 处理和服务器
    • 存储器
    • 高速缓存
    • 并发和通信
    • 安全
    • 负载平衡和代理
    • CDN
    • 货币化

    幸运的是


    SYS  系统  DES  PRE  设计  resource  
    相关文章