Ranking Interview Questions by Cram Score

An opinionated list of SDE interview questions, organized by priority

Sunday March 11, 2018

Like many aspiring software devs, I've prepped for interviews using Leetcode and HackerRank. While there is no shortage of questions, I find that they don't address head-on what you should be studying.

Leetcode ranks based on difficulty, but it's a pretty useless metric when you just want to prepare pragmatically. Studying for a particular company? That feature is behind a paywall. HackerRank's Cracking the Coding Interview Course comes close, but I think the questions are mostly too rudimentary.

As somebody who interns quite often, I've solved over 40 coding questions for tech companies in the past two years. Although it's not fair to share questions verbatim, the challenges I've picked prepare you awfully well for desirable companies.

Rather than organizing by topic or difficulty, I've organized these questions based on what I'd study before an interview. Level 1 questions are so common that it (literally) pays to know them. On the other end Level 3 questions probably show up less, but they're excellent for building a "6th sense" when answering problems.

I still think there's a ton of value in the more verbose sources out there. But if you're lost this is a good place to start.

Also, If you're having trouble solving these, I highly recommend you look at my algorithm guide, which contains interactive code that can solve many of these questions.



Tags

Dynamic Programming
Greedy
Recursion
Sliding Window
Sorting
Trees
Union Find

Cram Level 1

Study these even if your interview is tomorrow and it's 12 AM
Given a 2-D Array, count the number of islands in it, where land is connected in the NSEW direction
Recursion
Union-Find
Given a target of N cents and a collection of coins, how many ways can you form N cents?
Dynamic Programming
Recursion
Given a string and a collection of characters, find the shortest substring that contains all the characters
Sliding Window
Given a list of starting and ending days for a stock, maximize your profit
Greedy
Efficiently compute the sum of the numbers between two indexes of an array
Dynamic Programming
Given a list of intervals with a start and end value, merge the intervals
Sorting
Given an array, find the subarray with the maximum sum
Sliding window

Cram Level 2

Study these if you have a week to prepare
Given a mutable array of integers, find the sum of elements between i and j
Recursion
Trees
Count the number of inversions in a unsorted array
Recursion
Sorting
Given a 2-D array of characters and a list of valid words, find the number of words on the board
Recursion
Trees
Given an array of tasks an a cooldown period, given an efficient ordering
Greedy
Priority Queue
Given a collection of intervals, find the number of intervals you need to remove to make the rest of the intervals non-overlapping
Greedy
Sorting
Given a particular kind of preorder serialization of a binary tree, verify that it's valid
Recursion
Trees

Cram Level 3

Study these if you want to be generally prepared with a "6th sense" of what to do
Find the duplicate number in an array AND use O(1) space
Given the preorder and inorder serialization of a binary tree, construct a tree data structure
Recursion
Trees
Given an infinitely sized sorted list (no visible end index), find a particular number
Recursion
Given an encoding from letters to numbers, count the number of ways to decode a string of numbers
Dynamic Programming
Recursion
Given a non-negative integer array where each index represents the maxmimum you can iterate forward, minimize the number of jumps to reach the end of the array
Greedy
Given two words, find the minimum number of edits to mutate one word into the other
Dynamic Programming
Recursion