最近刷知乎看到这么个热门问题:
只靠刷题,能不能进国外大厂实习?
下方有在美国从事 CS 的网友回答:
也就是说:勤奋刷题有可能帮你面试出线!
但是纯刷题在工作中行不行得通呢?
显然不行!
侥幸进去,可啥都不会,return offer 都拿不到
同样,在该问题下还有人说了
FLAG 喜欢考 System Design (系统设计)
谷歌 intern 也面系统设计
没错,原本 SDE2 常考的系统设计
现在甚至 intern 和 new grad 面试也有
下面我举例一道 Facebook 系统设计真题
“ Design a photo reference counting system at FB scale ”
令狐冲老师解答
这个题是我们在《系统设计班》第一节 twitter 的那节课讲过的内容。
首先,你先不要曲解题目,你直接把题目翻译为:设计 distributed counting system,就已经走偏了。
从这道题的题面来看,面试官只是要对每个 photo 有一个 counter 。这个 counter 干嘛的呢?你可以理解为某个 photo 被 like 的数目。这个和我们在《系统设计班》第一节 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
互动课、随时学,戳上面链接即可免费报名试听
同时还能获得 LintCode 题库访问权限
边刷题边学
从 [事倍功半] 到 [事半功倍]