Coding Interview Preparation: Learn to Solve Algorithmic Problems to Land Your Next Software Role

Video description

To demonstrate your problem-solving skills “in real time” during a coding interview, you need to practice how you break down a problem to be solved. Being able to explain how you will solve a problem is often more important than being able to fully code a solution to that problem in a limited amount of time. Problem solving is a skill that can be learned.

In this course you will apply knowledge of algorithms and data types to solve problems. Through repetition, you will practice common strategies that work to decompose a problem into its smaller sub-problems, and see algorithms in action. Often a problem appears to give no information about how it can be solved, but by paying attention to all known details, you will see that eventually each problem provides hints as to how it can be solved. Gaining the skill to solve problems is essential to become a capable programmer and software engineer.

To solve computational problems you need to refresh your knowledge of fundamental data types that are essential to efficient software. These data types include: stacks, queues and priority queues. Common data structures used to implement these types include arrays (or Python lists), binary heaps and linked lists.

Structure

Module 1: Introduction to Problem Solving – The learner is presented with information recording the time it takes different workers to complete different jobs. From this simple data set, a variety of questions are asked, engaging the learner to solve different problems.

Module 2: Recursion with Stacks and Queues – The learner will explore different scenarios using recursion with stacks and queues, including finding a path in a rectangular 2D maze and counting the number of unique Tic Tac Toe games that can be played (ending in a draw or a win by either X or O).

Module 3: Dynamic Programming – Dynamic programming is a technique for solving a problem by subdividing it into a number of simpler subproblems that are solved in a specific order. The learner is presented with different problems that can be solved recursively top-down, using a technique called memoization to store solutions to smaller subproblems. An alternative technique solves problems bottom-up by storing the results of smaller subproblems which are composed together to solve larger subproblems until the original problem is solved.

What you’ll learn and how to apply it

By the end of this course:

  • The learner should understand how to solve common algorithmic problems and be ready to go into a coding interview with confidence.
  • The learner should understand performance classifications for the operations of the data types covered in the course.
  • The learner should be able to explain common approaches for solving problems, including iterative, greedy, divide and conquer using recursion, and dynamic programming.

Module Learning Objectives

  • Module 1: Introduction to Problem-Solving – Understand the connection between data types and required solutions, how to use sets and dictionaries for problem solving, how binary heap structure can be used for priority queue behavior, how a greedy algorithm works, how to use a stack to solve a numerical challenge, and how to use a queue to solve a logic puzzle.
  • Module 2: Recursion and applying stacks and queues – Understand how to model state, how to use a stack to determine possible solutions, how to use a queue to locate shortest path in the same NxN square maze, how to use recursion as part of a search, and how to use dictionaries to find an actual unique number.
  • Module 3: Dynamic Programming – Learn to identify overlapping subproblems, an essential step towards recognizing applicability of dynamic programming. Understand a top-down approach using recursion and memoization to reduce search space, and bottom-up iteration using for loops over matrix of solutions.

This course is for you because

  • You are a software developer looking to learn algorithms for the coding interview.

Prerequisites

  • Learner should know how to use Python, including lists, dictionaries, the ability to write recursive methods, the yield statement and rudimentary object-oriented principles
  • Learner should be aware of common data types of stacks, queues

Product information

  • Title: Coding Interview Preparation: Learn to Solve Algorithmic Problems to Land Your Next Software Role
  • Author(s): George Heineman
  • Release date: September 2024
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 0642572011307