С какими версиями Java доводилось работать
Что проверяют
Следите ли вы за развитием языка и понимаете ли, что даёт переход между версиями.
Как отвечать
Назовите версии и что именно из них использовали, а не просто числа.
Опорные точки:
- 8: лямбды, потоки данных, необязательные значения, новый интерфейс работы с датами. До сих пор встречается в старых системах;
- 11, долгосрочная поддержка: вывод типа локальной переменной, встроенный клиент HTTP, система модулей из девятой версии;
- 17, долгосрочная поддержка: записи, запечатанные типы, выражение-переключатель, сопоставление образцов при проверке типа, текстовые блоки, подробное сообщение при обращении по пустой ссылке;
- 21, долгосрочная поддержка: виртуальные потоки, сопоставление образцов в переключателе, образцы для записей, коллекции с определённым порядком.
Про виртуальные потоки стоит сказать отдельно, это самое значимое изменение последних лет: блокирующий код перестаёт быть дорогим, потому что поток при ожидании не занимает поток операционной системы. Модель «поток на запрос» снова становится жизнеспособной, и необходимость в реактивном стиле ради масштабирования отпадает.
Что рассказать про миграцию, если она была, это ценнее перечня:
- удалённые и закрытые внутренние API, из-за чего падают старые библиотеки;
- переход на новое пространство имён в спецификациях, требующий обновления всего стека;
- несовместимость старых версий инструментов сборки и агентов;
- изменения в сборщике мусора и его настройках.
Если работали только на одной версии, скажите честно и назовите, что из новых возможностей знаете и почему они полезны. Это показывает интерес к языку, а попытка изобразить опыт разваливается на уточняющем вопросе.
Где спотыкаются
Перечисляют версии, не называя ни одной возможности.
Приписывают восьмой версии то, что появилось позже.
Не знают, что такое версии с долгосрочной поддержкой.
Не могут объяснить, зачем нужны виртуальные потоки.