都说系统设计面试就是让你“造火箭”!
没错,许多面试者都有种“高屋建瓴”的感觉。往往看完网上搜的资料,脑子更不清楚了,只能哀嚎:见了鬼的,谁能告诉我到底怎么答才得分?!
今天小编就用一道 Facebook 真题来举例:
Design a photo reference counting system at FB scale
这个题是我们在《系统设计班》第一节课讲过的内容。
首先,你先不要曲解题目,你直接把题目翻译为:设计 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
前面说到,很多人陷入的误区是:我一定要做出完美的系统,可是一旦设计得太复杂就会思路卡壳 /时间不够用。
其实面试官更看重的是面试的沟通过程和系统的可行性,在有限条件下展现自己的能力和知识储备,构建一个有细节,有整体框架的 work solution 才能加分。
在面试题中,4S 分析法的有效性已经被无数九章海内外学员证实。
什么是 4S 分析法?
Scenario 场景:需要设计哪些功能,到什么程度?
Service 服务:将大系统拆分为小服务
Storage 存储:数据如何存储与访问
Scale 升级:解决缺陷,处理可能遇到的问题
而且系统设计题答得出色,很多面试官在这一环节中,就定下你在他们心中的薪资和级别了。也就是说,还不到包裹谈判那一步,你的薪资就已经高过其他人了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.