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/

  • 相关阅读:
    C博客作业00—我的第一篇博客
    C语言博客作业03函数
    C语言博客作业05指针
    快速分页:jsp标签pagertaglib
    JSP与Servlet的编解码
    初探Hibernate3源码读取配置文件
    截取图片的某个部分(C#源代码)
    使用MATLAB获取视频中每一帧的图像
    Windows下较为精确的计时方法
    [转]向Windows Phone 7手机部署应用程序
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7289658.html
Copyright © 2011-2022 走看看