Библиотека собеса по Java | вопросы с собеседований
6.44K subscribers
406 photos
9 videos
547 links
Вопросы с собеседований по Java и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое Garbage Collection Roots?

GC Roots — это отправные точки для поиска живых объектов сборщиком мусора.

К GC Roots относятся:

локальные переменные в стеке активных методов
статические переменные
активные потоки
JNI ссылки

GC начинает с roots и проходит граф объектов. Всё, что недостижимо из roots — мусор, подлежит удалению.

🐸 Библиотека собеса по Java

#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🔥1
В чём разница между throw и throws?

→ throws: указывается в сигнатуре метода, чтобы сообщить, какие исключения метод может выбросить. Например, если метод может генерировать FileNotFoundException, это указывается так:
public void readFile() throws FileNotFoundException { ... }


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

→ throw: используется непосредственно в теле метода, чтобы выбросить конкретное исключение. Пример:
if (file == null) {
throw new FileNotFoundException("Файл не найден");
}


Здесь throw запускает исключение, когда возникает определённое условие.

🐸 Библиотека собеса по Java

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥1
Что такое Thread Pool?

Thread Pool (пул потоков) — это коллекция предварительно созданных потоков, которые могут быть использованы для выполнения задач.

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

Это улучшает производительность и позволяет более эффективно управлять ресурсами, особенно при высокой нагрузке.

🐸 Библиотека собеса по Java

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥1
За год мы провели три потока курса по ИИ-агентам, а теперь запускаем масштабное обновление!

В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Ответить на каверзные вопросы по JVM и многопоточности на собеседовании легко, а вот интегрировать ИИ-агента в Enterprise-контур без галлюцинаций — задача со звёздочкой.

В программе:

— практика с первого занятия: Jupyter-ноутбуки с автопроверкой;
— оркестрация в LangGraph: human-in-the-loop и механизм time-travel;
— продвинутый RAG для продакшена и парсинг сложных документов;
— контроль экономики агентов: маршрутизация и кеширование запросов;
— развёртывание локальных опенсорс-моделей с соблюдением 152-ФЗ.

В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).

Доступ к материалам для предварительной подготовки откроется сразу после оплаты.

По промокоду Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!

👉 Присоединиться к четвёртому потоку и внедрить агентов в Enterprise
В чем разница между параллелизмом и многопоточностью?

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

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

🐸 Библиотека собеса по Java

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1🤔1
✔️ Java-тест: Transactional + EventListener

Ревью и рефактор логики для production-кода 👇

📦 Задание

Команда написала логику для отправки письма после регистрации пользователя. На проде иногда возникает ситуация, что письма приходят, а юзера в БД нет. Найдите проблему и исправьте:

@Service
@RequiredArgsConstructor
public class UserService {

private final UserRepository userRepository;
private final ApplicationEventPublisher eventPublisher;

@Transactional
public void register(UserDto dto) {
User user = new User(dto.email());
userRepository.save(user);

eventPublisher.publishEvent(new UserRegisteredEvent(user));
}
}

@Component
@RequiredArgsConstructor
public class EmailListener {

private final EmailSender emailSender;
private final SomeOtherService someOtherService;

@EventListener
public void onUserRegistered(UserRegisteredEvent event) {
emailSender.sendWelcome(event.user().getEmail());
someOtherService.doSomething();
}
}


🔹 Задачи

— Объяснить, при каком сценарии письмо уйдёт, а пользователь не сохранится
— Исправить код, чтобы событие обрабатывалось только после сохранения юзера

Ставьте → 🔥, если нравится формат. Если нет → 🌚

💬 Решения под спойлер. Сравним, какое будет лучше.

🐸 Библиотека собеса по Java

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍43🤔1🌚1
Последний шанс: 3 курса по цене 1 и запуск AI-агентов в продакшн

На собеседованиях в энтерпрайз всё чаще всплывают вопросы про интеграцию Java-приложений с ИИ. Как маршрутизировать мультиагентные системы, контролировать затраты и строго соблюдать 152-ФЗ?

Обновлённая программа делает упор на жёсткий инжиниринг и вывод в прод. Вы научитесь строить ReAct-циклы, работать с LangGraph и AutoGen, внедрять продвинутый RAG, протоколы MCP и AgentOps. Все ключевые навыки в одном месте: измеримость систем, time-travel дебаггинг, управление браузером, human-in-the-loop и развёртывание в закрытых контурах.

Почему нельзя откладывать:

— масштабная акция «3 курса по цене 1» сгорает уже сегодня;
— промокод Agent на скидку 10 000 рублей действует последние часы;
— сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас.

Забронировать место на курсе и забрать бонусы до конца дня
💬 Обратная связь

Проверяем динамику роста комьюнити :)
Ваш текущий грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30😁17🔥1310🌚2
Что такое сервлет?

Сервлет — это Java-класс, который обрабатывает HTTP-запросы и формирует HTTP-ответы в веб-приложениях. Он работает на стороне сервера в контейнере сервлетов (например, Tomcat), реализуя интерфейс javax.servlet.Servlet (чаще — через абстрактный класс HttpServlet).

Основная задача сервлета — выступать в роли контроллера в архитектуре MVC: принимать запросы от клиента, обрабатывать данные (либо делегировать бизнес-логике), и передавать результат обратно клиенту (обычно через HTML или JSON).

🐸 Библиотека собеса по Java

#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1👏1
Что такое Transactional Outbox?

Это паттерн надёжной доставки событий в распределённых системах.

Проблема: при сохранении данных в БД и отправке события в Kafka/RabbitMQ — эти две операции не атомарны. Возможны ситуации, когда данные сохранятся, но событие не уйдёт, либо наоборот.

Решение: вместо прямой отправки в брокер — пишем событие в отдельную таблицу outbox в рамках одной транзакции с основными данными. Отдельный процесс читает эту таблицу и публикует события в брокер.

🔹 Ключевые свойства

Гарантия at-least-once доставки.
Атомарность через одну транзакцию БД.
Потребитель должен быть идемпотентен.

🐸 Библиотека собеса по Java

#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1
Чем @Bean отличается от @Component в Spring?

▪️ @Component вешается над классомSpring сам создаёт его экземпляр через сканирование пакетов (@ComponentScan).

▪️ @Bean ставится над методом в @Configurationвы сами создаёте объект внутри метода и возвращаете его.

@Bean полезен, когда:

класс не ваш (нет доступа, чтобы добавить аннотацию)
нужен кастомный способ создания бина (например, с параметрами конструктора или фабричным методом)

Оба способа регистрируют бин в ApplicationContext, разница только в том, кто и как создаёт объект.

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1👏1