Rem Kim - 2021-08-01

Here are my tips on preparing for Coding Interview

In my previous blog I've described few tips of preparing for an interview and how interview process looks like. Tips on preparing for an interview Today I want to share some preparation material with you.

In order to prove that you qualify for a Software Engineering position that you are applying to, you need to pass all technical interviews. Usually it is a 3 separate interviews depending on company but not less than 2.

- Initial filtering (Algorithm problem, Homework challenge)
- Second round (Algorithm / System design problem)
- Final Round (System design / Domain specific interview)

If you are not prepared and/or didn't brush up your knowledge about data structures you will fail.

**How to prepare for it?**

**LeetCode** is a good source of coding problems to solve. If you are serious about preparation and getting hired by FAANG companies I'd suggest purchasing a subscription that will unlock additional questions and faster compile time.

**Grokking Algorithms** if you are new to algorithms and want to read about it first, this book is a great starting point. Very descriptive illustrations will help you to visually understand how those algorithms work.

**Practice a lot.** You never know what problem you will get, so the more you practice the higher chance you will solve it.

**LeetCode problems**

I've found this list on Blind and so far this covered most of the problem topics.

Array

- Two Sum
- Best Time to Buy and Sell Stock
- Contains Duplicate
- Product of Array Except Self
- Maximum Subarray
- Maximum Product Subarray
- Find Minimum in Rotated Sorted Array
- Search in Rotated Sorted Array
- 3Sum
- Container With Most Water

Binary

Dynamic Programming

- Climbing Stairs
- Coin Change
- Longest Increasing Subsequence
- Longest Common Subsequence
- Word Break Problem
- Combination Sum
- House Robber
- House Robber II
- Decode Ways
- Unique Paths
- Jump Game

Graph

- Clone Graph
- Course Schedule
- Pacific Atlantic Water Flow
- Number of Islands
- Longest Consecutive Sequence
- Alien Dictionary (Leetcode Premium)
- Graph Valid Tree (Leetcode Premium)
- Number of Connected Components in an Undirected Graph (Leetcode Premium)

Interval

- Insert Interval
- Merge Intervals
- Non-overlapping Intervals
- Meeting Rooms (Leetcode Premium)
- Meeting Rooms II (Leetcode Premium)

Linked List

- Reverse a Linked List
- Detect Cycle in a Linked List
- Merge Two Sorted Lists
- Merge K Sorted Lists
- Remove Nth Node From End Of List
- Reorder List

Matrix

String

- Longest Substring Without Repeating Characters
- Longest Repeating Character Replacement
- Minimum Window Substring
- Valid Anagram
- Group Anagrams
- Valid Parentheses
- Valid Palindrome
- Longest Palindromic Substring
- Palindromic Substrings
- Encode and Decode Strings (Leetcode Premium)

Tree

- Maximum Depth of Binary Tree
- Same Tree
- Invert/Flip Binary Tree
- Binary Tree Maximum Path Sum
- Binary Tree Level Order Traversal
- Serialize and Deserialize Binary Tree
- Subtree of Another Tree
- Construct Binary Tree from Preorder and Inorder Traversal
- Validate Binary Search Tree
- Kth Smallest Element in a BST
- Lowest Common Ancestor of BST
- Implement Trie (Prefix Tree)
- Add and Search Word
- Word Search II

Heap

This interview type will test your knowledge of building complex applications. Scalability, resilience, caching strategy and much more is going to be part of this interview. You will need to explain your solution and also explain why you made certain decisions.

**How to prepare for it?**

**Designing Data-Intensive Applications** - this book has it all. Distributed systems, databases, how tos, whys, limitations and much more. It is a pretty big book, but I suggest you read it.

**Build your own projects** - try building you own side projects. Most of the AWS resources can be easily enabled as a free tier so you can have your own playground and build what ever you want.

Preparation is they key for success. Read books, work on real life projects and solve LeetCode problems to improve your programming, analytical and critical thinking. Good luck!

programming

coding

challenge

problem

hiring

developer