Unlocking Career Opportunities: Paid Courses Which Helped Me Ace Software Development Interviews👨‍💻

Nishant Tanwar 🕉️
6 min readFeb 9, 2024

--

Software Development Interviews now a days mainly consists of three parts.

  1. Leetcode style Data Structures and Algorithms round (usually 2–3 rounds).
  2. Low Level Design round (some companies do not have this).
  3. High Level Design round.

Data Structures and Algorithm Round

Let’s be honest griding Leetcode day in and day out is not easy. More so if you are already working full time. But there is a hack, it is a course which I discovered couple of years ago called the Grokking the Coding Interview on Design Gurus. At that time the course was available on Educative.io. It is a course specially designed to help developers ace the DSA round of top tech companies.

DesignGurus is founded by Arslan Ahmad. Formally a software engineer @ Facebook, Microsoft, Hulu and now an Entrepreneur, Software Engineer, and Writer.

This course has all the coding patterns provided in a nicely organized manner, in one place. The patterns like “Two Pointers”, “Sliding Window”, “Merge Intervals”, “Two Heaps”, “Breadth First Search” are all present there. Each article starts with an in depth analysis of the pattern, the time and space complexity of the pattern and the common usage scenarios. Each article also has a list of sample solved problems which helps to solidify the concepts learnt.

For someone who is just starting with DSA, Leetcode can be daunting. I remember my initial days when even a Leetcode easy problem use to look like a huge mountain. Not being able to come up with the solutions can be disheartening and can lead to total abandonment of Leetcode. This is the reason I would suggest everyone to first go over all the coding patterns, get comfortable with the sample problems and only then start practicing on Leetcode.

Each pattern is explained in an easy to understand pictorial way. Below is a screenshot from the “Trie” coding pattern.

Also there is an in-browser coding environment provided so as to practice all the sample problems. All popular languages such as Java, Python, C#, CPP and JavaScript are supported.

For me as an experienced developer, ever since I discovered this course, the DSA rounds of the interviews have become a breeze. Now whenever I have an interview scheduled, I follow the below process :

  1. Go over the Coding patterns on Design Gurus website and skim through all the patterns. Usually solving around 5 sample problems each for all the patterns.
  2. Open the Leetcode website, select the problems company wise and solve them pattern by pattern.

This way the whole process becomes much more simpler and targeted. This in turn saves a lot of time and energy.

Apart from the general coding patterns they also have a dedicated Dynamic Programming course called Grokking Dynamic Programming Patterns for Coding Interviews. I rate this course as a game changer for anyone who wants to understand DP in detail. Unlike some other platforms where they directly give you a bottom up DP solution, DesignGurus start with an intuitive Recursive solution first. Then they gradually build a top down solution on the recursive one and finally explain the bottom up solution. I have found this step by step approach very easy to understand and implement in actual interviews.

Also they have divided the DP course into sub patterns such as “0/1 Knapsack”, “Unbounded Knapsack” , “Fibonacci Numbers”, “Palindrome Subsequence” and “Longest Common Substring”.

Below is a snippet from their article on 0/1 knapsack sub pattern.

High Level Design Round

Earlier high level design used to be only asked from experienced software engineers but lately basics of HLD are even being expected from freshers. To ace this round too I have used Design Guru’s carefully crafted resources. I have used the below three resources in the same order to get a grip over this topic.

a) In Grokking System Design Fundamentals course they go over the basics of the components which are used in the designing of any scalable and available system. They cover concepts like “Load Balancing”, “API Gateway”, “DNS” . “Caching” , “Bloom filters” ,”Indexes” and much more. They also cover basics of “Distributed Messaging system” and “Distributed File system” in this course. All these concepts lay a solid foundation for more complex design principles.

Below is a snippet listing the differences between the popular messaging queue systems.

b) In Grokking the System Design Interview they go over the questions which have been previously asked in top tech companies. It is created by a team of hiring managers from Google, Facebook, Microsoft, and Amazon. This course consists of how to design a “Pastebin”, “Instagram” , “Twitter”, “Facebook Messenger” , “Typeahead Suggestion” , “Uber” and many more systems. Going over these questions will give you a set of templates which you could apply if you are asked to design similar systems in an interview.

Below is a snippet from the “Designing Instagram” article, which is a part of this course.

c) In Grokking the Advanced System Design Interview they cover architectural reviews of famous distributed systems. This includes how to design “Dynamo- A distributed key value store” , “Cassandra -A wide column NoSQL database” , “Kafka -A distributed messaging system” , “GFS-A distributed File System Storage” etc. This course will reinforce the learnings from the previous courses and provide insights how those popular system were designed.

Below is a snippet explaining the consistent hashing is which implemented in the Dynamo DB design.

--

--