Библиотека собеса по Java | вопросы с собеседований
Открыть в Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot
Больше6 486
Подписчики
+524 часа
+147 дней
+1430 день
Архив постов
❓ DispatcherServlet в Spring Framework?
DispatcherServlet — это центральный компонент Spring MVC, который выступает в роли Front Controller.
Он принимает все входящие HTTP-запросы, перенаправляет их нужным контроллерам и формирует HTTP-ответ.
🔹 При получении запроса он:
— Определяет нужный Handler (контроллер) через HandlerMapping.
— Передаёт выполнение HandlerAdapter, который вызывает метод контроллера.
— Обрабатывает результат с помощью ViewResolver, чтобы вернуть клиенту нужное представление (например, HTML или JSON).
🐸 Библиотека собеса по Java
#spring
❓ Что такое transaction propagation в Spring и какие виды существуют?
Propagation (передача транзакции) — политика того, как метод с аннотацией @Transactional будет взаимодействовать с существующей транзакцией.
Виды:
▪️ REQUIRED (по умолчанию): использует существующую транзакцию или создаёт новую, если её нет
▪️ REQUIRES_NEW: всегда создаёт новую транзакцию, при этом приостанавливая текущую
▪️ SUPPORTS: действует в рамках текущей транзакции, если есть, иначе без транзакции
▪️ MANDATORY: бросает исключение, если нет текущей транзакции
▪️ NEVER: запрещает наличие транзакции, если уже есть, бросает исключение
▪️ NESTED: создаёт «вложенную» транзакцию (savepoint внутри основной)
🐸 Библиотека собеса по Java
#spring
✔️ Java-тест: Docker edition
Продолжаем тестить новый формат. Представим задачу 👇
У вас есть Spring Boot-приложение. Нужно собрать Docker-образ, который:
1. Основан на официальном JDK 21 2. Поддерживает порт 8080 3. Настраивает часовой пояс контейнера на Москву (Europe/Moscow)📦 Задание: Составьте Dockerfile, который корректно запускает приложение в контейнере по условиям выше. Ставьте →🔥, если зашёл формат. Если нет, то → 🤔 💬 Скидывайте Dockerfile в комментарии, главное прячьте под спойлер. 🐸 Библиотека собеса по Java #practise
Твой шанс прокачаться в ИТ, заявить о себе на всю страну и побороться за призовой фонд 10 250 000 рублей 💰 Успей зарегистрироваться до 20 октября.
МТС приглашает на True Tech Champ — всероссийский чемпионат по программированию. Выбирай трек по душе или участвуй сразу в двух, чтобы увеличить шансы на победу.
Трек 1. Алгоритмический. Индивидуальный зачет
Работай со структурами данных, решай алгоритмические задачи и сражайся в лайв-кодинге с сильнейшими.
Трек 2. Программирование роботов. Командный формат
Сначала проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы.
🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка.
Тебя ждет:
— Зрелищный шоу-финал с искусственным интеллектом, цифровыми аватарами и другими технологиями.
— Конференция с лидерами индустрии, кодерские челленджи и возможность прокачать ИТ-навыки.
— Шанс лично пообщаться с HR-специалистами МТС и получить карьерный буст.
📍Шоу-финал пройдет 21 ноября в МТС Live Холл.
⏰ Успей зарегистрироваться до 20 октября
❓ Что такое идемпотентность в REST API и как её реализовать?
Идемпотентность означает, что повторный вызов одного и того же запроса не изменяет состояние сервера более одного раза.
Способы реализации:
— Использовать контроль состояния (если запись уже существует, не создавать её второй раз).
— Использовать HTTP методы по стандарту: GET, PUT, DELETE. Уже идемпотентны по спецификации.
— Использовать уникальный ключ (идемпотентный токен) с клиентской стороны; сервер хранит, что уже получал этот токен, и при повторе не выполняет операцию заново.
— В Spring → фильтры или interceptors проверяют заголовок Idempotency-Key и используют хранилище (БД, кеш) для управления повторными запросами.
🐸 Библиотека собеса по Java
#spring
⏳ Время прокачать алгоритмы с 40-процентной скидкой до конца октября
На собеседовании не просят бездумно написать шаблонное решение. Важно понимать, как работают алгоритмы под капотом.
🔹 В курсе ты научишься:
— искать ошибки с помощью редакционного расстояния;
— работать с балансированными деревьями и графами;
— решать задачи с динамическим программированием;
— и многое другое, что пригодится на собеседованиях.
🤔 Решаешь задачи только в тг каналах? Пройди курс и отправляйся на реальные собеседования!
🔗 Подробнее о курсе
❓ Как в Spring работает proxy-based AOP, и какие ограничения у такого подхода?
Spring AOP обычно работает через создание прокси-объекта (JDK dynamic proxy или CGLIB). Методы вызываются на прокси, который вокруг них вставляет advice (before, after и т.д.).
Ограничения:
— Только публичные методы интерфейсов (для JDK proxy) или методы класса (для CGLIB).
— Внутренние вызовы (this.method()) не проходят через прокси, advice не сработает.
— Прокси не могут перехватывать конструкторы.
— Работа с final классами/методами ограничена (не могут быть проксированы).
🐸 Библиотека собеса по Java
#spring
❓ Что такое soft reference, weak reference, phantom reference?
Это разные виды ссылок на объекты из java.lang.ref:
🔹 SoftReference — объекты могут быть удалены GC при нехватке памяти, но склонны дожидаться недостатка памяти. Часто используют для кешей.
🔹 WeakReference — объекты удаляются при следующей сборке, если нет сильных ссылок. Используется, например, для слабых ссылок в картах (WeakHashMap).
🔹 PhantomReference — всегда считается недостижимым, даже если есть phantom-ссылка. Используется, чтобы узнать, что объект уже завершил финализацию, и подготовиться к освобождению ресурсов.
🐸 Библиотека собеса по Java
#jvm
❓ Объясните happens-before отношение в Java Memory Model?
happens-before — это гарантированный порядок между операциями, который определяет, что эффект одной операции виден другой. Если операция A happens-before операции B, то все изменения, сделанные в A, будут видны к моменту B.
Примеры гарантий happens-before: запись в volatile поле и последующее чтение того же поля; блокировки synchronized; Thread.start() и Thread.join().
Без гарантии happens-before два потока могут видеть неверные или устаревшие значения: один поток записал в поле, другой не увидит это изменение.
🐸 Библиотека собеса по Java
#concurrency
❓ Что такое escape analysis в JVM, и как она может повлиять на производительность?
Escape analysis — это оптимизация, применяемая JIT-компилятором, цель которой — выяснить, «убегает» ли объект за пределы метода или потока. Если анализ показывает, что объект используется только внутри метода (не передается наружу), JVM может:
— аллоцировать его на стеке вместо кучи (stack allocation)
— убрать синхронизацию (lock elision)
— оптимизировать сборку мусора
Таким образом уменьшается нагрузка на GC и накладные расходы на синхронизацию.
🐸 Библиотека собеса по Java
#jvm
✔️ Java-тест: Stream API и группировка
Попробуем новый формат, сами задачки будут разные. Представим задачу 👇
Есть список строк:
List<String> names = List.of("Alice", "Bob", "Anna", "Brian", "Alex");
📋 Задание:
Сгруппируйте имена по первой букве и выведите результат в формате:
A -> [Alice, Anna, Alex] B -> [Bob, Brian]Ставьте →🔥, если зашёл формат. Если нет, то → 🤔 💬 Пишите решение в комментариях, главное прячьте под спойлер. 🐸 Библиотека собеса по Java #practise
❓ Как работает ConcurrentHashMap?
ConcurrentHashMap использует сегментирование / распространённые блокировки (в новых версиях — на уровне бакета), что позволяет нескольким потокам читать и писать без полной блокировки карты. Операции get делаются без блокировки, put и remove используют ограниченную блокировку (или CAS) лишь на отдельных сегментах или узлах.
В отличие от Collections.synchronizedMap(...), который блокирует весь объект на каждую операцию, ConcurrentHashMap даёт более высокую конкурентность и масштабируемость.
🐸 Библиотека собеса по Java
#concurrency
❓Для чего используется ключевое слово this?
this — это ссылка на текущий объект внутри его метода или конструктора. Оно нужно для:
— Разрешения конфликта имён (например, между полем класса и параметром метода).
— Вызова других конструкторов этого же класса.
— Передачи текущего объекта в качестве аргумента в методы или конструкторы других классов.
— Возврата ссылки на текущий объект (часто используется в паттерне Builder или для чейнинга методов).
🐸 Библиотека собеса по Java
❓ Что такое микросервисы?
Микросервисы — это архитектурный стиль, при котором приложение делится на набор небольших, изолированных сервисов. Каждый сервис отвечает за конкретную бизнес-функцию, имеет собственную базу данных (или схему), независимый цикл разработки и может масштабироваться отдельно от других.
Они взаимодействуют между собой через лёгкие протоколы (обычно HTTP/gRPC, обмен сообщениями).
Главные плюсы — гибкость в разработке, масштабирование отдельных компонентов, независимый деплой. Минусы — усложнение инфраструктуры, необходимость в оркестрации и мониторинге, появление распределённых транзакций.
Такой подход противопоставляется монолиту, где всё приложение собрано в один блок.
🐸 Библиотека собеса по Java
#patterns
❓ Опишите работу ThreadLocal и его применения.
ThreadLocal — это механизм, который хранит значение отдельно для каждого потока. У каждого потока создаётся собственная копия переменной, изолированная от других потоков. Это удобно, когда данные должны быть доступны в рамках одного потока, но не должны шариться между потоками.
Применения:
— Хранение контекста запроса в веб-приложениях (например, userId, transactionId).
— Использование в SimpleDateFormat или других неконкурентных объектах без синхронизации.
— Реализация thread-scope зависимостей в DI-фреймворках.
🐸 Библиотека собеса по Java
#concurrency
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра
1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
❓ Что такое effective final в Java?
Effective final — это локальная переменная или параметр метода, значение которой после инициализации больше не изменяется. Ключевое слово final явно не указывается, но переменная фактически ведёт себя как final.
Компилятор Java рассматривает такие переменные как final и разрешает их использовать во вложенных классах и лямбда-выражениях. Если попытаться изменить значение такой переменной — она перестаёт быть effective final, и компилятор выдаст ошибку.
🐸 Библиотека собеса по Java
#core
❓ Что такое lazy и eager загрузка в Hibernate?
Lazy loading — данные загружаются только при первом обращении к ним (через прокси). Экономит ресурсы, но может вызвать LazyInitializationException, если сессия закрыта.
Eager loading — связанные данные загружаются сразу вместе с объектом. Удобно, если данные точно нужны, но может быть избыточно.
Выбор стратегии зависит от сценария и баланса между производительностью и простотой.
🐸 Библиотека собеса по Java
#spring
💬 Обратная связь
Как Вы и просили: добавили тестово теги по темам. Что скажете?
🔥 — Супер, удобно
😁 — Неудобно, верните как было
Если есть какие-то комментарии/мысли на этот счёт → велком в комменты.
🐸 Библиотека собеса по Java
❓ Что такое lazy и eager загрузка в Hibernate?
Lazy loading — данные загружаются только при первом обращении к ним (через прокси). Экономит ресурсы, но может вызвать LazyInitializationException, если сессия закрыта.
Eager loading — связанные данные загружаются сразу вместе с объектом. Удобно, если данные точно нужны, но может быть избыточно.
Выбор стратегии зависит от сценария и баланса между производительностью и простотой.
🐸 Библиотека собеса по Java
#spring
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
