Coding Interview Patterns: Data Structures & Algorithms
For the last couple of years, websites like HackerRank, Leetcode, InterviewBit, etc. have been the go-to places for practicing Data structures and Algorithm questions. When I was studying for my coding interviews in 2017, Leetcode had 300+ problems. Today there are 1500+ problems, approximately 5x compared to 2017. But it doesn't make sense to grind through all these problems.
Why? you ask... Because:
1. Most of us don't have the liberty of time.
2. It is almost impossible to remember these many solutions. And you are doing no good to yourself by even trying to memorize the solutions.
I have read many discussions about how the coding interview process, especially in Silicon Valley, is broken. The kind of problems we solve on the job vs. What is expected from us in the interviews is unrelated. Agreed! But, this has been the process to hire Software Engineers at well-known tech companies. You have to go through the grind. Most folks start their Leetcode grind by solving problems in Serial order or by sorting based on the Difficulty level. If you mindlessly keep working through problems in this manner, you will burn out soon.
The Human Brain is excellent at connecting dots, identifying patterns, and correlating the new unseen things based on the knowledge it has acquired in the past. When you are in the early stages of your coding interview preparation, do not jump through problems with random topics. Pick a topic, for example, Sliding Window, and solve a couple of problems on that topic. You will eventually start getting the general pattern/ template behind solving a given type of problem. The more patterns you learn, the easier it will be for you to identify the hook you need to start thinking about the problem. It will help you determine the right data structure or algorithm to use. Covering a breadth of topics first is more important than going deep into a particular topic when starting. Think of these Coding Patterns as a tool to build a mental framework that will guide you in building your solutions incrementally.
In this series of posts (or consider it a course), I will teach you the fundamental coding interview patterns that will help you crack coding interviews. Once you understand it, the patterns shared in this course will feel like magic. When I first identified these patterns and read about a few from other sources it opened up my mind so much! I was almost instantly able to guess the data structures and apply some templates to help me steer my approach to the problem. I am sure it will make your Leetcode grind much more enjoyable. Like every other skill in the world, this won't come easy. Practice & Consistency is key :)
The format of the course will most likely be written content (but I might end up making some videos). Written content will make it easier for you to refer to any part of the course whenever you want.
List of Top Coding Interview Patterns:
1) Two Pointers
2) Merge Intervals
3) Sliding Window
4) Topological Sort
5) Heap (Priority Queue)
6) Binary Search
7) Bread First Search (BFS) & Depth First Search (DFS)
8) Union-Find & Disjoint Sets
This series will assume you have some basic knowledge or familiarity with the most commonly used Data Structures like String, Array, Linked List, Tree, Graph, Heap, Queue, and Stack.
My goal is to build the Ultimate Coding Interview Prep Guide that is free for everyone. Please show your support by sharing with others who might find this helpful and signing up for the course.
- Who is the author?
- How can I access the content?
The course content is only available to blog subscribers.
Signing up to become a Member gives you complete access to the site content.
- Is the Coding Interview Patterns course free?
Yes, the course is free for blog subscribers.
Signing up right now gives you free future access to the course even after it becomes paid in the future. Note: You need to verify your email because neither of us like spam :)
- Where can I see the course outline? (new!)
You might want to bookmark the course outline page. That is where the content will be systematically organized.
- How can I contact you?
Creating content takes time! If you can't find what you are looking for, have suggestions on improvements in the course, have questions or any feedback please do reach out.
You can contact me via:
- Email: [email protected]
- Twitter: @techbumio
I appreciate you for sticking to the end! Hope you keep learning and continue to share what you learn. Cheers 🙂