Interview Practice

Learn, explain, practice

Technical interview prep

Start from first principles and build toward senior-level reasoning: 25 theory chapters and 100 interview questions across five tracks.

Course contents

25-session study schedule

Plan 60–90 minutes per session: 25–35 minutes reading, 15–20 minutes tracing or writing the example, 10–15 minutes attempting the exercise, then 10–20 minutes answering three or four questions from that track. Repeat a session when you cannot explain it independently. Absolute beginners can split each session across two days; the schedule is a suggestion, not a completion guarantee.

Before session 1, learn Java variables, conditionals, loops and method syntax. Java chapters 1–2 can also be read first if the examples are unfamiliar. After each five-session track, attempt its remaining questions and revisit mistakes.

  1. Session 1 · Data structuresArrays, lists, stacks and queues
  2. Session 2 · Data structuresHashing, equality and stable keys
  3. Session 3 · Data structuresTrees, heaps and prefix indexes
  4. Session 4 · Data structuresGraphs, connectivity and composite structures
  5. Session 5 · Data structuresIntervals, bit sets and range-query structures
  6. Session 6 · Algorithms & Big OBig O from first principles
  7. Session 7 · Algorithms & Big OBinary search, two pointers and sliding windows
  8. Session 8 · Algorithms & Big OGraph traversal, dependency ordering and shortest paths
  9. Session 9 · Algorithms & Big ODynamic programming, greedy proofs and backtracking
  10. Session 10 · Algorithms & Big OString matching, hashing and bit manipulation
  11. Session 11 · JavaJava values, references and object contracts
  12. Session 12 · JavaCollections, generics and stream pipelines
  13. Session 13 · JavaVisibility, atomicity and concurrent work
  14. Session 14 · JavaJVM memory, resources and diagnosis
  15. Session 15 · JavaRecords, sealed types and pattern matching
  16. Session 16 · Spring BootSpring container, injection and auto-configuration
  17. Session 17 · Spring BootHTTP boundaries, validation and security
  18. Session 18 · Spring BootTransactions, JPA queries and concurrent updates
  19. Session 19 · Spring BootTesting, resilience and production operation
  20. Session 20 · Spring BootEvents, messaging and idempotent consumers
  21. Session 21 · Object-oriented designObjects, contracts and invariants
  22. Session 22 · Object-oriented designComposition, SOLID and patterns with purpose
  23. Session 23 · Object-oriented designDesigning caches, schedulers and rate limiters
  24. Session 24 · Object-oriented designA complete design round: booking and payment
  25. Session 25 · Object-oriented designDesigning for change: a notification service

Big O quick reference

Define n, separate time from space, and name worst-case, expected or amortized assumptions. Output storage and recursion count too. Database and network latency require an additional cost model.

Complexity growth and assumptions
GrowthExampleMeaning
O(1)Direct array indexDoes not grow with element count; not a latency guarantee.
O(log n)Binary searchRepeatedly halves a sorted random-access candidate region.
O(n)Complete scanEach input item is examined a bounded number of times.
O(n log n)Merge sortLogarithmic levels with linear work per level.
O(n²)Every unordered pairn(n−1)/2 comparisons still grows quadratically.
O(n · 2^n)Materialize all subsetsCounts the elements copied into the exponential output.
O(V + E)Graph traversalAssumes adjacency lists; a matrix scan is O(V²).
Read the full complexity chapter

Examples use Java 21-era language and Spring Boot 3.5 concepts unless noted. JDK 24 virtual-thread changes and Boot release differences are called out explicitly. These are authored study materials, not claims of recently asked company questions. Each track links its reference documentation.