Step by Step Plan for Cracking Coding Interviews
Step1:
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.
My Recommendation:
a) MIT Lectures
Step2:
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 !!
Step3:
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.
Step4:
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 :
Step No 4.1:
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.
Step No 4.2:
Know Basics
You need to know a few basics even before you start practicing.
2a.Load Balancing
2b.Caching
2d.Network Protocols (TCP vs HTTP)
2e.Latency and Throughput
2f.Data Partitioning
2g.Proxies ( Forward and Reverse Proxy )
2h.NoSql Vs SQL
2i.Long Polling / WebSockets
2j.Replication and Sharding
2k.Rate Liming
2l.Logging and Monitoring
2m.Pub-Sub Pattern
2n.Leader Selection
2o.Map-Reduce.
2p.Consistent Hashing
Step 4.3:
Get Interest and Feel. Read about Real architectures First.
Aosabook has awesome chapters which are written in 500 lines or less
My Recommendations:
A Web Crawler With asyncio Coroutines:
http://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html
Dagoba: An in-memory graph database
http://aosabook.org/en/500L/dagoba-an-in-memory-graph-database.html
High-Performance Networking in Chrome
http://aosabook.org/en/posa/high-performance-networking-in-chrome.html
Puppet
http://aosabook.org/en/puppet.html
A Continuous Integration System
http://aosabook.org/en/500L/a-continuous-integration-system.html
An Event-Driven Web Framework
http://aosabook.org/en/500L/an-event-driven-web-framework.html
A Simple Web Server
http://aosabook.org/en/500L/a-simple-web-server.html
Scalable Web Architecture and Distributed Systems
http://aosabook.org/en/distsys.html
Python Packaging
http://aosabook.org/en/packaging.html
Cmake
http://aosabook.org/en/cmake.html
The NoSQL Ecosystem
http://aosabook.org/en/nosql.html
Step 4.4:
Know the Right Approach
Steps for System Design Interview
4a.Requirement Classification [5min]
-
Functional Requirements
-
Non Functional Requirements
4b.Capacity Estimation [5min]
-
No of Users ( active or Total)
-
Storage (Database / Cache)
-
Bandwidth
-
Memory
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]
Step 4.5:
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
InfoQ: https://www.youtube.com/channel/UCkQX1tChV7Z7l1LFF4L9j_g
Google: https://www.youtube.com/user/GoogleTechTalks
FB: https://www.youtube.com/user/FacebookDevelopers/videos
Amazon: https://www.youtube.com/user/AWSwebinars
Uber: https://www.youtube.com/channel/UCQlvjgieHGgkpP_9GiVyTGw
Netflix: https://www.youtube.com/channel/UCGGRRqAjPm6sL3-WGBDnKJA
Dropbox: https://www.youtube.com/watch?v=PE4gwstWhmc
Instagram: https://www.youtube.com/watch?v=E708csv4XgY
Blog:
High Scalability- http://highscalability.com/all-time-favorites/
Step 5:
Mock Interview on pramp or with friends.
Subscribe for my channel (Codedoctor) for more updates on Coding interviews and programming