Saturday, September 12, 2015

How to Prepare System Design - Misc



Palanir系统设计面经
1. 设计一个牌类游戏 OOD

2. 设计一个服务监视系統。说你有一堆服务器和一堆服务,怎么监视服务状态。 系统设计。各种情况。各种要求。

3. 设计一个企业内部用的那种日志系统。大概的用途是A发现一个什么问题,log问题,相关的人会接到通知。半系统半OOD。中间面试我的人想给我点提醒。说中间某部分可以用某种design pattern来做。不过那个design pattern不是factory singleton observer strategy等几个常见的。所以提示了和没提示一样。

4. 设计一个和配置相关的系统。大概的功能是比如A要买你的软件,人家可能不需要把你所有的功能买走。他提出了一些他想实现的功能,然后你把你内部的一些模块啥的拼一拼然后给人家。这样一个系统怎么设计。

第一题基本还有个参照。按CC150思路走的。不过也被拍死了。cc150的结构大概适合于赌场游戏。他说如果像UNO那种。你这个设计就不行。直接就傻逼了。时间也到了。这个里面让做了个洗牌。然后讨论为什么我的洗法能够实现纯随机。就是可以等概率的洗出任意一种可能。

Facebook HR 内部邮件, System Design 面试内容揭秘!
首先,HR指出,Facebook 的 System Design 面试时长为45分钟,主要考察是是,求职者能否处理 Large Scale 的问题。在面试过程中,面试官会让你为Facebook设计一个feature。通过设计一个负责的系统,面试官主要是想考察你在 consistency, availability 和 partition tolerance 之间如何做 tradeoff,进而评估你的思考、实践能力。在这里,Facebook HR 着重要求面试者,一定要看以下的资料

【1】Dropbox Large Scale 相关视频:http://t.cn/zQUvcsq
【2】Facebook 关于Scaling Memcache的文章:http://bit.ly/1zqgW4p

【1】Concurrency (threads, deadlock, starvation, consistency, coherence)
【2】Abstraction (understanding how OS, filesystem, and database works)
【3】Real-world performance (relative performance RAM, disk, your network, SSD)
【4】Availability and Reliability (durability, understanding how things can fail)
【5】Datastorage (RAMvs. durablestorage, compression, byte sizes)

http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=138340&ctid=213
主要让我介绍一个我自己的项目 要把architecture画下来。我觉得重点是对项目非常了解同时是一个相对complicated的项目 最好用到的tech比较多。比如service怎么和前台接,endpoint怎么design,api为什么这么设计,Parallel process在不同情况下效率如何,用了什么caching layer,用什么concurrency framework以及为什么。如果重头来过有什么地方可以提高。另一个重点是表述简单清晰。
http://www.wtoutiao.com/p/ef9tYN.html
对于0基础的同学们。下面的资料可以按顺序开始看
1.http://www.hiredintech.com/app#system-design
这是一个专门准备面试的网站,你只用关心system design部分,有很多的link后面会重复提到,建议看完至少一遍。




2. https://www.youtube.com/watch?v=-W9F__D3oY4
非常非常好的入门资料, 建议看3遍以上!
这是1里面提到的资料,是Harvard web app课的最后一节。 讲scalability 里面会讲到很多基础概念比如Vertical scaling, Horizontal scaling, Caching, Load balancing, Database replication, Database partitioning, 还会提到很多基本思想,比如avoid single point of failure。
再强调一遍 非常好的资料!




3.http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones1
里面提到的 Scalability for Dummies 还算不错,可以看一遍,知道基本思想。




结束语:当你结束这一部分的学习的时候 你已经比50%的candidate知道的多了(因为很多人都不准备 或者不知道怎么准备system design) 恭喜:)



进阶
这一部分的资料更加零散,每个看的可能不一样,但是你每多看一篇文章或者一个视频,你就比别人强一点这部分你会遇到很多新名词 。
我的建议是每当你遇到一个不懂的概念时, 多google一下,看看这个概念或者技术是什么意思, 优点和缺点各是什么, 什么时候用,这些你都知道以后,你就可以把他运用到面试中,让面试官刮目相看了。


4.http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html
Database Sharding是一个很重要的概念 建议看一看


5.http://highscalability.com/all-time-favorites/
这个里面会讲到很多非常流行的网站架构是如何实现的 比如Twitter, Youtube,
Pinterest, Google等等 我的建议是看5-6个 然后你应该已经建立起了一些基本的意识还有知道了某些技术和产品的作用和mapping 比如说到cache你会想到memcached和 Redis 说到load balancer你会想到 Amazon ELB, F5一类的


6. http://www.infoq.com/
5里面很多的文章都会有链接 其中有很多会指向这个网站 这里面有很多的tech talk
很不错 可以看看


7.https://www.facebook.com/Engineering/notes
Facebook非常好的技术日志 会讲很多facebook的feature怎么实现的 比如facebook message:https://www.facebook.com/notes/facebook-engineering/the-underlying-technology-of-messages/454991608919 建议看看 尤其是准备面facebook的同学
这有一个facebook talk讲storage的 https://www.youtube.com/watch?v=5RfFhMwRAic
8. 最后一些概念很有用,都是我再看这些资料的时候发现的。如果你没有遇到或者查过,建议查查
Distributed Hash Table
Eventual Consistency vs Strong Consistency
Read Heavy vs Write Heavy
Consistent Hashing
Sticky Sessions
Structured Data(uses DynamoDB) vs Unstructured Data(uses S3)
http://smartdatacollective.com/michelenemschoff/206391/quick-guide-structured-and-unstructured-data
http://stackoverflow.com/questions/18678315/amazon-s3-or-dynamodb

AmazonSeattle, WA
http://aws.typepad.com

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts