Lessons
OOP: inheritance and interfaces
extends, super(), abstract classes, interfaces with default methods, and multiple interface implementation.
Prerequisite: Foundations track complete
What to look for:
- Abstract class vs interface
- @Override — always include it
- Builder pattern
- Sealed classes — Java 17/21
Collections and generics
HashMap, HashSet, LinkedHashMap, TreeMap, generics with bounds, and the Collections utility class.
Prerequisite: Lesson 1 of Practitioner
What to look for:
- HashMap vs TreeMap vs LinkedHashMap
- Generic bounds T extends Comparable
- Type erasure — no new T[] at runtime
- ? wildcard: extends vs super
Stream API and lambdas
java.util.stream, filter/map/reduce, Collectors, method references, and functional interfaces.
Prerequisite: Lesson 2 of Practitioner
What to look for:
- Streams are lazy
- Method references String::length vs lambda
- Collectors.groupingBy
- Streams do not modify the source
Exception handling in depth
Checked vs unchecked, custom exceptions, try-with-resources, multi-catch, and exception chaining.
Prerequisite: Lesson 3 of Practitioner
What to look for:
- Checked exceptions: declare or catch
- try-with-resources (AutoCloseable)
- Multi-catch syntax
- Exception chaining with cause
File I/O with NIO.2
java.nio.file.Path, Files utility class, reading/writing files, and directory traversal.
Prerequisite: Lesson 4 of Practitioner
What to look for:
- Path.of() for creating paths
- Files.readString() / writeString() — Java 11+
- Files.walk() for recursion
- Always specify StandardCharsets.UTF_8
How to use this track: Each lesson links to the Codex reference page. Use reading level tabs (Curious / Exploring / Deep Dive). Check "What to look for". Take the quiz when ready.
Track quiz
4 questions on the Practitioner track.
What is the key difference between abstract class and interface?
What happens when you put a duplicate key in a HashMap?
What is a terminal operation in the Stream API?
What is a checked exception?