Что такое принцип KISS
Что проверяют
Вопрос лёгкий на словах, поэтому оценивают не определение, а инженерную зрелость. В Java усложнить проще всего: фабрика фабрик, пять уровней абстракции, конфигурация через рефлексию там, где хватило бы одного класса. Интервьюер смотрит, есть ли у вас критерий простоты, кроме ощущения.
Как отвечать
KISS означает: из работающих решений выбирай то, которое дешевле понять читателю, а не то, которое выглядит солиднее. Слово «проще» полезно перевести в измеримое: меньше состояний, меньше точек ветвления, меньше того, что надо держать в голове одновременно.
Дальше стоит назвать конкретные проявления в Java:
public Optional<User> find(String email) {
return repo.findByEmail(email);
}Именно так, а не цепочкой из Strategy, Factory и AbstractHandler, когда реализация ровно одна. Что обычно упрощается по делу: заменить наследование композицией, не заводить интерфейс с единственной реализацией, вместо самописного кеша взять готовый, вместо рефлексии написать явный код, вместо стрима на каждый чих оставить цикл, если он читается лучше.
Сильный ответ добавляет вторую сторону: KISS не про «поменьше кода». Скопировать логику в пять мест короче, но не проще.
Где спотыкаются
Путают KISS с принципом единой ответственности и рассказывают про разбиение класса на много мелких. Десять классов вместо одного не всегда проще: связей между ними стало больше, чем было строк.
Объявляют простоту абсолютной ценностью и упираются в требования. Шифрование, идемпотентность повторной доставки, блокировки в конкурентном коде выглядят сложно, потому что сложна сама задача.
Не могут привести случай, когда упростили что-то сами. Сильный пример звучит так: убрал слой, который ничего не делал, кроме проброса вызовов, и код стал короче на целый пакет.