How I Train Myself For Google Internship Interview

Written by sicheng | Published 2019/12/16
Tech Story Tags: leetcode | coding-interviews | coding-interview-resources | intern | career | recruiting | software-development | online-courses

TLDR Educative: Interactive Courses for Software Developers is a great platform to learn how to do coding interviews correctly. They offered several courses for coding interviews, among others. What I like most is that they would tell you the ins and outs of these coding questions. They break questions into different groups, patterns, as they say. They have patterns like: Sliding window, to solve a group of questions like Longest Substring with K Distinct Characters (medium). Fast & Slow pattern to solve 3-sum problem to solve Middle of the LinkedList (easy)via the TL;DR App

I recently got an intern offer from Google for Summer 2020. I have been practicing LeetCode problems for more than two years. Other than the LC problems, I have used the educative courses to help me prepare the coding interviews.
I found Educative: Interactive Courses for Software Developers is a great platform to learn how to do coding interviews correctly. They offered several courses for coding interviews, among others. What I like most is that they would tell you the ins and outs of these coding questions. And they break questions into different groups, patterns, as they say.
For example, in their Grokking the Coding Interview: Patterns for Coding Questions, they have patterns like:
  • Sliding window, to solve a group of questions like Longest Substring with K Distinct Characters (medium).
  • 2 points to solve 3-sum problem.
  • Fast & Slow pattern to solve Middle of the LinkedList (easy),
    LinkedList Cycle (easy).
  • Merge Intervals: Merge Intervals (medium).
  • Cyclic Sort: Find the Duplicate Number (easy).
  • In-place Reversal of a LinkedList: Reverse a LinkedList (easy).
  • Tree Breadth First Search: Binary Tree Level Order Traversal (easy).
  • Pattern: Tree Depth First Search: Binary Tree Path Sum (easy).
  • Two Heaps: Find the Median of a Number Stream (medium).
  • Subsets: Subsets With Duplicates (easy).
  • Modified Binary Search: Ceiling of a Number (medium).
  • Top 'K' Elements: Top 'K' Numbers (easy).
  • K-way merge: Merge K Sorted Lists (medium).
  • 0/1 Knapsack (Dynamic Programming): Equal Subset Sum Partition (medium).
  • Topological Sort (Graph): Alien Dictionary (hard).
In their Grokking Dynamic Programming Patterns for Coding Interviews course, they break problems into:
  • 0/1 Knapsack: Subset Sum.
  • Unbounded Knapsack: Coin Change.
  • Fibonacci Numbers: Staircase.
  • Palindromic Subsequence: Longest Palindromic Subsequence.
  • Longest Common Substring: Longest Common Subsequence, Edit Distance, among others.
Usually, the author would go through the questions and solve them with
  1. Pure recursion
  2. Top-Down memoization
  3. Bottom-Up table filling techniques
This is great since we practice three ways of problem solving at a time.
I was trying grinding LeetCode for the past year, but that was kind of intimidating, since there are more than 1000 questions here now. So we need to do the preparation in a smarter and more efficient way.
The above two courses helped me the most to prepare coding interviews. Of course, you will find their System design, and OOD courses there as well.
LOTS of people recommended the System design to prepare the System Design interviews, especially for those who are looking for senior positions.
I think that the combination of educative and LeetCode is a perfect match, in order to excel at our coding interviews! As we know that the LC discussions are the best to learn from our fellow friends and coders!
Big thanks to educative.io and I will definitely keep learning from you and get better!
Happy learning and coding!

Written by sicheng | I am Phd student in CS.
Published by HackerNoon on 2019/12/16