这里原帖地址: http://www.mitbbs.com/article_t/JobHunting/32492515.html
以下为转载内容
===========================我是分割线==================
稍微总结一下
1. 入门级的news feed一般的followup question是估算需要多少server另外这个帖子有讨论这篇文章稍微提到要怎么approach这种题,可以稍微看看2. facebook chat,这个也算是挺常问的https://www.facebook.com/note.php?note_id=142181389193. typeahead search/search suggestion,这个也常见https://www.facebook.com/video/video.php?v=432864835468问题在这个帖子里被讨论到,基本上每个问题,在视频里都有回答4. Facebook Messaging System(有提到inbox search, which has been asked before)messaging system就是一个把所有chat/sms/email之类的都结合起来的一个系统https://www.youtube.com/watch?v=UaGINWPK0685. 任给一个手机的位置信号(经纬度),需要返回附近5mile 的POI这个这里有讨论,这题貌似nyc很爱考...6. Implement second/minute/hour/day counters这题真不觉得是system design,但万一问道,还是要有准备,貌似在总部面试会被问道....这个帖子有讨论7. facebook photo storage,这个不太会被问起,但是知道也不错https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Beaver.pdfhttps://www.facebook.com/note.php?note_id=761915439198. facebook timeline,这个也不太是个考题,看看就行了https://www.facebook.com/note.php?note_id=10150468255628920除了这些,准备一下这些题目implement memcacheimplement tinyurl(以及distribute across multiple servers)determine trending topics(twitter)copy one file to multiple servers稍微知道一下dynamo key value store,以及google的gfs和big table另外推荐一些网站这个high scalability上有很多讲system design的东西,不光是facebook的,没空的话,就光看你要面试的那家就好了..facebook engineering blog其他家的==================================================================在说说怎么准备这样的面试首先如果你连availability/scalability/consistency/partition之类的都不是太有概念的话,我建议先去wikipedia或者找一个某个大学讲这门课的网站稍微看一下,别一点都不知道这个链接也不错如果你这些基本的东西都还知道,那么我觉得你就和大部分毫无实际经验的人差不多一个水平...能做的就是一点一点去准备,如果你还有充足的时间的话,建议从你面试的那家公司的engineering blog看起,把人家用的technology stack/product都搞清楚,然后在把能找到的面试题都做一遍呗....我们做coding题说白了不也是题海战术...而且你如果坚持看下去,真的会看出心得,你会发现很多地方都有相同之处,看多了就也能照葫芦画瓢了...再有就是面试的时候应该怎么去approach这种题,我说说我的做法1. product spec/usage scenario 和面试者confirm这个东西到底是做什么的可以先列出来几个major functionality,然后有时间的话,再补充一些不重要的把你想的都写下来2. define some major components就是画几个圈圈框框的,每个发表一番您的高见....然后讲他们之间怎么interact以上是question specific的东西,这个讲完了,我们可以讲一些每道题都是用的,比如说怎么scale/怎么partition/怎么实现consistency,这些东西,可以套用到任何题上当然了,我们遇到的题和解题的方法可能都有些出入,不见得每道题有一个路数下来,最重要的是,讲题的时候要有条理,画图要清楚,保持和面试官的交流,随时问一下人家的意见。