Github Repository:

ambition2020

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:

  1. C1: Complexity Measures
  2. C1: Arrays
  3. C1: Linked Lists
  4. C1: Stack/Queues
  5. C1: Graphs
  6. C1: Trees
  7. C1: Tries
  8. C1: Heaps
  9. C1: Hashtables

  10. C2: Pattern: Sliding Window
  11. C2: Pattern: Two Pointers
  12. C2: Pattern: Fast & Slow pointers
  13. C2: Pattern: Merge Intervals
  14. C2: Pattern: Cyclic Sort
  15. C2: Pattern: In-place Reversal of a LinkedList
  16. C2: Pattern: Tree Breadth First Search
  17. C2: Pattern: Tree Depth First Search
  18. C2: Pattern: Two Heaps
  19. C2: Pattern: Subsets
  20. C2: Pattern: Modified Binary Search
  21. C2: Pattern: Top ‘K’ Elements
  22. C2: Pattern: K-way merge
  23. C2: Pattern: 0/1 Knapsack (Dynamic Programming)
  24. C2: Pattern: Topological Sort
  25. C2: Pattern: Kth Smallest Number (hard)

  26. C3: Fundamentals of Recursion
  27. C3: Iteration to Recursion
  28. C3: Recursion with Numbers
  29. C3: Recursion with Strings
  30. C3: Recursion with Arrays
  31. C3: Recursion with Data Structures

  32. C4: Basics of Big-O
  33. C4: Formal Analysis Tools
  34. C4: Recursive
  35. C4: Data-Structures
  36. C4: Amortized Analysis
  37. C4: Probabilistic Analysis
  38. C4: Complexity Theory

  39. C5: Object-Oriented Design and UML
  40. C5: Design a Library Management System
  41. C5: Design a Parking Lot
  42. C5: Design Amazon - Online Shopping System
  43. C5: Design Stack Overflow
  44. C5: Design a Movie Ticket Booking System
  45. C5: Design an ATM
  46. C5: Design an Airline Management System
  47. C5: Design Blackjack and a Deck of Cards
  48. C5: Design a Hotel Management System
  49. C5: Design a Restaurant Management system
  50. C5: Design Chess
  51. C5: Design an Online Stock Brokerage System
  52. C5: Design a Car Rental System
  53. C5: Design LinkedIn
  54. C5: Design Cricinfo
  55. C5: Design Facebook - a social network

  56. C6: Designing a URL Shortening service like TinyURL
  57. C6: Designing Pastebin
  58. C6: Designing Instagram
  59. C6: Designing Dropbox
  60. C6: Designing Facebook Messenger
  61. C6: Designing Twitter
  62. C6: Designing Youtube or Netflix
  63. C6: Designing Typeahead Suggestion
  64. C6: Designing an API Rate Limiter
  65. C6: Designing Twitter Search
  66. C6: Designing a Web Crawler
  67. C6: Designing Facebook’s Newsfeed
  68. C6: Designing Yelp or Nearby Friends
  69. C6: Designing Uber backend
  70. C6: Design Ticketmaster
  71. C6: Glossary of System Design Basics

  72. C7: Pattern 1: 0/1 Knapsack
  73. C7: Pattern 2: Unbounded Knapsack
  74. C7: Pattern 3: Fibonacci Numbers
  75. C7: Pattern 4: Palindromic Subsequence
  76. C7: Pattern 5: Longest Common Substring

  77. C8: The Basics of Java and OS
  78. C8: Multithreading in Java
  79. C8: Java Memory Model
  80. C8: Blocking Queue / Bounded Buffer / Consumer Producer
  81. C8: Rate Limiting Using Token Bucket Filter
  82. C8: Thread Safe Deferred Callback
  83. C8: Implementing Semaphore
  84. C8: ReadWrite Lock
  85. C8: Unisex Bathroom Problem
  86. C8: Implementing a Barrier
  87. C8: Uber Ride Problem
  88. C8: Dining Philosophers
  89. C8: Barber Shop
  90. C8: Superman Problem
  91. C8: Multithreaded Merge Sort
  92. C8: Asynchronous to Synchronous Problem
  93. C8: Java Thread Basics

Challenges in Topics:

1. Data Structures in Java: An Interview Refresher

  1. Complexity Measures
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
    • Challenge 5
  2. Arrays
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
    • Challenge 5
    • Challenge 6
    • Challenge 7
    • Challenge 8
    • Challenge 9
    • Challenge 10
  3. Linked Lists
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
    • Challenge 5
    • Challenge 6
    • Challenge 7
    • Challenge 8
    • Challenge 9
    • Challenge 10
  4. Stack/Queues
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
    • Challenge 5
    • Challenge 6
    • Challenge 7
    • Challenge 8
    • Challenge 9
    • Challenge 10
  5. Graphs
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
    • Challenge 5
    • Challenge 6
    • Challenge 7
    • Challenge 8
  6. Trees
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
    • Challenge 5
  7. Tries
    • Challenge 1
    • Challenge 2
    • Challenge 3
    • Challenge 4
  8. Heaps
    • Challenge 1
    • Challenge 2
    • Challenge 3
  9. 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

  1. Pattern: Sliding Window
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
    • Problem Challenge 4
  2. Pattern: Two Pointers
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
    • Problem Challenge 4
  3. Pattern: Fast & Slow pointers
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  4. Pattern: Merge Intervals
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  5. Pattern: Cyclic Sort
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  6. Pattern: In-place Reversal of a LinkedList
    • Problem Challenge 1
    • Problem Challenge 2
  7. Pattern: Tree Breadth First Search
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  8. Pattern: Tree Depth First Search
    • Problem Challenge 1
    • Problem Challenge 2
  9. Pattern: Two Heaps
    • Problem Challenge 1
  10. Pattern: Subsets
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  11. Pattern: Modified Binary Search
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  12. Pattern: Top ‘K’ Elements
    • Problem Challenge 1
    • Problem Challenge 2
    • Problem Challenge 3
  13. Pattern: K-way merge
    • Problem Challenge 1
  14. Pattern: 0/1 Knapsack (Dynamic Programming)
    • Problem Challenge 1
    • Problem Challenge 2
  15. Pattern: Topological Sort
    • Problem Challenge 1
    • Problem Challenge 2
  16. Pattern: Kth Smallest Number (hard)
    • Problem Challenge 1

3. Recursion for Coding Interviews in Java

  1. Fundamentals of Recursion
  2. Iteration to Recursion
    • Challenge 1: Length of a Linked List
  3. Recursion with Numbers
    • Challenge 1: Find the Greatest Common Divisor
    • Challenge 2: Check for Prime Number
    • Challenge 3: Convert Decimal Number to Binary Number
  4. 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?
  5. Recursion with Arrays
    • Challenge 1: Find if the Array is a Palindrome
    • Challenge 2: Sort an Array
  6. Recursion with Data Structures
    • Challenge 1: Search for a Value in a Linked List

4. Big-O Notation For Coding Interviews and Beyond

  1. Basics
    • Problem Set 1
  2. Formal Analysis Tools
    • Problem Set 2
  3. Recursive
    • Problem Set 3
  4. Data-Structures
    • Problem Set 4
  5. Amortized Analysis
    • Problem Set 5
  6. Probabilistic Analysis
    • Problem Set 6
  7. Complexity Theory

5. Grokking the Object Oriented Design Interview

  1. Object-Oriented Design and UML
  2. Object Oriented Design Case Studies
    1. Design a Library Management System
    2. Design a Parking Lot
    3. Design Amazon - Online Shopping System
    4. Design Stack Overflow
    5. Design a Movie Ticket Booking System
    6. Design an ATM
    7. Design an Airline Management System
    8. Design Blackjack and a Deck of Cards
    9. Design a Hotel Management System
    10. Design a Restaurant Management system
    11. Design Chess
    12. Design an Online Stock Brokerage System
    13. Design a Car Rental System
    14. Design LinkedIn
    15. Design Cricinfo
    16. Design Facebook - a social network

6. Grokking the System Design Interview

  1. System Design Problems
    1. Designing a URL Shortening service like TinyURL
    2. Designing Pastebin
    3. Designing Instagram
    4. Designing Dropbox
    5. Designing Facebook Messenger
    6. Designing Twitter
    7. Designing Youtube or Netflix
    8. Designing Typeahead Suggestion
    9. Designing an API Rate Limiter
    10. Designing Twitter Search
    11. Designing a Web Crawler
    12. Designing Facebook’s Newsfeed
    13. Designing Yelp or Nearby Friends
    14. Designing Uber backend
    15. Design Ticketmaster
  2. Glossary of System Design Basics

7. Grokking Dynamic Programming Patterns for Coding Interviews

  1. Pattern 1: 0/1 Knapsack
  2. Pattern 2: Unbounded Knapsack
  3. Pattern 3: Fibonacci Numbers
  4. Pattern 4: Palindromic Subsequence
  5. Pattern 5: Longest Common Substring

8. Java Multithreading for Sr Engg. Interviews

  1. The Basics
  2. Multithreading in Java
  3. Java Memory Model
  4. Interview Practice Problems
    1. Blocking Queue Bounded Buffer Consumer Producer
    2. Rate Limiting Using Token Bucket Filter
    3. Thread Safe Deferred Callback
    4. Implementing Semaphore
    5. ReadWrite Lock
    6. Unisex Bathroom Problem
    7. Implementing a Barrier
    8. Uber Ride Problem
    9. Dining Philosophers
    10. Barber Shop
    11. Superman Problem
    12. Multithreaded Merge Sort
    13. Asynchronous to Synchronous Problem
  5. Java Thread Basics