I get asked this all the time, how do one prepare for a Big4 (Amzon, Facebook, Google, Microsoft(alphabetically)) interview? Typically, people contacts me when they have an interview scheduled. So here is a brief guide to help you out in your journey.
Generally there are 3 interviews before landing an offer. (Excluding phone conversation with recruiter)
- Online screen – Optional at some companies (weed out above par condidates)
- Phone interview – (weed out above par condidates)
- Onsite 2/3 coding and 1/2 system design rounds.
I will dive into the details and summarize key things to do from my experience interviewing at Amazon, Apple, Bloomberg, Facebook, Google, Samsung, etc. Fortunately, big 4 companies have similar interview structure.
Online screen and Phone Interview
What do I do? Do the folowing–
LEETCODE TOP INTERVIEW QUESTIONS” from the beginning. I mentioned it in ALL CAPS, because this is the single most important resource in my opinion.
- Solve Leetcode TOP INTERVIEW QUESTIONS(140 approx.), Do Easy, Medium, before starting to do Hard problems.
- Solve in order of frequency on the site.
What do I do?
- Still your best friend is – LEETCODE TOP INTERVIEW QUESTIONS. Revise it once.
- Undersand and implement Basic data structures. 101: (Implement all of them ground up, for example a BST, Heap, etc.) 101: String, LinkedLists, Tree, Trie, Graph, Sorting, Serching, Dynamic and Recursive programming etc.
- System Design – Grokking the system design interview on educative.
- Time to learn system design.
- Design twitter, tinyurl, messenger,… EDICATIVE.IO - Grokking the system design Interview
- GoF Design Patterns
- Focus on building scalable, load balanced system
- Low latency applications
- Caching, CDN
- Failure tolerant systems
- Partitioning, Replication
- Integrate design pattern on small components
- Company wise Problem Solving
- Top leetcode problems in last 2 years
- Glassdoor reported problems ordered by date(latest/most recent)
Learn how to answer on a whiteboard during your interview, by Doug Arcuri
My favorite books:
- Elements of Programming Interviews in Java/C++/Python by Adnan Aziz et.al. Get the book in the lanaugage you are most comfortable in.
- Cracking the Coding Interview by Gayle McDowell Laakmann
Basics (I handpicked these from 100 or so topics)
- Anagrams and palindromes. Check whether a linked list is a palindrome
- String Search, KMP or Boyer Moore Search
- String reversal without affecting whitespace, special characters
- Basic singly linked list operations (Insert, Delete, Update, reverse, fix loops)
- Merge two sorted linked list without creating a new list
- Add two numbers represented by a linked list (in place)
- Solving problems with recursive Graph and LinkedList
- BFS, DFS(in order and pre order traversals)
- Island perimeter with DFS
- Binary Search Tree node removal, insertion
- Calculate graph Diameter; lowest ancestor of two nodes
- Check whether a binary tree is full
- Index words in web pages(doc_name, line#) using a trie Tree
- You can take 1 or two steps at a time. How many ways to go to 50 steps? –(Coin)
- Implement min heap max heap from scratch with insertion and deletion
- Binary Search
- Merge Sort, Heap Sort, Quick sort from scratch
- Find kth smallest or largest eleent in an unsorted array. (Sorting not allowed)
- Shortest path using DP
- Find all possible paths
- Parsing, check for invalid parentheses, braces.
- Reverse integer without extra memory
- Test if a number is prime.
- In a list one number occurs once everything else is twice. FInd the unique number
- Optimal Strategy in a game
- Bloomberg: Solve the stock buy sell profit problems.
- If you are aiming for google: String, DP(from geeksforgeeks), Recursion, Syntax matching, Search
- (A famous joke), if you are going for Microsoft, make sure u know how to reverse a linked list! We all know it takes much more than that.
- Were they looking for a particular skill set/language proficiency?
- You don’t get hired, if you don’t know it.
- GET OVER IT.
- Keep applying, keep interviewing. DONT GIVE UP.
- The process itself is the biggest test.
- Made Mistakes?
- Try again.