Библиотека собеса по Java | вопросы с собеседований
6.36K subscribers
354 photos
4 videos
189 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Как работает @Transactional и какие подводные камни?

@Transactional говорит Spring обернуть метод в транзакцию. Если всё прошло — делается commit, иначе rollback.

🔹 Особенности:

— Работает только при вызове метода извне, т.к. Spring создаёт прокси.
— Не откатывает по checked exceptions по умолчанию.
— Не работает на private и final методах.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между методами submit() и execute() в ExecutorService?

И submit(), и execute() используются для запуска задач в пуле потоков, но между ними есть важные отличия:

— execute(Runnable) запускает переданную задачу асинхронно, но не возвращает никакого результата. Если во время выполнения возникнет исключение, оно не передаётся явно обратно.

— submit(Runnable/Callable) также запускает задачу асинхронно, но возвращает объект типа Future. С помощью этого объекта можно получить результат задачи (future.get()), проверить статус её выполнения (future.isDone()), явно обработать исключение, если оно произошло во время выполнения задачи.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли переопределить статический метод?

Статические методы нельзя переопределить, они подвергаются скрытию (hiding). Если в подклассе объявлен статический метод с той же сигнатурой, что и в суперклассе, то метод из суперкласса не переопределяется, а скрывается.

Вызов скрытого метода зависит от типа ссылки, а не от типа реального объекта (полиморфизм не работает со статическими методами).

Это может привести к неожиданному поведению, так как разработчик может ошибочно рассчитывать на переопределение метода, а на самом деле будет вызван метод из класса ссылки, а не объекта.

⚠️ В целом, скрытие статических методов считается плохой практикой из-за того, что это усложняет понимание кода и может вызвать путаницу.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Обратная связь

Ваше мнение по контенту:

🔥 — Всё супер
👍🏼 — Нормально
😁 — Есть предложения по улучшению (в комменты)

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое лямбда?

Лямбда — это краткая форма записи анонимного класса с одним методом. Позволяет писать компактный и читаемый код, особенно при работе с коллекциями и потоками.

Лямбда выражения появились в Java 8 и работают только с функциональными интерфейсами (интерфейсы с одним абстрактным методом).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Java Memory Model (JMM)?

Java Memory Model (JMM) — это набор правил и спецификаций, описывающих, как потоки в Java взаимодействуют друг с другом через общую память. JMM определяет, когда изменения, сделанные одним потоком, становятся видимыми другим потокам, и как обеспечить предсказуемость поведения многопоточных программ.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое функциональные интерфейсы?

Функциональный интерфейс — это интерфейс с единственным абстрактным методом. Он используется как целевой тип для лямбда-выражений и ссылок на методы. Обозначается аннотацией @FunctionalInterface, но это не обязательно — главное, чтобы был один абстрактный метод. Примеры: Runnable, Callable, Comparator, Function<T, R>.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM