The four pillars
Abstraction, encapsulation, inheritance and polymorphism are the four ideas every object-oriented language is built to express. Design patterns are just these four applied under pressure, repeatedly, to specific recurring problems - Strategy is polymorphism with a name, Facade is encapsulation drawn around a whole subsystem, Template Method is inheritance with the parent in charge of the order of operations.
Each pillar gets its own page here: the definition and what actually breaks without it, worked examples in at least two unrelated domains, the language mechanics an interview expects you to know cold, the mistake almost everyone makes with it once, and where it resurfaces in the patterns catalogue.
One real thing, several honest partial models. Keep the details your context needs and drop the rest.
A small public surface you promise to keep stable, and private internals you reserve the right to rewrite on a Tuesday.
A subclass gets the parent members for free and adds only what differs. The bill: it inherits the whole interface, useful parts and all.
Address the abstraction and let the runtime pick the implementation. Your code says Animal, the object knows it is a Cat.