50 Coding Interview Questions
50 Coding Interview Questions
50 Coding Interview Questions
Table of Contents
1. Median of Arrays 27. Inorder Traversal
2. 0-1 Knapsack 28. Sort Stacks
3. Matrix Product 29. Stacks from Queues
4. Find Duplicates 30. Palindromes
5. Consecutive Array 31. Max Stacks
6. Zero Matrix 32. Two Missing Numbers
7. Square Submatrix 33. Big Int Modules
8. Merge K Arrays 34. Swap Variables
9. Matrix Search 35. Gray Code
10. Merge Arrays 36. Rotate Bits
11. Zero Sum Subarray 37. Number of Ones In a Binary
12. Permutations Number
13. N Stacks 38. Linked List Cycles
14. Anagrams 39. Random Linked List
15. Build Order 40. Dedup Linked List
16. Shortest Path 41. Split a Linked List
17. Random Binary Tree 42. Nth to the Last Element
18. Lowest Common Ancestor 43. Three Sum
19. Sum 44. Tree Level Order
20. Reverse Stack 45. Autocomplete
21. Tree to Doubly Linked List 46. String Deletion
22. Longest Consecutive Branch 47. Longest Common Substring
23. Print Reversed Linked List 48. String Compression
24. Balanced Binary Tree 49. Fibonacci Number
25. Binary Search Tree Verification 50. Priority Queue
26. Smallest Change 51. Kth Most Frequent String
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
2
Introduction
Hey there! Sam here from Byte by Byte.
And that’s when I realized what I was missing: Really solid practice.
When I was doing actual interviews over and over again, I found that it started to get easier. I
wasn’t as nervous. I was comfortable in the interviews.
After landing multiple great job offers at companies like Amazon and Yext, I knew that I wanted
to help others accomplish what I had just done. I started Byte by Byte to do just that.
Since then, I’ve helped thousands of students get jobs at FAANG companies (Facebook,
Amazon, Apple, Netflix, Google) and many others. I’ve helped bootcamp graduates finally break
into tech. I’ve helped 10-year industry veterans move into that next position.
Thank you so much for joining me on this journey. I can’t wait to help you find your dream job in
tech.
Best,
Sam GavisHughson, Byte by Byte
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
3
How To Use This Guide
In this guide, you’ll find 50 of the most popular coding interview questions that I’ve seen asked.
And for every single one, I’ve provided code and a detailed video explanation.
But here’s the thing. It’s not going to be enough for you just to read through the whole thing and
head off to your interview. If you really want to get the most out of this guide, you’re going to
have to put in the work.
The key when you study these problems is to solve them exactly as you will when you go into
your interview. Developing a systematic approach and practicing it will allow you not only to
solve these problems, but solve so many others in your interview.
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
4
codifying your approach into an algorithm. Remember that your solution can be super
inefficient. It doesn’t matter at this point.
With a defined process at your side, there is no reason to be nervous in an interview. Even if you
see a problem that confuses the hell out of you, you know where to begin and can simply take it
one step at a time.
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
5
Array Problems
1. Median of Arrays
arr1 = [1, 3, 5]
arr2 = [2, 4, 6]
median(arr1, arr2) = 3.5
● Answer: https://www.byte-by-byte.com/median/
0-1 Knapsack
2.
● Question: Given a list of items with values and weights, as well as a max weight,
find the maximum value you can generate from items where the sum of the
weights is less than the max.
● Eg.
items = {(w:1, v:6), (w:2, v:10), (w:3, v:12)}
maxWeight = 5
knapsack(items, maxWeight) = 22
● Answer: https://www.byte-by-byte.com/01knapsack/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
6
Matrix product
3.
● Question: Given a matrix, find the path from top left to bottom right with the
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
1 ‑> 4 ‑> 7 ‑> 8 ‑> 9
2016
[‑1, 2, 3]
[4, 5, ‑6]
[7, 8, 9]
‑1 ‑> 4 ‑> 5 ‑> ‑6 ‑> 9
1080
● Answer: https://www.byte-by-byte.com/matrixproduct/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
7
Find Duplicates
4.
● Question: Given an array of integers where each value 1 <= x <= len(array), write
a function that finds all the duplicates in the array.
● Eg.
dups([1, 2, 3]) = []
dups([1, 2, 2]) = [2]
dups([3, 3, 3]) = [3]
dups([2, 1, 2, 1]) = [1, 2]
● Answer: https://www.byte-by-byte.com/findduplicates/
Consecutive Array
5.
● Question: Given an unsorted array, find the length of the longest sequence of
consecutive numbers in the array.
● eg.
consecutive([4, 2, 1, 6, 5]) = 3, [4, 5, 6]
consecutive([5, 5, 3, 1]) = 1, [1], [3], or [5]
● Answer: https://www.byte-by-byte.com/consecutivearray/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
8
Zero Matrix
6.
● Question: Given a boolean matrix, update it so that if any cell is true, all the cells
[true, false, false] [true, true, true ]
[false, false, false] ‑> [true, false, false]
[false, false, false] [true, false, false]
● Answer: https://www.byte-by-byte.com/zeromatrix/
Square Submatrix
7.
● Question: Given a 2D array of 1s and 0s, find the largest square subarray of all
1s.
● Eg. Given a 2D array of 1s and 0s, find the largest square subarray of all 1s.
● Answer: https://www.byte-by-byte.com/squaresubmatrix/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
9
Merge K Arrays
8.
● Question: Given k sorted arrays, merge them into a single sorted array.
● Eg.
merge({{1, 4, 7},{2, 5, 8},{3, 6, 9}}) = {1, 2, 3, 4, 5, 6, 7, 8, 9}
● Answer: https://www.byte-by-byte.com/mergekarrays/
Matrix Search
9.
● Question: Given an n x m array where all rows and columns are in sorted order,
contains([1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]) = True
Answer: https://www.byte-by-byte.com/matrixsearch/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
10
10. Merge Arrays
● Question: Given 2 sorted arrays, A and B, where A is long enough to hold the
contents of A and B, write a function to copy the contents of B into A without
using any buffer or additional memory.
● Eg.
A = {1,3,5,0,0,0}
B = {2,4,6}
mergeArrays(A, B)
A = {1,2,3,4,5,6}
● Answer: https://www.byte-by-byte.com/mergearrays/
11. Zero Sum Subarray
● Question: Given an array, write a function to find any subarray that sums to zero,
if one exists.
● Eg.
zeroSum({1, 2, ‑5, 1, 2, ‑1}) = [2, ‑5, 1, 2]
● Answer: https://www.byte-by-byte.com/zerosum/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
11
12. Permutations
● Question: Write a function that returns all permutations of a given list.
● Eg.
permutations({1, 2, 3})
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
● Answer: https://www.byte-by-byte.com/permutations/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
12
13. N Stacks
● Question: Implement N > 0 stacks using a single array to store all stack data
(you may use auxiliary arrays in your stack object, but all of the objects in all of
the stacks must be in the same array). No stack should be full unless the entire
array is full.
● Eg.
N = 3;
capacity = 10;
Stacks stacks = new Stacks(N, capacity);
stacks.put(0, 10);
stacks.put(2, 11);
stacks.pop(0) = 10;
stacks.pop(2) = 11;
● Answer: https://www.byte-by-byte.com/nstacks/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
13
14. Anagrams
● Question: Given two strings, write a function to determine whether they are
anagrams.
● Eg.
isAnagram("", "") = true
isAnagram("A", "A") = true
isAnagram("A", "B") = false
isAnagram("ab", "ba") = true
isAnagram("AB", "ab") = true
● Answer: https://www.byte-by-byte.com/anagrams/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
14
Graph Problems
0:
1: 0
2: 0
3: 1, 2
4: 3
output: 0, 1, 2, 3, 4
● Answer: https://www.byte-by-byte.com/buildorder/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
15
16. Shortest Path
● Question: Given a directed graph, find the shortest path between two nodes if
one exists.
● Eg.
Directed graph:
shortestPath(2, 3) = 2 ‑> 5 ‑> 4 ‑> 3
● Answer: https://www.byte-by-byte.com/shortestpath/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
16
Recursion Problems
a random node.
● Eg.
getRandomNode() = 5
getRandomNode() = 8
getRandomNode() = 1
● Answer: https://www.byte-by-byte.com/randombinarytree/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
17
18. Lowest Common Ancestor
● Question: Given two nodes in a binary tree, write a function to find the lowest
common ancestor.
● Eg.
lcs(4, 3) = 1
lcs(6, 7) = 3
● Answer: https://www.byte-by-byte.com/lowestcommonancestor/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
18
19. Sum
● Answer: https://www.byte-by-byte.com/sum/
● Question: Given a stack, reverse the items without creating any additional data
structures.
● Eg.
reverse(1‑>2‑>3) = 3‑>2‑>1
● Answer: https://www.byte-by-byte.com/reversestack/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
19
21. Tree to Doubly Linked List
● Question: Given a tree, write a function to convert it into a circular doubly linked
<‑ 4 <‑> 2 <‑> 5 <‑> 1 <‑> 6 <‑> 3 <‑> 7 ‑>
● Answer: https://www.byte-by-byte.com/treetolist/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
20
22. Longest Consecutive Branch
length = 3
● Answer: https://www.byte-by-byte.com/longestbranch/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
21
23. Print Reversed Linked List
● Question: Given a linked list, write a function that prints the nodes of the list in
reverse order.
● Eg.
printReversedList(1 ‑> 2 ‑> 3)
3
2
1
Answer: https://www.byte-by-byte.com/printreversedlist/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
22
24. Balanced Binary Tree
● Question: Given a binary tree, write a function to determine whether the tree is
balanced.
● Eg.
● Answer: https://www.byte-by-byte.com/balancedtree/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
23
25. Binary Search Tree Verification
Valid:
Invalid:
● Answer: https://www.byte-by-byte.com/binarysearchtree/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
24
26. Smallest Change
● Question: Given an input amount of change x, write a function to determine the
minimum number of coins required to make that amount of change.
change(1) = 1
change(3) = 3
change(7) = 3
change(32) = 4
● Answer: https://www.byte-by-byte.com/smallestchange/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
25
Stack Problems
● Question: Given a binary search tree, print out the elements of the tree in order
without using recursion.
● Eg.
1
2
3
5
6
7
8
● Answer: https://www.byte-by-byte.com/inordertraversal/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
26
28. Sort Stacks
● Question: Given a stack, sort the elements in the stack using one additional
stack.
● Eg.
sort([1, 3, 2, 4]) = [1, 2, 3, 4]
● Answer: https://www.byte-by-byte.com/sortstacks/
● Question: Implement a LIFO stack with basic functionality (push and pop) using
FIFO queues to store the data.
● Answer: https://www.byte-by-byte.com/stackfromqueues/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
27
30. Palindromes
● Question: Given a linked list, write a function to determine whether the list is a
palindrome.
● Eg.
palindrome(1 ‑> 2 ‑> 3) = false
palindrome(1 ‑> 2 ‑> 1) = true
● Answer: https://www.byte-by-byte.com/palindromes/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
28
31. Max Stacks
● Question: Implement a LIFO stack that has a push(), pop(), and max() function,
where max() returns the maximum value in the stack. All of these functions
should run in O(1) time.
● Eg.
push(1)
max() = 1
push(2)
max() = 2
push(1)
max() = 2
pop() = 1
max() = 2
pop() = 2
max() = 1
● Answer: https://www.byte-by-byte.com/maxstack/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
29
Bit Manipulation Problems
● Question: Given an array containing all the numbers from 1 to n except two, find
the two missing numbers.
● Eg.
missing([4, 2, 3]) = 1, 5
● Answer: https://www.byte-by-byte.com/twomissingnumbers/
33. Big Int Modules
● Question: Given a list of bytes a, each representing one byte of a larger integer
(ie. {0x12, 0x34, 0x56, 0x78}represents the integer 0x12345678), and an integer
b, find a % b.
● Eg.
mod({0x03, 0xED}, 10) = 5
● Answer: https://www.byte-by-byte.com/bigintmod/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
30
34. Swap Variables
● Question: Given two integers, write a function that swaps them without using
any temporary variables.
● Answer: https://www.byte-by-byte.com/swapvariables/
● Question: Given two integers, write a function to determine whether or not their
binary representations differ by a single bit.
● Eg.
gray(0, 1) = true
gray(1, 2) = false
● Answer: https://www.byte-by-byte.com/graycode/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
31
36. Rotate Bits
● Question: Given a number, write a function to rotate the bits (ie circular shift).
● Eg.
rotate(0xFFFF0000, 8) = 0x00FFFF00
rotate(0x13579BDF, 12) = 0xBDF13579
rotate(0b10110011100011110000111110000000, 17) =
0b00011111000000010110011100011110
● Answer: https://www.byte-by-byte.com/rotatebits/
● Question: Given an integer, write a function to compute the number of ones in
the binary representation of the number.
● Eg. Given an integer, write a function to compute the number of ones in the
binary representation of the number.
● Answer: https://www.byte-by-byte.com/onesinbinary/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
32
Linked List Problems
1 ‑> 2 ‑> 3 ‑> 4
^ |
|_________|
● Answer: https://www.byte-by-byte.com/listcycles/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
33
39. Random Linked List
● Question: Given a linked list where each node has two pointers, one to the next
node and one to a random node in the list, clone the linked list.
● Eg.
| | | |
v v v v
3 1 3 2
Answer: https://www.byte-by-byte.com/randomlinkedlist/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
34
40. Dedup Linked List
● Question: Given an unsorted linked list, write a function to remove all the
duplicates.
● eg.
dedup(1 ‑> 2 ‑> 3 ‑> 2 ‑> 1) = 1 ‑> 2 ‑> 3
● Answer: https://www.byte-by-byte.com/deduplinkedlist/
● Question: Given a linked list, write a function to split the list into two equal
halves.
● Eg.
divide(1 ‑> 2 ‑> 3 ‑> 4) = 1 ‑> 2, 3 ‑> 4
divide(1 ‑> 2 ‑> 3 ‑> 4 ‑> 5) = 1 ‑> 2 ‑> 3, 4 ‑> 5
● Answer: https://www.byte-by-byte.com/splitlinkedlist/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
35
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
36
42. Nth to the Last Element
● Question: Given a linked list, and an input n, write a function that returns the
nth-to-last element of the linked list.
● Eg. Given a linked list, and an input n, write a function that returns the nth-to-last
element of the linked list.
● Answer: https://www.byte-by-byte.com/nthtolastelement/
● Question: Given a list of integers, write a function that returns all sets of 3
numbers in the list, a, b, and c, so that a + b + c == 0.
● Eg.
threeSum({‑1, 0, 1, 2, ‑1, ‑4})
[‑1, ‑1, 2]
[‑1, 0, 1]
● Answer: https://www.byte-by-byte.com/threesum/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
37
44. Tree Level Order
● Question: Given a tree, write a function that prints out the nodes of the tree in
level order.
● Eg.
traverse(tree) = 1 2 3 4 5 6 7
● Answer: https://www.byte-by-byte.com/treelevelorder/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
38
String Problems
45. Autocomplete
● Question: Write an autocomplete class that returns all dictionary words with a
given prefix.
● Eg.
dict: {"abc", "acd", "bcd", "def", "a", "aba"}
prefix: "a" ‑> "abc", "acd", "a", "aba"
prefix: "b" ‑> "bcd"
● Answer: https://www.byte-by-byte.com/autocomplete/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
39
46. String Deletion
dictionary: [“a”, “aa”, “aaa”]
query: “abc”
output: 2
● Answer: https://www.byte-by-byte.com/stringdeletion/
● Question: Given two strings, write a function that returns the longest common
substring.
● Eg.
longestSubstring("ABAB", "BABA") = "ABA"
● Answer: https://www.byte-by-byte.com/longestsubstring/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
40
48. String Compression
repetitions. If the compressed string is longer than the original, you should return
the original string.
● Eg.
compress(“a”) = "a"
compress(“aaa”) = "a3"
compress(“aaabbb”) = "a3b3"
compress(“aaabccc”) = "a3b1c3"
● Answer: https://www.byte-by-byte.com/stringcompression/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
41
49. Fibonacci Number
number.
● Eg.
fibonacci(1) = 1
fibonacci(5) = 5
fibonacci(10) = 55
● Answer: https://www.byte-by-byte.com/fibonacci/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
42
51. Kth Most Frequent String
● Question: Given a list of strings, write a function to get the kth most frequently
occurring string.
● Eg.
kthMostFrequent({"a","b","c","a","b","a"}, 0) = "a"
kthMostFrequent({"a","b","c","a","b","a"}, 1) = "b"
kthMostFrequent({"a","b","c","a","b","a"}, 2) = "c"
kthMostFrequent({"a","b","c","a","b","a"}, 3) = null
● Answer: https://www.byte-by-byte.com/kthmostfrequentstring/
Enjoying this guide? Share it via Email , Facebook , LinkedIn , or Twitter !
© Byte by Byte 2018
43