zoukankan      html  css  js  c++  java
  • 【转】 如何准备System Design的面试

    【转】 如何准备System Design的面试

    开发一个应用并不是一件难事,但是对应用的整体架构有一个深入的了解确实是一件了不起的事。一般,系统设计面试题都会放在最后来考察 candidate 的更高level的水平。

    系统设计可以面试官充分地了解 candidate 的全方面的水平。涉及到操作系统,网络,模块化,设计模式,分布式等等系列的问题。面试官只要抓住一点感兴趣的点,就可以很快地了解 candidate 在这个领域的了解和深度。

    一般系统设计面试题的解法分为四个步骤:

    (Step 1),明确需求和规范。这个是最重要的,确保你的目标清晰明确,保证接下来的任务的分解和实施,能够保证实现你的目标。

    (Step 2), 描绘出高层次的设计。 在这个阶段还不必去仔细描绘具体的实施细节。只需要将几个大的模块给确定好,就规划出他们之间的交互就行了。

    (Step 3),接下来,就可以针对具体的每一个细节模块进行深入的讨论了。

    比如,针对Web frontend 如何展示,backend 如何有效的处理user 的请求。

    (Step 4),评估和计算。针对不同用户数量级别,不同性能需求的条件,来确定后面的机器硬件配置及数量等支撑条件。

    其中,系统设计有主要的三个话题:分别是 交互,存储,CAP均衡。

    (1), 交互。网络交互,是采用可靠但慢的TCP,还是采用不可靠但快速的UDP。HTTP 是在应用层,并且基于TCP协议。

    (2),存储。涉及到关系型数据库,内存数据库和分布式数据库等等概念。 很多问题也不只是只能依靠某一个数据库来解决的。只要设计合理,可以满足条件就行。

    (3),CAP均衡。根据CAP定理,在consistency, availability 和 partition tolerance 上的只能达到一张 trade off。

    来自: http://www.puncsky.com/blog/2016/02/14/crack-the-system-design-interview/

  • 相关阅读:
    Redis为什么使用单进程单线程方式也这么快
    高性能IO模型浅析
    计算机基础知识_硬件知识
    计算机基础知识_进制转化
    计算机基础知识
    C语言_第一讲_C语言入门
    C语言_第二讲_规范以及常用数据类型
    COM_第四讲_保存GUID_优化使用代码
    4.性能下降原因和常见的Join查询
    3.MySQL的架构介绍
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7289658.html
Copyright © 2011-2022 走看看