Java Interview Tasks
4.53K subscribers
213 photos
1 video
1 file
140 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
Записи докладов Spring I/O 2026 постепенно появляются на [YouTube](https://youtube.com/playlist?list=PLe6FX2SlkJdQZ3N0SW9Abo4cN7eO5dU-U&si=A4mfuEUr9MZAJtMk) — Spring Boot 4, новые интеграции, модульный дизайн, API и немного AI.

Это заставляет задуматься: как потреблять знания с конференций в 2026 году?

Раньше мы смотрели доклады ради трёх вещей:

1. Вдохновение — почти не изменилось. Чужой практический опыт по-прежнему мотивирует.
2. Расширение кругозора — теряет смысл. AI-ассистенты дают доступ к любым знаниям быстрее и в удобном формате, а поток информации давно превышает возможности восприятия.
3. Накопление знаний для работы — изменилось радикально. Раньше знания хранились в голове (и редко — в заметках с низкой доступностью). Сейчас решения принимаются с помощью AI, а персональные базы знаний стали по-настоящему оперативными.

Новый подход: вместо просмотра видео — взять описание, слайды, транскрипт и попросить AI сделать глубокое саммари с ресерчем. Оценить полезность, трансформировать в нужный формат и загрузить в персональную базу знаний.

Что думаете по этому поводу?
Изменились ли ваши подходы к потреблению информации?
Сохранится ли мотивация у докладчиков при таком подходе?

#java
#RealJavaNews
3
Что напечатает код?
Что произойдет, если вызвать orElse() для метода, который делает тяжелую операцию (например, запрос в БД), даже если значение в Optional уже есть?
Anonymous Quiz
44%
Ничего не напечатает, так как Optional не пуст.
39%
Напечатает "Вызов тяжелого метода!", и result будет "Hello".
13%
Напечатает "Вызов тяжелого метода!", и result будет "Default".
4%
Ошибка компиляции.
🔥6🥴43👍1👏1
🔍 Ответ на задачу про Optional: Почему orElse может тормозить ваш код? 🐢

Использование Optional — это стандарт де-факто в современном Java-коде. Но знаете ли вы разницу между orElse() и orElseGet()? Ошибка здесь может привести к лишним вызовам методов и даже к падению производительности.

Задача: Что произойдет, если вызвать orElse() для метода, который делает тяжелую операцию (например, запрос в БД), даже если значение в Optional уже есть?
Объяснение: orElse(T other) принимает готовый объект. Это значит, что аргумент вычисляется до вызова метода orElse. Даже если Optional не пустой, getDefaultValue() будет выполнен! orElseGet(Supplier<? extends T> other) принимает лямбду (Supplier). Она выполняется только тогда, когда Optional действительно пуст (ленивые вычисления).

Вывод: В примере выше на консоль выведется "Вызов тяжелого метода!", хотя значение "Hello" уже есть. Если бы мы использовали optional.orElseGet(() -> getDefaultValue()), лишнего вызова бы не было.

⚡️ Не перепутайте:
Используйте orElse(), если у вас уже есть готовая константа или примитив.
Используйте orElseGet(), если получение дефолтного значения требует вычислений или создания нового объекта.

Понравился разбор? Ставь ❤️, подписывайся и пиши в комментариях, какие ещё методы Optional тебя путают!

 #java #optional #performance #clean_code #backend #интервью #java_interview_tasks
11👍6🔥5👏1
Можно ли добавить элемент в список, созданный через Arrays.asList()? А через List.of()? И что будет, если изменить исходный массив?
🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
🔍 Ответ на задачу про списки: В чём подвох Arrays.asList() и List.of()? 📝
Казалось бы, оба метода создают список из элементов. Но ведут они себя совершенно по-разному, что часто приводит к UnsupportedOperationException или неожиданным изменениям данных.

Объяснение: Arrays.asList() — это "обертка" над массивом. Он возвращает список фиксированного размера. Если изменить элемент в массиве, он изменится и в списке! Добавлять/удалять элементы нельзя. List.of() (появился в Java 9) создает полностью неизменяемый (immutable) список. Он копирует данные из массива. Изменение массива на него не влияет. Добавлять/удалять элементы также нельзя. Кроме того, List.of() запрещает null.
Вывод:
list1.get(0) выведет "C" (связь с массивом сохранена).
list2.get(0) выведет "A" (данные скопированы).

⚡️ Не перепутайте:
Нужен список, который меняется вместе с массивом? Используйте Arrays.asList().
Нужна гарантия неизменяемости и безопасности? Используйте List.of().

Было полезно? Жми ❤️ и подписывайся, чтобы не пропустить новые разборы! 

#java #collections #list #arrays #immutable #backend #интервью #java_interview_tasks
10🔥3👍2
📂 Подборка каналов по AI, IT & HR Tech

Каналы для тех, кто работает в IT и хочет держать руку на пульсе без мониторинга сотни источников.

Что внутри:

AI: реальные инструменты и внедрения, без хайпа;
IT: тренды, обзоры, инсайты от первых лиц;
Карьера: как расти и не выгорать;
AI Life hacks: ИИ для удалённой работы и не только; – HR Tech: кто и как нанимает профессионалов сейчас, где и как найти сегодня работу за рубежом;


🔗 [Добавить папку]
🔥4
Что выведет этот код?
👍3
👍3
УСПЕВАЕШЬ СЛЕДИТЬ ЗА НОВИНКАМИ ?! Технологии не ждут ...

* Когда подписки устарели (outdated) -
пора сделать АПГРЕЙД своего информационного поля.

Это ПОДБОРКА ведущих Telegram-каналов — тех самых людей, которые не просто читают новости, а сами их создают.

📂 Добавляй ПАПКУ — и получи полный АПГРЕЙД своей ленты:

* Сделай свою подписку умнее, пока другие читают вчерашние новости ⚡️
Отписаться можно в любой момент. Остаться — тоже ✔️
👍3🔥1
🔍 Ответ на задачу про Stream.peek(): Почему ничего не напечаталось? 🕵️‍♂️

Метод peek() часто используют для логирования промежуточных этапов стрима. Но новички часто забывают про "ленивость" стримов.

Объяснение: Стримы в Java ленивы. Промежуточные операции (filter, map, peek) не выполняются до тех пор, пока не будет вызвана терминальная операция (collect, forEach, count и т.д.). В данном коде терминальной операции нет, поэтому конвейер даже не запустится.

Вывод: Код не выведет ничего. Чтобы peek сработал, нужно добавить, например, .collect(Collectors.toList()) в конце.
⚡️ Не перепутайте:
peek() предназначен для отладки, не используйте его для изменения состояния объектов (side-effects).

Всегда завершайте цепочку стрима терминальной операцией.

#java #streamapi #peek #lazy #backend #интервью #java_interview_tasks
🔥43
Что произойдет при попытке добавить null в качестве ключа в пустую TreeMap?
🔥3
Что произойдет при попытке добавить null в качестве ключа в пустую TreeMap?
Anonymous Quiz
42%
В мапу добавится пара {null="value"}.
8%
Ничего не произойдет, мапа останется пустой.
42%
NullPointerException.
8%
Ошибка компиляции.
🔥4
🔍 Ответ на задачу про TreeMap: Любит ли она null-ключи? 🗺

Коллекции в Java по-разному относятся к null. Если HashMap его терпит, то что скажет TreeMap?

Объяснение:
Многие считают, что TreeMap категорически запрещает null-ключи. На самом деле, TreeMap — это просто дерево, которое полагается на механизм сравнения.

Проблема не в самой TreeMap, а в компараторе. Если вы используете дефолтный компаратор (Natural Ordering), он попытается вызвать compareTo() у ключа. Вызов метода у null неизбежно приведет к NullPointerException.

Однако, если при создании TreeMap передать ей кастомный компаратор, который умеет обрабатывать null (например, Comparator.nullsFirst), то TreeMap будет прекрасно работать с null-ключами.

Вывод:
TreeMap сама по себе НЕ запрещает null-ключи. Ошибка возникает только при использовании компаратора, не поддерживающего null (что происходит по умолчанию).

⚡️ Не перепутайте:
• HashMap: разрешает один null-ключ.
• Hashtable: запрещает null-ключи и значения на уровне методов put/get.
• TreeMap: позволяет использовать null-ключи, ЕСЛИ предоставлен соответствующий компаратор.

#java #collections #treemap #null #map #интервью #java_interview_tasks
🔥31👍1👎1