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

国内国外都要考的系统设计到底咋得分?

  •  
  •   hakunamatata11 · 2020-05-07 18:49:03 +08:00 · 1798 次点击
    这是一个创建于 1670 天前的主题,其中的信息可能已经有所发展或是发生改变。

    都说系统设计面试就是让你“造火箭”!

    没错,许多面试者都有种“高屋建瓴”的感觉。往往看完网上搜的资料,脑子更不清楚了,只能哀嚎:见了鬼的,谁能告诉我到底怎么答才得分?!

    今天小编就用一道 Facebook 真题来举例:

    Design a photo reference counting system at FB scale

    令狐冲老师解答

    系统设计》《九章算法班》主讲老师; FLAG 资深工程师

    这个题是我们在《系统设计班》第一节课讲过的内容。

    首先,你先不要曲解题目,你直接把题目翻译为:设计 distributed counting system,就已经走偏了。

    从这道题的题面来看,面试官只是要对每个 photo 有一个 counter。这个 counter 干嘛的呢?你可以理解为某个 photo 被 like 的数目。这和《系统设计班》第一节 Design a Twitter 里说的,某个 post 被 like,是一样的。

    在这道题中,面试官主要考核你以下几个层面的东西:

    [第一层]

    你首先要知道是用 denormailze 的方法,和 photo 一起存在一起,这样不用去数据库里数 like 。所以可能考察的就是,数据库的存放方法,服务器端用 memcached 或者任何 cache 去存储,访问都是找 cache,实在是太大的数据量,才会考虑分布式。

    +1 分

    [第二层]

    你知道这玩意儿不能每次去数据库查,得cache

    +0.5 分

    [第三层]

    这玩意儿一直在更新,被写很多次,你知道必须一直保持这个数据在 cache 里,不能 invalidate

    +0.5 分

    [第四层]

    你知道怎么让数据库和 cache 保持一致性

    +2 分

    [第五层]

    你知道 cache 里如果没有了,怎么避免数据库被冲垮( memcache lease get)

    +2 分

    [第六层]

    一个小的优化,如果这个数据很 hot,可以在 server 内部开一个小 cache,只存及其 hot 的数据。

    +2 分

    以上,看完后你是一脸懵逼

    还是茅塞顿开、思路清晰?

    通常面试者会遇到的共性问题有👇

    不善沟通,需求都没和面试官聊明白

    由于前期沟通不顺,中间越想越混乱

    想给出完美答案,结果越做越大,根本答不完

    ……

    不妨体验一下九章精细打磨的《系统设计班

    互动形式、随时看,扫码立即免费试听

    报名链接:https://www.jiuzhang.com/course/28/?utm_source=sc-v2ex-fks

    4S 分析法,题题通用

    前面说到,很多人陷入的误区是:我一定要做出完美的系统,可是一旦设计得太复杂就会思路卡壳 /时间不够用。

    其实面试官更看重的是面试的沟通过程和系统的可行性,在有限条件下展现自己的能力和知识储备,构建一个有细节,有整体框架的 work solution 才能加分。

    在面试题中,4S 分析法的有效性已经被无数九章海内外学员证实。

    什么是 4S 分析法?

    • Scenario 场景:需要设计哪些功能,到什么程度?

    • Service 服务:将大系统拆分为小服务

    • Storage 存储:数据如何存储与访问

    • Scale 升级:解决缺陷,处理可能遇到的问题

    而且系统设计题答得出色,很多面试官在这一环节中,就定下你在他们心中的薪资和级别了。也就是说,还不到包裹谈判那一步,你的薪资就已经高过其他人了

    8 条回复    2020-05-07 22:36:51 +08:00
    gemini767
        1
    gemini767  
       2020-05-07 18:59:55 +08:00
    场景方案看完了,满分是 100 分么?这设计是认真的么?
    Senventise
        2
    Senventise  
       2020-05-07 19:06:11 +08:00 via Android
    数学
    Senventise
        3
    Senventise  
       2020-05-07 19:06:28 +08:00 via Android
    @Senventise sorry,手滑了
    PureWhiteWu
        4
    PureWhiteWu  
       2020-05-07 19:15:25 +08:00
    想问一下,denormailze 是啥意思?[doge]
    Zhuzhuchenyan
        5
    Zhuzhuchenyan  
       2020-05-07 22:28:24 +08:00
    @PureWhiteWu 这个首先看什么是 normailze,一般就是我们所说的数据库范式 1NF,2NF,3NF,BCNF,一步一步上升的过程其实就是 normalize 的过程
    这里可能(我的猜测)会指的是,如果非常追求 normalize 程度,photo 自己一张表,photo 的 like 存一张表,两者通过 photo 的表的主键进行连接,在查找的时候通过 join 找到对应的 photo 的 like 个数
    然后所谓的 denormalize 就把 photo 的 like 直接存在 photo 的表里去了,这样就可以减少数据库层面上的查询开销
    PureWhiteWu
        6
    PureWhiteWu  
       2020-05-07 22:31:16 +08:00
    @Zhuzhuchenyan normalize 我知道啥意思,denormalize 我也知道啥意思,denormailze 我就不认识了。
    Zhuzhuchenyan
        7
    Zhuzhuchenyan  
       2020-05-07 22:36:29 +08:00
    @PureWhiteWu 哈哈,那可能是神奇的打错了
    swulling
        8
    swulling  
       2020-05-07 22:36:51 +08:00 via iPhone
    第六层就满分了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2863 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.