Problem Statement
Given a scenario where you need to design a plugin architecture allowing many modules, some sharing common behaviour and others not, how would you use abstract classes and interfaces?
Explanation
In a plugin architecture you may define an interface `PluginModule` with methods like `initialize()` and `execute()`. This sets the contract for all modules. If some modules share common initialization code or data fields, you could provide an abstract class `BasePlugin` which implements `PluginModule` and offers default implementation of common logic. Then each concrete plugin class extends `BasePlugin`. This setup uses the interface for flexibility and abstract class for code reuse. Such hybrid designs are often expected in senior-level interviews.