Added better system design outline. Added it to cheat sheets.
This commit is contained in:
parent
feee65a152
commit
4a06d2e404
43
README.md
43
README.md
@ -948,21 +948,36 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- Timelines at Scale: https://www.infoq.com/presentations/Twitter-Timeline-Scalability
|
- Timelines at Scale: https://www.infoq.com/presentations/Twitter-Timeline-Scalability
|
||||||
- [x] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world:
|
- [x] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world:
|
||||||
- review: System Design from HiredInTech: http://www.hiredintech.com/system-design/
|
- review: System Design from HiredInTech: http://www.hiredintech.com/system-design/
|
||||||
|
- [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
||||||
- flow:
|
- flow:
|
||||||
- ask about constraints
|
1. Understand the problem and scope:
|
||||||
- determine use cases
|
- define the use cases, with interviewer's help
|
||||||
- abstract, high level design
|
- suggest additional features
|
||||||
- bottlenecks
|
- remove items that interviewer deems out of scope
|
||||||
- scaling
|
- assume high availability is required, add as a use case
|
||||||
- Design a CDN network: http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci
|
2. Think about constraints:
|
||||||
- Design a random ID generation system: https://blog.twitter.com/2010/announcing-snowflake
|
- ask how many requests per month
|
||||||
- Design a key-value database: http://www.slideshare.net/dvirsky/introduction-to-redis
|
- ask how many requests per second (they may volunteer it or make you do the math)
|
||||||
- Design a function to return the top k requests during past time interval: https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf
|
- estimate reads vs. writes percentage
|
||||||
- Design an online multiplayer card game: http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html
|
- keep 80/20 rule in mind when estimating
|
||||||
- Design a picture sharing system: http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html
|
- how much data written per second
|
||||||
- Design a recommendation system: http://ijcai13.org/files/tutorial_slides/td3.pdf
|
- total storage required over 5 years
|
||||||
- Design a URL-shortener system: copied from above: http://www.hiredintech.com/system-design/the-system-design-process/
|
- how much data read per second
|
||||||
- Design a cache system: https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/
|
3. Abstract design:
|
||||||
|
- layers (service, data, caching)
|
||||||
|
- infrastructure: load balancing, messaging
|
||||||
|
- rough overview of any key algorithm that drives the service
|
||||||
|
- consider bottlenecks and determine solutions
|
||||||
|
- Exercises:
|
||||||
|
- Design a CDN network: http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci
|
||||||
|
- Design a random ID generation system: https://blog.twitter.com/2010/announcing-snowflake
|
||||||
|
- Design a key-value database: http://www.slideshare.net/dvirsky/introduction-to-redis
|
||||||
|
- Design a function to return the top k requests during past time interval: https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf
|
||||||
|
- Design an online multiplayer card game: http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html
|
||||||
|
- Design a picture sharing system: http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html
|
||||||
|
- Design a recommendation system: http://ijcai13.org/files/tutorial_slides/td3.pdf
|
||||||
|
- Design a URL-shortener system: copied from above: http://www.hiredintech.com/system-design/the-system-design-process/
|
||||||
|
- Design a cache system: https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/
|
||||||
|
|
||||||
- [ ] **About Google**:
|
- [ ] **About Google**:
|
||||||
- [ ] How Search Works:
|
- [ ] How Search Works:
|
||||||
|
BIN
extras/cheat sheets/system-design.pdf
Normal file
BIN
extras/cheat sheets/system-design.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user