Core Concepts
What is Object-Oriented Programming (OOP)?
What are the four pillars of OOP?
What is a class and an object?
What is encapsulation? Why is it important?
What is inheritance? Explain it with an example.
What is abstraction?
Difference between abstraction and encapsulation?
Why should we write constructor of a class?
What is method overloading vs overriding?
Difference between compile-time and runtime polymorphism?
Difference between abstract class and interface?
Design & Principles
What is composition vs inheritance?
When should you prefer composition over inheritance?
What is tight coupling and loose coupling?
What is cohesion? Explain it with an example.
What is coupling and cohesion?
Difference between tight and loose coupling?
When should we NOT use inheritance?
How does OOP help in maintainability?
What mistakes do developers commonly make in OOP?
Architecture & Modeling
How would you design a payment system using OOP?
How do you handle changing requirements in OOP design?
Give a real-life example of polymorphism.
How would you design a user authentication system?
How would you model a library system using OOP?
How would you design a notification system?
Advanced Concepts
What is immutability?
What is object lifecycle?
What is delegation?
What is method chaining?
What is double dispatch?
How do you manage object lifecycle?
Trade-offs & Thinking
Is OOP always the best paradigm?
What are the limitations of OOP?
Can OOP lead to over-engineering?
Scenario-Based Challenges
Design a payment system that supports new methods without modifying existing code.
Design a notification system that can switch between Email, SMS, Push easily.
Refactor a UserManager class that does too many things.
Design a game character system with flexible attack behaviors.
Design a database-independent system (MySQL → MongoDB switch).