Show judgement: "I introduce an interface when I have a concrete reason — multiple implementations, testability, or a published API contract. A single class with no tests and no swap need does not need an interface."
Introduce an interface when: there are or will be multiple implementations (payment gateways, notification channels), you need to mock a dependency for testing, or you want to define a contract that a consumer depends on without coupling to a specific implementation. Do not introduce an interface when: there is only one implementation and no testing benefit, or when it adds indirection without value. SOLID relevance: Interface Segregation (small, focused interfaces), Dependency Inversion (depend on abstractions), and Liskov Substitution (implementations must be interchangeable). Strong candidates discuss: the difference between interfaces and abstract classes in PHP 8, when abstract classes with shared logic are better than interfaces, and that premature abstraction is as harmful as no abstraction.
Tests design thinking. Candidates who interface everything add needless complexity. Those who never use interfaces write tightly coupled code. The best answers show restraint backed by clear reasoning about when abstraction pays for itself.