the challenge
Github Repository:
Educative coursework:
- _Course 1: Data Structures in Java: An Interview Refresher
- _Course 2: Grokking the Coding Interview: Patterns for Coding Questions
- _Course 3: Recursion for Coding Interviews in Java
- _Course 4: Big-O Notation For Coding Interviews and Beyond
- _Course 5: Grokking the Object Oriented Design Interview
- _Course 6: Grokking the System Design Interview
- _Course 7: Grokking Dynamic Programming Patterns for Coding Interviews
- _Course 8: Java Multithreading for Senior Engineering Interviews
All topics from educative:
- C1: Complexity Measures
- C1: Arrays
- C1: Linked Lists
- C1: Stack/Queues
- C1: Graphs
- C1: Trees
- C1: Tries
- C1: Heaps
-
C1: Hashtables
- C2: Pattern: Sliding Window
- C2: Pattern: Two Pointers
- C2: Pattern: Fast & Slow pointers
- C2: Pattern: Merge Intervals
- C2: Pattern: Cyclic Sort
- C2: Pattern: In-place Reversal of a LinkedList
- C2: Pattern: Tree Breadth First Search
- C2: Pattern: Tree Depth First Search
- C2: Pattern: Two Heaps
- C2: Pattern: Subsets
- C2: Pattern: Modified Binary Search
- C2: Pattern: Top ‘K’ Elements
- C2: Pattern: K-way merge
- C2: Pattern: 0/1 Knapsack (Dynamic Programming)
- C2: Pattern: Topological Sort
-
C2: Pattern: Kth Smallest Number (hard)
- C3: Fundamentals of Recursion
- C3: Iteration to Recursion
- C3: Recursion with Numbers
- C3: Recursion with Strings
- C3: Recursion with Arrays
-
C3: Recursion with Data Structures
- C4: Basics of Big-O
- C4: Formal Analysis Tools
- C4: Recursive
- C4: Data-Structures
- C4: Amortized Analysis
- C4: Probabilistic Analysis
-
C4: Complexity Theory
- C5: Object-Oriented Design and UML
- C5: Design a Library Management System
- C5: Design a Parking Lot
- C5: Design Amazon - Online Shopping System
- C5: Design Stack Overflow
- C5: Design a Movie Ticket Booking System
- C5: Design an ATM
- C5: Design an Airline Management System
- C5: Design Blackjack and a Deck of Cards
- C5: Design a Hotel Management System
- C5: Design a Restaurant Management system
- C5: Design Chess
- C5: Design an Online Stock Brokerage System
- C5: Design a Car Rental System
- C5: Design LinkedIn
- C5: Design Cricinfo
-
C5: Design Facebook - a social network
- C6: Designing a URL Shortening service like TinyURL
- C6: Designing Pastebin
- C6: Designing Instagram
- C6: Designing Dropbox
- C6: Designing Facebook Messenger
- C6: Designing Twitter
- C6: Designing Youtube or Netflix
- C6: Designing Typeahead Suggestion
- C6: Designing an API Rate Limiter
- C6: Designing Twitter Search
- C6: Designing a Web Crawler
- C6: Designing Facebook’s Newsfeed
- C6: Designing Yelp or Nearby Friends
- C6: Designing Uber backend
- C6: Design Ticketmaster
-
C6: Glossary of System Design Basics
- C7: Pattern 1: 0/1 Knapsack
- C7: Pattern 2: Unbounded Knapsack
- C7: Pattern 3: Fibonacci Numbers
- C7: Pattern 4: Palindromic Subsequence
-
C7: Pattern 5: Longest Common Substring
- C8: The Basics of Java and OS
- C8: Multithreading in Java
- C8: Java Memory Model
- C8: Blocking Queue / Bounded Buffer / Consumer Producer
- C8: Rate Limiting Using Token Bucket Filter
- C8: Thread Safe Deferred Callback
- C8: Implementing Semaphore
- C8: ReadWrite Lock
- C8: Unisex Bathroom Problem
- C8: Implementing a Barrier
- C8: Uber Ride Problem
- C8: Dining Philosophers
- C8: Barber Shop
- C8: Superman Problem
- C8: Multithreaded Merge Sort
- C8: Asynchronous to Synchronous Problem
- C8: Java Thread Basics
Challenges in Topics:
1. Data Structures in Java: An Interview Refresher
- Complexity Measures
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Arrays
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Challenge 6
- Challenge 7
- Challenge 8
- Challenge 9
- Challenge 10
- Linked Lists
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Challenge 6
- Challenge 7
- Challenge 8
- Challenge 9
- Challenge 10
- Stack/Queues
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Challenge 6
- Challenge 7
- Challenge 8
- Challenge 9
- Challenge 10
- Graphs
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Challenge 6
- Challenge 7
- Challenge 8
- Trees
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Tries
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Heaps
- Challenge 1
- Challenge 2
- Challenge 3
- Hashtables
- Challenge 1
- Challenge 2
- Challenge 3
- Challenge 4
- Challenge 5
- Challenge 6
- Challenge 7
- Challenge 8
- Challenge 9
2. Grokking the Coding Interview: Patterns for Coding Questions
- Pattern: Sliding Window
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Problem Challenge 4
- Pattern: Two Pointers
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Problem Challenge 4
- Pattern: Fast & Slow pointers
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: Merge Intervals
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: Cyclic Sort
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: In-place Reversal of a LinkedList
- Problem Challenge 1
- Problem Challenge 2
- Pattern: Tree Breadth First Search
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: Tree Depth First Search
- Problem Challenge 1
- Problem Challenge 2
- Pattern: Two Heaps
- Problem Challenge 1
- Pattern: Subsets
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: Modified Binary Search
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: Top ‘K’ Elements
- Problem Challenge 1
- Problem Challenge 2
- Problem Challenge 3
- Pattern: K-way merge
- Problem Challenge 1
- Pattern: 0/1 Knapsack (Dynamic Programming)
- Problem Challenge 1
- Problem Challenge 2
- Pattern: Topological Sort
- Problem Challenge 1
- Problem Challenge 2
- Pattern: Kth Smallest Number (hard)
- Problem Challenge 1
3. Recursion for Coding Interviews in Java
- Fundamentals of Recursion
- Iteration to Recursion
- Challenge 1: Length of a Linked List
- Recursion with Numbers
- Challenge 1: Find the Greatest Common Divisor
- Challenge 2: Check for Prime Number
- Challenge 3: Convert Decimal Number to Binary Number
- Recursion with Strings
- Challenge 1: Let’s find the total number of vowels!
- Challenge 2: Print all Permutations of a String
- Challenge 3: Is this String a Palindrome?
- Recursion with Arrays
- Challenge 1: Find if the Array is a Palindrome
- Challenge 2: Sort an Array
- Recursion with Data Structures
- Challenge 1: Search for a Value in a Linked List
4. Big-O Notation For Coding Interviews and Beyond
- Basics
- Problem Set 1
- Formal Analysis Tools
- Problem Set 2
- Recursive
- Problem Set 3
- Data-Structures
- Problem Set 4
- Amortized Analysis
- Problem Set 5
- Probabilistic Analysis
- Problem Set 6
- Complexity Theory
5. Grokking the Object Oriented Design Interview
- Object-Oriented Design and UML
- Object Oriented Design Case Studies
- Design a Library Management System
- Design a Parking Lot
- Design Amazon - Online Shopping System
- Design Stack Overflow
- Design a Movie Ticket Booking System
- Design an ATM
- Design an Airline Management System
- Design Blackjack and a Deck of Cards
- Design a Hotel Management System
- Design a Restaurant Management system
- Design Chess
- Design an Online Stock Brokerage System
- Design a Car Rental System
- Design LinkedIn
- Design Cricinfo
- Design Facebook - a social network
6. Grokking the System Design Interview
- System Design Problems
- Designing a URL Shortening service like TinyURL
- Designing Pastebin
- Designing Instagram
- Designing Dropbox
- Designing Facebook Messenger
- Designing Twitter
- Designing Youtube or Netflix
- Designing Typeahead Suggestion
- Designing an API Rate Limiter
- Designing Twitter Search
- Designing a Web Crawler
- Designing Facebook’s Newsfeed
- Designing Yelp or Nearby Friends
- Designing Uber backend
- Design Ticketmaster
- Glossary of System Design Basics
7. Grokking Dynamic Programming Patterns for Coding Interviews
- Pattern 1: 0/1 Knapsack
- Pattern 2: Unbounded Knapsack
- Pattern 3: Fibonacci Numbers
- Pattern 4: Palindromic Subsequence
- Pattern 5: Longest Common Substring
8. Java Multithreading for Sr Engg. Interviews
- The Basics
- Multithreading in Java
- Java Memory Model
- Interview Practice Problems
-
Blocking Queue Bounded Buffer Consumer Producer - Rate Limiting Using Token Bucket Filter
- Thread Safe Deferred Callback
- Implementing Semaphore
- ReadWrite Lock
- Unisex Bathroom Problem
- Implementing a Barrier
- Uber Ride Problem
- Dining Philosophers
- Barber Shop
- Superman Problem
- Multithreaded Merge Sort
- Asynchronous to Synchronous Problem
-
- Java Thread Basics