V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hakunamatata11
V2EX  ›  推广

如何答好面试中的系统设计题?

  •  
  •   hakunamatata11 · 2020-08-20 19:20:25 +08:00 · 960 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统设计面试主要考察以下几个方面:

    • 可行解 Work Solution 25%
    • 特定问题 Special Case 20%
    • 分析能力 Analysis 25%
    • 权衡 Tradeoff 15%
    • 知识储备 Knowledge Base 15%

    在面试中,常见的错误是面试官给出问题后,候选人就开始怼各种关键词,什么 Load Balancer,Memcache,NodeJS,MongoDB,MySQL……

    实际上,针对系统设计问题,九章算法有一套 4S 分析法,即使完全不知道的问题也可以按照这个方法一步步去回答。

    所谓 4S 分析法中的 4S 是指Scenario (场景),Service (服务),Storage (存储),Scale (扩展)。

    接下来,我们结合 4S 分析法来具体回答一道常见系统设计题:如何设计一个推特?

    第一步:Scenario 场景

    在这一步,你需要询问面试官:需要设计哪些功能(也可以自己想),需要承受多大的访问量?

    首先可以把 Twitter 的功能一个个罗列出来,很显然你无法在 45 分钟的面试中完成所有功能的设计,所以需要筛选出核心功能( Post a Tweet,Timeline,News Feed,Follow/Unfollow a user,Register/Login )。

    然后有的面试官可能会问你系统承受的 QPS 大概是多少?需要考虑并发用户,读频率( Read QPS )以及写频率( Write QPS )。记住重要的是你的思考和计算过程而不是计算结果。

    分析 QPS 有什么用?

    • 如果 QPS = 100,那么用你的笔记本作 Web 服务器就好了;
    • QPS = 1K,一台好点的 Web 服务器也能应付,需要考虑 Single Point Failure ;
    • QPS = 1m,则需要建设一个 1000 台 Web 服务器的集群,并且要考虑如何 Maintainance (某一台挂了怎么办)。

    QPS 和 服务器 /数据库之间的关系

    • 一台 Web Server 承受量约为 1K 的 QPS (考虑到逻辑处理时间以及数据库查询的瓶颈);
    • 一台 SQL Database 承受量约为 1K 的 QPS (如果 JOIN 和 INDEX query 比较多的话,这个值会更小);
    • 一台 NoSQL Database (Cassandra) 约承受量是 10k 的 QPS ;
    • 一台 NoSQL Database (Memcached) 约承受量是 1M 的 QPS 。

    关于更多的内容,可以来看我主讲的**《系统架构设计》**,现在前两节限免开放。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1740 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:40 · PVG 00:40 · LAX 08:40 · JFK 11:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.