uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

Библиотека собеса по Java | вопросы с собеседований

Библиотека собеса по Java | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по Java и ответы на них. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot

Ko'proq ko'rsatish
6 378
Obunachilar
-624 soatlar
-197 kun
-5130 kun
Postlar arxiv
❓ Что такое Spring Bean Scope? Spring Bean Scope определяет жизненный цикл и видимость бина в контейнере. Основные виды: ▪️ singleton (по умолчанию) — один экземпляр на весь контейнер. ▪️ prototype — новый экземпляр при каждом запросе. ▪️ request — бин живёт в рамках HTTP-запроса. ▪️ session — бин живёт в рамках HTTP-сессии. ▪️ application — бин живёт в рамках веб-приложения. ▪️ websocket — бин на время WebSocket-сессии. 🐸 Библиотека собеса по Java #spring

❓ Чем @Bean отличается от @Component в Spring? ▪️ @Component вешается над классом — Spring сам создаёт его экземпляр через сканирование пакетов (@ComponentScan). ▪️ @Bean ставится над методом в @Configuration — вы сами создаёте объект внутри метода и возвращаете его. @Bean полезен, когда: — класс не ваш (нет доступа, чтобы добавить аннотацию) — нужен кастомный способ создания бина (например, с параметрами конструктора или фабричным методом) Оба способа регистрируют бин в ApplicationContext, разница только в том, кто и как создаёт объект. 🐸 Библиотека собеса по Java #spring

❓ Что такое Transactional Outbox? Это паттерн надёжной доставки событий в распределённых системах. Проблема: при сохранении данных в БД и отправке события в Kafka/RabbitMQ — эти две операции не атомарны. Возможны ситуации, когда данные сохранятся, но событие не уйдёт, либо наоборот. Решение: вместо прямой отправки в брокер — пишем событие в отдельную таблицу outbox в рамках одной транзакции с основными данными. Отдельный процесс читает эту таблицу и публикует события в брокер. 🔹 Ключевые свойства — Гарантия at-least-once доставки. — Атомарность через одну транзакцию БД. — Потребитель должен быть идемпотентен. 🐸 Библиотека собеса по Java #patterns

❓ Что такое сервлет? Сервлет — это Java-класс, который обрабатывает HTTP-запросы и формирует HTTP-ответы в веб-приложениях. Он работает на стороне сервера в контейнере сервлетов (например, Tomcat), реализуя интерфейс javax.servlet.Servlet (чаще — через абстрактный класс HttpServlet). Основная задача сервлета — выступать в роли контроллера в архитектуре MVC: принимать запросы от клиента, обрабатывать данные (либо делегировать бизнес-логике), и передавать результат обратно клиенту (обычно через HTML или JSON). 🐸 Библиотека собеса по Java #core

💬 Обратная связь Проверяем динамику роста комьюнити :) Ваш текущий грейд: 🔥 — Senior 👍🏼 — Middle ❤️ — Junior 😁 — Ещё учусь 🐸 Библиотека собеса по Java

Последний шанс: 3 курса по цене 1 и запуск AI-агентов в продакшн На собеседованиях в энтерпрайз всё чаще всплывают вопросы про интеграцию Java-приложений с ИИ. Как маршрутизировать мультиагентные системы, контролировать затраты и строго соблюдать 152-ФЗ? Обновлённая программа делает упор на жёсткий инжиниринг и вывод в прод. Вы научитесь строить ReAct-циклы, работать с LangGraph и AutoGen, внедрять продвинутый RAG, протоколы MCP и AgentOps. Все ключевые навыки в одном месте: измеримость систем, time-travel дебаггинг, управление браузером, human-in-the-loop и развёртывание в закрытых контурах. Почему нельзя откладывать: — масштабная акция «3 курса по цене 1» сгорает уже сегодня; — промокод Agent на скидку 10 000 рублей действует последние часы; — сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас. Забронировать место на курсе и забрать бонусы до конца дня

✔️ 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

❓ В чем разница между параллелизмом и многопоточностью? Многопоточность — это способность программы выполнять несколько потоков , где каждый поток может выполняться независимо, но не обязательно одновременно. Потоки могут переключаться между собой, создавая иллюзию одновременности, однако они могут работать на одном ядре процессора. Параллелизм, с другой стороны, — это выполнение нескольких задач одновременно, обычно на разных процессорах или ядрах. В контексте параллелизма, задачи действительно выполняются одновременно. 🐸 Библиотека собеса по Java #concurrency

За год мы провели три потока курса по ИИ-агентам, а теперь запускаем масштабное обновление! В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Ответить на каверзные вопросы по JVM и многопоточности на собеседовании легко, а вот интегрировать ИИ-агента в Enterprise-контур без галлюцинаций — задача со звёздочкой. В программе: — практика с первого занятия: Jupyter-ноутбуки с автопроверкой; — оркестрация в LangGraph: human-in-the-loop и механизм time-travel; — продвинутый RAG для продакшена и парсинг сложных документов; — контроль экономики агентов: маршрутизация и кеширование запросов; — развёртывание локальных опенсорс-моделей с соблюдением 152-ФЗ. В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок). Доступ к материалам для предварительной подготовки откроется сразу после оплаты. По промокоду Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля! 👉 Присоединиться к четвёртому потоку и внедрить агентов в Enterprise

❓ Что такое Thread Pool? Thread Pool (пул потоков) — это коллекция предварительно созданных потоков, которые могут быть использованы для выполнения задач. Основная цель — минимизация накладных расходов на создание и уничтожение потоков. Вместо того чтобы создавать новый поток для каждой задачи, задачи передаются уже существующим потокам в пуле. Это улучшает производительность и позволяет более эффективно управлять ресурсами, особенно при высокой нагрузке. 🐸 Библиотека собеса по Java #concurrency

❓ В чём разница между throw и throws? → throws: указывается в сигнатуре метода, чтобы сообщить, какие исключения метод может выбросить. Например, если метод может генерировать FileNotFoundException, это указывается так:
public void readFile() throws FileNotFoundException { ... }
Здесь throws не выбрасывает исключение, а только предупреждает, что оно может возникнуть. → throw: используется непосредственно в теле метода, чтобы выбросить конкретное исключение. Пример:
if (file == null) {
    throw new FileNotFoundException("Файл не найден");
}
Здесь throw запускает исключение, когда возникает определённое условие. #core

Офер за 2 дня в Яндекс через Weekend Offer Multitrack Это формат быстрого найма для бэкенд-разработчиков с опытом работы от 5 лет на C++, Python, Java/Kotlin или Go. Приглашаем тех, кто умеет принимать архитектурные решения, проектировать сервисы и хорошо понимает многопоточность и низкоуровневые механизмы. Все этапы отбора проходят в течение двух дней: 🟢 14 марта — технические секции. 🟢 15 марта — финальная секция и офер. Далее в рамках программы Multitrack участники выбирают три команды Яндекса, в которых последовательно работают по несколько недель, знакомясь с задачами, внутренними процессами и коллегами. После этого можно выбрать команду, которая понравится больше. Этот подход позволяет сравнить разные проекты внутри Яндекса, оценить задачи изнутри и принять взвешенное решение. Регистрация на участие в программе открыта до 6 марта. Подробности — по ссылке. Реклама. ООО "Яндекс". ИНН 7736207543

❓ Что такое Garbage Collection Roots? GC Roots — это отправные точки для поиска живых объектов сборщиком мусора. К GC Roots относятся: — локальные переменные в стеке активных методов — статические переменные — активные потоки — JNI ссылки GC начинает с roots и проходит граф объектов. Всё, что недостижимо из roots — мусор, подлежит удалению. 🐸 Библиотека собеса по Java #jvm

❓ Что такое Singleton и где он используется? Singleton гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.
public class DatabaseConnection {
    private static volatile DatabaseConnection instance;

    private DatabaseConnection() {}

    public static DatabaseConnection getInstance() {
        if (instance == null) {
            synchronized (DatabaseConnection.class) {
                if (instance == null) {
                    instance = new DatabaseConnection();
                }
            }
        }
        return instance;
    }
}
Реальные кейсы — Пул соединений с БД (HikariCP держит один менеджер пула) — Логгер (LoggerFactory в SLF4J) — Конфигурация приложения (Spring ApplicationContext — де-факто синглтон) — Кэш в памяти Подводные камни: проблемы с многопоточностью (решается через volatile + double-checked locking или enum), сложность тестирования, скрытые зависимости. 🐸 Библиотека собеса по Java #patterns

💬 Обратная связь Текущий уровень сложности вопросов? 🔥 — Слишком просто, хочу сложнее 👍🏼 — В самый раз ❤️ — Иногда сложновато 😁 — Часто не понимаю 🐸 Библиотека собеса по Java

✔️ SQL-тест: Топ категорий Google Search Задача из реального интервью в Google 👇 📦 Задание Google хочет проанализировать са
✔️ SQL-тест: Топ категорий Google Search Задача из реального интервью в Google 👇 📦 Задание Google хочет проанализировать самые популярные категории поиска для оптимизации результатов. Таблицы на картинке. Напишите запрос для подсчета общего количества поисков в каждой категории по месяцам за 2024 год. Ставьте → 🔥, если нравится формат. Если нет → 🤔 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise

❓ Какие есть методы в классе Object? Класс Object — это базовый класс для всех классов в Java. Он содержит следующие методы: 🔹 public final Class<?> getClass() – возвращает объект Class для текущего объекта. 🔹 public int hashCode() – возвращает хэш-код объекта. 🔹 public boolean equals(Object obj) – сравнивает объекты на равенство. 🔹 protected Object clone() – создает копию объекта (глубокое/поверхностное копирование зависит от реализации). 🔹 public String toString() – строковое представление объекта. 🔹 public final void notify() – пробуждает один поток, ожидающий монитор объекта. 🔹 public final void notifyAll() – пробуждает все потоки, ожидающие монитор объекта. 🔹 public final void wait() – заставляет поток ждать, пока его не разбудят через notify/notifyAll. 🔹 public final void wait(long timeout) – ждет указанное время или до уведомления. 🔹 public final void wait(long timeout, int nanos) – более точная версия ожидания. 🔹 protected void finalize() – вызывается перед удалением объекта сборщиком мусора (deprecated с Java 9). 🐸 Библиотека собеса по Java #core

❓ Как устроена архитектура брокеров в Kafka? Брокер — это отдельный сервер Kafka. Он принимает сообщения от продюсеров, хранит их на диске и отдаёт консьюмерам. В кластере может быть несколько брокеров. Они работают совместно и знают друг о друге. Топик — это именованный канал, куда продюсеры пишут сообщения, а консьюмеры их читают. Топик делится на партиции. Партиция — это упорядоченный, неизменяемый лог. Партиции распределяются по брокерам. Репликация: у каждой партиции есть один Leader и несколько Follower-реплик. Все записи и чтения идут через Leader, Follower-ы синхронно подтягивают данные. Если Leader падает — один из Follower-ов становится новым Leader-ом. ISR (In-Sync Replicas) — список реплик, которые не отстали от Leader-а. Запись считается подтверждённой только когда все реплики из ISR её получили (если acks=all). Координация: раньше это делал ZooKeeper — хранил метаданные о брокерах, партициях, лидерах. Начиная с Kafka 3.x активно внедряется KRaft. 🐸 Библиотека собеса по Java #core

❓ Как устроена архитектура брокеров в Kafka? Брокер — это отдельный сервер Kafka. Он принимает сообщения от продюсеров, хранит их на диске и отдаёт консьюмерам. В кластере может быть несколько брокеров. Они работают совместно и знают друг о друге. Топик — это именованный канал, куда продюсеры пишут сообщения, а консьюмеры их читают. Топик делится на партиции. Партиция — это упорядоченный, неизменяемый лог. Партиции распределяются по брокерам. Репликация: у каждой партиции есть один Leader и несколько Follower-реплик. Все записи и чтения идут через Leader, Follower-ы синхронно подтягивают данные. Если Leader падает — один из Follower-ов становится новым Leader-ом. ISR (In-Sync Replicas) — список реплик, которые не отстали от Leader-а. Запись считается подтверждённой только когда все реплики из ISR её получили (если acks=all). Координация: раньше это делал ZooKeeper — хранил метаданные о брокерах, партициях, лидерах. Начиная с Kafka 3.x активно внедряется KRaft. 🐸 Библиотека собеса по Java #core