How to Crack Coding Interviews at Big Tech Companies [Facebook, Amazon, Google, Booking, Apple]

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

b) Steve Skiena Lectures

image

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

  1. First 1st–10th days

Head First Design Pattern

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
image

2b.Caching
image

2d.Network Protocols (TCP vs HTTP)

image

2e.Latency and Throughput

2f.Data Partitioning

2g.Proxies ( Forward and Reverse Proxy )

image

2h.NoSql Vs SQL

2i.Long Polling / WebSockets

image

2j.Replication and Sharding

image

2k.Rate Liming

image

2l.Logging and Monitoring

2m.Pub-Sub Pattern

image

2n.Leader Selection

image

2o.Map-Reduce.

image

2p.Consistent Hashing

Ref: GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

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: Uber Engineering - YouTube

Netflix: https://www.youtube.com/channel/UCGGRRqAjPm6sL3-WGBDnKJA

Dropbox: How We've Scaled Dropbox - YouTube

Instagram: Messaging at Scale at Instagram - YouTube

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