Course: Grokking the Advanced System Design Interview

System design questions have increasingly become an integral part of software engineering interviews. For senior engineers, the discussion around system design is considered even more important than solving a coding question. In a system design interview, you can show your real design skills and show how they will work with designing complex systems. It is a given that a good performance in system design interviews will get you a senior position and result in higher salaries.

This course presents the architectural review of famous distributed systems. The main goal is to extract out important design details that are relevant to system design interviews. The course also presents a list of system design patterns that constitute the common design problems and their solutions that different distributed systems have developed over time.

Course: Grokking Dynamic Programming Patterns for Coding Interviews

The fact is, Dynamic Programming (DP) problems can be some of the most intimidating on a coding interview. Even when it's actually clear if a problem can be solved using DP (which it rarely is), it can be pretty challenging to even know where to start on the solution. Unless, that is, you're trained on the approach to solving DP problems.

This course was made from scratch with just that goal in mind. It'll equip you with a set of easy-to-understand techniques to handle any DP problem. Rather than just having you try to memorize solutions, you'll be walked through five underlying DP patterns that can then be applied to solve 35+ DP problems.

In each pattern, we'll start with a recursive brute-force solution -- this is actually the best way to start solving a DP problem! Once we have a recursive solution, we'll then apply the advanced DP methods of Memoization and Tabulation.

The practice problems in this course were carefully chosen, covering the most frequently asked DP questions in coding interviews.

Take a look at Grokking Dynamic Programming Patterns for Coding Interviews and Dynamic Programming for some good examples of dynamic programming questions and their answers.

Course: Grokking the Object Oriented Design Interview

Object-oriented design has always been a critical part of the software engineering interview process. Most of the engineers struggle with the object-oriented design interviews (OODI), partly because of their lack of experience in laying down the design of a complex system, and partly because of the unstructured nature of OODI.

Even engineers, who have some sort of experience in building such systems are not comfortable with these interviews. It is mainly because of the open-ended nature of the design problems that don't have a standard answer.

This course is a complete guide to master the OODI. It is designed by the hiring managers of Google, Facebook, Microsoft, and Amazon. It not only has a set of carefully handpicked case studies, which have been repeatedly asked at the top tech companies, but also provides a thorough experience to handle different object-oriented design scenarios.

Take a look at Grokking the Object Oriented Design Interview for some good examples of object oriented design question and their answers.


Have a question or suggestion?

Thanks for submitting!