Что такое перегрузка методов
Что проверяют
Базовую грамотность в терминах, на которых говорят разработчики. Аналитику перегрузка нужна не для того, чтобы её писать, а чтобы читать код и спецификации, понимать чужие оценки и не путать перегрузку с переопределением в описании требований.
Как отвечать
Перегрузка это несколько методов с одинаковым именем в одном типе, различающихся списком параметров: количеством, типами или порядком. Нужный вариант выбирает компилятор по фактическим аргументам, то есть на этапе компиляции. Возвращаемый тип в различение не входит: два метода, отличающиеся только им, не соберутся.
User find(long id) { ... }
User find(String email) { ... }
User find(String email, boolean onlyActive) { ... }Не путать с переопределением: там подпись совпадает, реализация наследника заменяет реализацию предка, и выбор происходит во время выполнения по фактическому типу объекта. Первое иногда называют статическим полиморфизмом, второе динамическим.
Полезно показать кругозор: в Java и C# перегрузка есть, в Python и JavaScript её нет, тот же эффект дают значения по умолчанию, переменное число аргументов и явная диспетчеризация по типу. В TypeScript перегрузки описываются сигнатурами, а реализация остаётся одна.
Практический вывод: в контрактах HTTP и в сообщениях очередей перегрузки не существует. Разные наборы полей это либо разные операции, либо одна схема с необязательными полями и правилами валидации.
Где спотыкаются
Называют перегрузкой переопределение и наоборот. Разница простая: одинаковое имя при разных параметрах решается компилятором, одинаковая подпись в наследнике решается во время выполнения.
Придумывают варианты, которые не различаются. Два метода с параметрами одного типа в одном порядке это одна подпись, и неважно, что по смыслу один аргумент это ширина, а другой высота. Компилятор смысла не видит, код просто не соберётся, и такое требование разработчик вернёт обратно.
Считают перегрузку украшением и множат варианты на все случаи. Читающему потом неочевидно, какой вариант вызовется при пустой ссылке, при автоприведении числовых типов и при необязательных параметрах. Часто честнее дать двум операциям разные говорящие имена.