Google interview guide
201 coding · 28 system design · 44 problem-solving questions, verified.
$49 one-time, lifetime access
What's inside
coding
- Accounts Merge
- Add Two Numbers
- Alien Dictionary
- All Nodes Distance K in Binary Tree
- Asteroid Collision
- Balanced Binary Tree
- Basic Calculator II
- Basic Calculator
- Best Time to Buy and Sell Stock with Cooldown
- Best Time to Buy and Sell Stock
- Binary Search Tree Iterator
- Binary Search
- Binary Tree Level Order Traversal
- Binary Tree Maximum Path Sum
- Binary Tree Right Side View
- Binary Tree Vertical Order Traversal
- Burst Balloons
- Bus Routes
- Candy
- Capacity To Ship Packages Within D Days
- Car Fleet
- Cheapest Flights Within K Stops
- Climbing Stairs
- Clone Graph
- Coin Change II
- Coin Change
- Combination Sum II
- Combination Sum
- Construct Binary Tree from Preorder and Inorder Traversal
- Container With Most Water
- Contains Duplicate
- Contiguous Array
- Continuous Subarray Sum
- Copy List with Random Pointer
- Count Good Nodes in Binary Tree
- Count Number of Nice Subarrays
- Counting Bits
- Course Schedule II
- Course Schedule
- Daily Temperatures
- Decode String
- Decode Ways
- Delete and Earn
- Design Add and Search Words Data Structure
- Design Hit Counter
- Diameter of Binary Tree
- Distinct Subsequences
- Edit Distance
- Employee Free Time
- Encode and Decode Strings
- Evaluate Division
- Evaluate Reverse Polish Notation
- Find All Duplicates in an Array
- Find First and Last Position of Element in Sorted Array
- Find Median from Data Stream
- Find Minimum in Rotated Sorted Array
- Find Peak Element
- First Missing Positive
- Flatten Binary Tree to Linked List
- Flatten Nested List Iterator
- Fruit Into Baskets
- Game of Life
- Gas Station
- Generate Parentheses
- Graph Valid Tree
- Group Anagrams
- Hand of Straights
- House Robber II
- House Robber
- Implement Trie (Prefix Tree)
- Insert Delete GetRandom O(1)
- Insert Interval
- Interleaving String
- Invert Binary Tree
- Is Graph Bipartite?
- Jump Game II
- Jump Game
- K Closest Points to Origin
- Koko Eating Bananas
- Kth Largest Element in a Stream
- Kth Largest Element in an Array
- Kth Smallest Element in a BST
- Kth Smallest Element in a Sorted Matrix
- Largest Rectangle in Histogram
- Letter Combinations of a Phone Number
- LFU Cache
- Linked List Cycle
- Logger Rate Limiter
- Longest Arithmetic Subsequence
- Longest Common Subsequence
- Longest Consecutive Sequence
- Longest Increasing Subsequence
- Longest Palindromic Substring
- Longest Repeating Character Replacement
- Longest Substring with At Most K Distinct Characters
- Longest Substring with At Most Two Distinct Characters
- Longest Substring Without Repeating Characters
- Lowest Common Ancestor of a Binary Search Tree
- Lowest Common Ancestor of a Binary Tree
- LRU Cache
- Majority Element
- Max Area of Island
- Max Consecutive Ones III
- Maximal Square
- Maximum Depth of Binary Tree
- Maximum Product Subarray
- Maximum Subarray
- Maximum Sum Circular Subarray
- Median of Two Sorted Arrays
- Meeting Rooms II
- Meeting Rooms
- Merge Intervals
- Merge K Sorted Lists
- Merge Sorted Array
- Merge Two Sorted Lists
- Min Cost Climbing Stairs
- Min Cost to Connect All Points
- Min Stack
- Minimum Height Trees
- Minimum Interval to Include Each Query
- Minimum Path Sum
- Minimum Size Subarray Sum
- Minimum Window Substring
- Missing Ranges
- Move Zeroes
- My Calendar I
- N-Queens
- Network Delay Time
- Next Greater Element II
- Non-overlapping Intervals
- Number of 1 Bits
- Number of Connected Components in an Undirected Graph
- Number of Islands II
- Number of Islands
- Number of Longest Increasing Subsequence
- Pacific Atlantic Water Flow
- Paint House
- Palindrome Partitioning
- Palindromic Substrings
- Partition Equal Subset Sum
- Partition Labels
- Peeking Iterator
- Perfect Squares
- Permutation in String
- Permutations
- Pow(x, n)
- Product of Array Except Self
- Random Pick with Weight
- Range Sum Query - Immutable
- Reconstruct Itinerary
- Redundant Connection
- Regular Expression Matching
- Remove Duplicates from Sorted Array
- Remove K Digits
- Remove Nth Node From End of List
- Reorder List
- Reorganize String
- Reverse Bits
- Reverse Linked List
- Rotate Array
- Rotate Image
- Rotting Oranges
- Same Tree
- Search a 2D Matrix
- Search in Rotated Sorted Array
- Serialize and Deserialize Binary Tree
- Set Matrix Zeroes
- Shortest Path in Binary Matrix
- Single Number
- Sliding Window Maximum
- Sort Colors
- Spiral Matrix
- Split Array Largest Sum
- Squares of a Sorted Array
- String to Integer (atoi)
- Subarray Sum Equals K
- Subarrays with K Different Integers
- Subsets II
- Subsets
- Subtree of Another Tree
- Sum of Two Integers
- Surrounded Regions
- Swim in Rising Water
- Target Sum
- Task Scheduler
- 3Sum Closest
- 3Sum
- Time Based Key-Value Store
- Top K Frequent Elements
- Trapping Rain Water
- Two Sum
- Unique Paths
- Valid Anagram
- Valid Palindrome
- Valid Parentheses
- Validate Binary Search Tree
- Walls and Gates
- Word Break
- Word Ladder
- Word Search II
- Word Search
design
- Design an Ad Click Event Aggregation System
- Design a Chat Messaging System
- Design Cloud File Storage and Sync
- Design a Collaborative Document Editor
- Design a Distributed Cache
- Design a Distributed Key-Value Store
- Design a Distributed Message Queue
- Design an Email Service
- Design a Metrics Monitoring and Alerting System
- Design Nearby Places Search
- Design a News Feed
- Design a Notification System
- Design a Payment System
- Design a Rate Limiter
- Design a Ride Matching Service
- Design Search Autocomplete
- Design Top-K Heavy Hitters
- Design a URL Shortener
- Design a Video Streaming Platform
- Design a Web Crawler
- Elevator System
- In-Memory File System
- Logging Framework
- Parking Lot
- Rate Limiter Library
- Snake Game
- Text Editor with Undo/Redo
- Vending Machine
problem-solving
- Amortized Cost of a Dynamic Array
- Bounded Blocking Queue
- Consistent Hashing Explained
- Binary Search Off-by-One
- Closure Late Binding in a Loop
- Floating-Point Equality
- Integer Overflow in Midpoint
- is vs ==
- Modifying a List While Iterating
- Mutable Default Argument
- Mutable Object as a Dict Key
- Quadratic String Building
- Recursion Depth Exceeded
- Shallow Copy of a Nested List
- Timezone-Naive Datetime
- Unicode String Length
- Unstable Sort Assumption
- Dining Philosophers Deadlock
- Estimate CDN Bandwidth for a Live Event
- Estimate the Cost of Storing Photos
- Convert DAU to Concurrent Users
- Estimate Email Storage for a Billion Users
- Break Down a Latency Budget
- Estimate Log Volume per Day
- Estimate Memory for a URL Cache
- Estimate Search Engine QPS
- Estimate Servers for an API Load
- Estimate Daily Storage for Video Uploads
- False Sharing and Cache Lines
- Hash Table Worst Case and Mitigation
- LSM Tree vs B-Tree
- Pick the Data Structure for Each Scenario
- Predict the Output - Generator Laziness
- Predict the Output - Python Scoping
- Print in Order with Threads
- Process vs Thread vs Coroutine
- Read-Write Lock
- Recursion vs Iteration and Memory
- Sorting Nearly Sorted Input
- TCP vs UDP: Choose for a Scenario
- Thread-Safe Counter
- Token Bucket Rate Limiter Class
- What Happens When You Load a URL
- When n² Beats n log n