Don’t learn computer science fundamentals from multiple sources.
Spend the first 2 months to understand core concepts of Data structures and Algorithms from a relevant and limited source.
a) MIT Lectures
Practice on LeetCode
First 1st–15th days = 3 Easy Problems from different Topics => 45 problems
Next 16th–30th days = 2Easy + 2 Medium from different Topics Problems => 60 problems
Next 31st–60th days = 1Hard + 2 Medium from different Topics Problems => 90 problems
2 months = ~200+ problems
DON’T MEMORIZE SOLUTION** BUT TRY TO UNDERSTAND THE CRUX BEHIND THE SOLUTION SINCE *CONCEPTS ARE LIMITED BUT PROBLEMS ARE NOT !!
Prepare for Low-Level Design
- First 1st–10th days
Understand Why of using a specific pattern !!
Next 11th–20th days = Explore Github open sources .
Grokking : Write your own solutions first and then Compare solutions with grokking.
Next 21st-30th days = [Refactoring Guru] Design Patterns
Most importantly , you need to start apply design principles in your project.
Prepare for High-Level Design
I’m sharing these tips from my personal experience where I did crack the system design interview round at companies like Facebook, Microsoft, Booking, and Amazon.
Roadmap for Preparation of System Design Interview :
Find a Peer to Practice with.
It can be your friend or colleague who preparing for System design interviews OR if you don’t have anyone to practice with, you can find a peer at pramp.
You need to know a few basics even before you start practicing.
2d.Network Protocols (TCP vs HTTP)
2e.Latency and Throughput
2g.Proxies ( Forward and Reverse Proxy )
2h.NoSql Vs SQL
2i.Long Polling / WebSockets
2j.Replication and Sharding
2l.Logging and Monitoring
Get Interest and Feel. Read about Real architectures First.
Aosabook has awesome chapters which are written in 500 lines or less
A Web Crawler With asyncio Coroutines:
Dagoba: An in-memory graph database
High-Performance Networking in Chrome
A Continuous Integration System
An Event-Driven Web Framework
A Simple Web Server
Scalable Web Architecture and Distributed Systems
The NoSQL Ecosystem
Know the Right Approach
Steps for System Design Interview
4a.Requirement Classification [5min]
Non Functional Requirements
4b.Capacity Estimation [5min]
No of Users ( active or Total)
Storage (Database / Cache)
4c.API Design (Method Signatures and Params) [2min]
4d.User Experience [3min]
4e.High-Level Design [5min]
4f.Component Design [20min]
4g.TradeOff / Bottlenecks [5min]
Practice for interview
- SystemExpert by Algoexpert: See clement’s approach
Grokking: Discuss First then Look for Solutions [ Pen and Paper OR whiteboard ]
Practice with Timer.
Watch Tech Talks: FB, Google, Uber, Netflix, Youtube, etc
Some of my favorite youtube channels
Dropbox: How We've Scaled Dropbox - YouTube
Instagram: Messaging at Scale at Instagram - YouTube
High Scalability- http://highscalability.com/all-time-favorites/
Mock Interview on pramp or with friends.
Subscribe for my channel (Codedoctor) for more updates on Coding interviews and programming