Learning to Pass: Visuele Voorbereiding op Google-interviews

Voorbeeldopgave: Two Sum (Gemakkelijk)

Gegeven een array van gehele getallen nums en een geheel getal target, return de indices van de twee getallen die samen optellen tot target.

  • Voorwaarde: Elke invoer heeft precies één oplossing. Je mag hetzelfde element niet twee keer gebruiken.
  • Tijdscomplexiteit: O(n)
  • Ruimtecomplexiteit: O(n)

Leerpad en Onderwerpen

Het leerpad is opgebouwd als een 'skill tree', waarbij concepten in de juiste volgorde worden geleerd met in kaart gebrachte vereisten.

Datastructuren

  • Arrays & Strings (Beginner)
  • Focus: two-pointer
  • Gemiddelde tijd: O(n) | Ruimte: O(1)
  • Linked Lists (Gemakkelijk)
  • Focus: singly linked lists
  • Gemiddelde tijd: O(n) | Ruimte: O(1)
  • Stacks & Queues (Gemakkelijk)
  • Focus: LIFO (push/pop)
  • Gemiddelde tijd: O(1) | Ruimte: O(n)
  • Hash Tables (Gemakkelijk)
  • Focus: chaining
  • Gemiddelde tijd: O(1) | Ruimte: O(n)
  • Binary Trees (Gemiddeld)
  • Focus: BST (left < parent < right)
  • Gemiddelde tijd: O(log n) | Ruimte: O(h)
  • Graphs (Gevorderd)
  • Focus: directed + undirected edges
  • Gemiddelde tijd: O(V + E) | Ruimte: O(V + E)
  • Heaps / Priority Queues (Gemiddeld)
  • Focus: min-heap (bubble up)
  • Gemiddelde tijd: O(log n) | Ruimte: O(n)
  • Tries (Gevorderd)
  • Gemiddelde tijd: O(m) | Ruimte: O(n * m)

Algoritmen

  • Sorting (Gemakkelijk)
  • Focus: comparison sort (swap)
  • Gemiddelde tijd: O(n log n) | Ruimte: O(log n)
  • Binary Search (Gemakkelijk)
  • Focus: O(log n) search
  • Gemiddelde tijd: O(log n) | Ruimte: O(1)
  • Recursion & Backtracking (Gemiddeld)
  • Focus: call tree / backtracking
  • Gemiddelde tijd: O(2^n) | Ruimte: O(n)
  • Dynamic Programming (Expert)
  • Focus: bottom-up memoization
  • Gemiddelde tijd: O(n^2) | Ruimte: O(n)
  • BFS & DFS (Gemiddeld)
  • Focus: BFS/DFS traversal
  • Gemiddelde tijd: O(V + E) | Ruimte: O(V)
  • Greedy Algorithms (Gemiddeld)
  • Focus: coin change greedy (locally optimal)
  • Gemiddelde tijd: O(n log n) | Ruimte: O(1)

Concepten

  • Big-O Notation (Beginner)
  • Focus: input size (n), tijdcomplexiteit (O(n²), O(n), O(log n), O(1))
  • Gemiddelde tijd: N/A | Ruimte: N/A
  • System Design Basics (Gevorderd)
  • Focus: client - LB - servers - DB (LoadBalancer, Server, DB, Cache)
  • Gemiddelde tijd: O(1) | Ruimte: O(n)