Какие принципы программирования вы используете, например SOLID и KISS
Что проверяют
Умеете ли вы применять принципы осознанно, а не пересказывать расшифровку аббревиатуры. Ценится пример из своего кода и понимание, где принцип перестаёт помогать. Следом почти всегда спрашивают: «А где вы сознательно отступили от SOLID?»
Как отвечать
Коротко по каждому принципу с привязкой к Java и Spring:
- SRP: у класса одна причина меняться. Сервис заказа не формирует PDF и не шлёт письма, это отдельные компоненты;
- OCP: новое поведение добавляется новым классом, а не новой веткой
if. Типичный приём: интерфейсPaymentStrategy, реализации как бины, а в сервис внедряетсяMap<String, PaymentStrategy>; - LSP: наследник не нарушает ожиданий от базового типа. Показательный пример из JDK: списки из
List.of()бросаютUnsupportedOperationExceptionнаadd. Формально контрактListэто допускает, но код, рассчитанный на изменяемый список, ломается; - ISP: узкие интерфейсы вместо одного на двадцать методов, чтобы реализации не заглушали лишнее;
- DIP: бизнес-логика зависит от абстракций, а детали их реализуют. Spring DI это инструмент, который помогает соблюдать принцип, но не сам принцип.
KISS в Java чаще всего означает отказ от лишних слоёв: не заводить интерфейс с одной реализацией «на будущее», не строить фабрику фабрик там, где хватит конструктора. Рядом стоит упомянуть YAGNI и DRY.
Главное в ответе ваш опыт. Возьмите один-два случая: какая была проблема, какой принцип применили, что стало проще, что потребовало больше кода. Добавьте свои цифры, если они есть: время на подключение новой интеграции, число затронутых классов. Если опыт скромный, честно скажите, что осознанно применяли SRP и DIP на учебном или пет-проекте, и покажите на нём.
Где спотыкаются
Путают инверсию зависимостей с внедрением зависимостей и отвечают на DIP рассказом про @Autowired.
Возводят принципы в абсолют. Интерфейс на каждый сервис и десяток классов ради одной формулы нарушают тот самый KISS, о котором вы только что говорили.
Приводят выдуманные примеры вроде «убрал лишние проверки, и производительность выросла». Интервьюер задаст два уточнения, и история рассыплется.