Знакомы ли с фичами Java выше 11 версии
Что проверяют
Следите ли вы за языком и пишете ли на современной Java, а не на «Java 8 с var». Список фич наизусть не нужен, важно показать, что вы ими пользуетесь. Следом обычно спрашивают про виртуальные потоки или просят переписать кусок кода через record и pattern matching.
Как отвечать
Сгруппируйте по LTS-версиям, после 11 это 17, 21 и 25:
- до 17: switch-выражения со стрелками и
yield(финал в 14), текстовые блоки (15), pattern matching дляinstanceof(16), records (16), sealed-классы и интерфейсы (17), подробные сообщенияNullPointerExceptionс указанием, что именно оказалосьnull; - 21: виртуальные потоки, pattern matching в
switchи record patterns, что вместе с sealed-иерархиями даёт проверку полнотыswitchкомпилятором; Sequenced Collections сgetFirst()иreversed(); поколенческий режим ZGC; - с 22 по 25: безымянные переменные
_, Foreign Function & Memory API вместо JNI, Stream Gatherers,synchronizedбольше не закрепляет виртуальный поток за несущим, Scoped Values, компактные исходные файлы сvoid main()без объявления класса, код в конструкторе до вызоваsuper(...).
Дальше привяжите к практике: records для DTO и ключей, sealed-интерфейс с records вместо цепочки instanceof, виртуальные потоки в Spring Boot 3.2+ через spring.threads.virtual.enabled=true. Упомяните, что Spring Boot 3 требует минимум Java 17, поэтому многие проекты переехали на неё вместе с обновлением Spring.
Если на работе застряли на 11, так и скажите и покажите, что щупали новые версии сами: перевели пет-проект, экспериментировали с виртуальными потоками.
Где спотыкаются
Путают preview и финальные версии: sealed-классы вышли превью в 15, а стабильными стали в 17. Превью-возможности без флага --enable-preview не компилируются.
Называют «переход на LTS» фичей Java 17. LTS это статус поддержки у вендоров, а не возможность языка.
Считают, что виртуальные потоки ускоряют любой код. Они помогают при большом числе блокирующих операций ввода-вывода, а задачам, упирающимся в CPU, ничего не дают.