Pillars, SOLID, composition vs inheritance, and design intent.
Encapsulation, abstraction, inheritance, polymorphism — with the distinctions interviewers actually probe.
Why "favor composition" became doctrine, where inheritance still wins, and the penguin problem.
Contract vs partial implementation — how to choose, and how default methods blurred the line.
Dynamic dispatch mechanics, compile-time vs runtime polymorphism, and the type-switch smell.
The two words behind every design principle — what they mean concretely, and how to spot violations in code review.
Why `new` is a design decision, constructor injection, and what DI frameworks actually do.