Библиотека собеса по Java | вопросы с собеседований
رفتن به کانال در Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot
نمایش بیشتر6 463
مشترکین
-224 ساعت
-77 روز
-1230 روز
آرشیو پست ها
❓ Что делает аннотация @Test в JUnit5?
Аннотация @Test помечает метод как тестовый. Такой метод будет автоматически выполнен фреймворком JUnit при запуске тестов.
В JUnit 5 можно также использовать дополнительные аннотации (@BeforeEach, @AfterEach и др.) для настройки окружения, но @Test — базовый маркер, что это именно тест.
🐸 Библиотека собеса по Java
#tests
❗ Сегодня премьера
В 19:00 МСК стартует бесплатный вебинар с Максимом Шаланкиным — «ИИ-агенты: новая фаза развития искусственного интеллекта».
В программе:
— почему агенты ≠ чат-боты;
— живое демо простого агента;
— и как эта тема встроена в курс, который разработан под руководством Никиты Зелинского.
⏰ Это прямой эфир: подключиться можно через лендинг курса.
❓ В чём разница между дизайном и архитектурой ПО?
Архитектура — это высокоуровневое видение системы: какие модули есть, как они взаимодействуют, какие протоколы и технологии выбраны. Это про стратегические решения, которые трудно менять.
Дизайн — это более детальный уровень. Он описывает внутреннее устройство модулей, паттерны, классы, интерфейсы, алгоритмы. Дизайн можно адаптировать чаще, он ближе к реализации.
🐸 Библиотека собеса по Java
🔥 Не пропустите событие осени для AI-комьюнити
24 сентября, 19:00 Мск — бесплатный вебинар с Максимом Шаланкиным «ИИ-агенты: новая фаза развития искусственного интеллекта»
😤 Пока все спорят, «боты это или нет», мы покажем, как работают настоящие агенты: с планированием, инструментами и памятью. За час Максим разберёт:
— почему ИИ-агенты сейчас на пике инвестиций
— чем они отличаются от ChatGPT и обычных моделей
— цикл агента: восприятие → планирование → действие → обучение
— живое демо простого агента
— как бизнес уже получает ROI до 80%
⚡️ Хотите спросить у Максима всё, что обычно остаётся «за кадром»? Ловите шанс — только в прямом эфире.
⏰ Мест мало, регистрация закроется, как только забьём комнату
❓ Что такое starvation?
Starvation (голодание) возникает, когда поток долго не получает доступ к ресурсу, потому что планировщик постоянно выбирает другие потоки.
Например, если один поток работает с высоким приоритетом, а другой — с низким, второй может почти не выполняться. В Java это чаще всего связано с неправильным использованием синхронизации или очередей, где один поток постоянно перехватывает ресурсы. Решение — справедливые блокировки (ReentrantLock(true)), балансировка нагрузки, корректные политики планировщика.
🐸 Библиотека собеса по Java
💬 Обратная связь
Хотели бы видеть в канале теги для навигации? Если большинство будет За, попробуем в тестовом формате.
🔥 — Да, введите теги по уровню вопроса
👍🏼 — Да, введите теги по теме вопроса
❤️ — Да, предложу в комменты идею для тегов
😁 — Всё равно, особых плюсов не вижу
🐸 Библиотека собеса по Java
❓ Что такое livelock?
Livelock (живая блокировка) — ситуация, когда потоки не «зависают» в жёсткой блокировке, но бесконечно меняют своё состояние, мешая друг другу завершить работу.
Классическая аналогия: два человека встречаются в узком коридоре, оба вежливо делают шаг в сторону, но одновременно — и так продолжается бесконечно. В коде это проявляется, когда потоки постоянно реагируют на изменения друг друга, но никто не достигает цели.
🐸 Библиотека собеса по Java
⚡️ Бесплатный вебинар — ИИ-агенты: новая фаза развития AI
24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.
Тема:
«ИИ-агенты: новая фаза развития искусственного интеллекта».На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского. Подробности рассказываем в гс выше — включай, чтобы не пропустить.
❓ Что такое deadlock?
Deadlock (взаимная блокировка) возникает, когда несколько потоков удерживают разные ресурсы и при этом ждут освобождения ресурса, который заблокирован другим потоком. В итоге ни один поток не может продолжить работу.
Например: поток А захватил ресурс 1 и ждёт ресурс 2, а поток B — наоборот. JVM их не прерывает автоматически, и система может «замёрзнуть». Чтобы избегать deadlock, используют единый порядок захвата ресурсов, таймауты блокировок или более высокоуровневые примитивы (java.util.concurrent).
🐸 Библиотека собеса по Java
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.
Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».
🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.
Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏
👉 Регистрируйтесь через форму на лендинге
❓ Что такое optimistic и pessimistic locking?
Optimistic locking — подход, при котором предполагается, что конфликты редки. Обновление данных проверяется через версионное поле (например, @Version в JPA). Если два потока изменяют одну запись, тот, кто сохраняет изменения вторым, получит ошибку OptimisticLockException. Это дешево по ресурсам, но требует обработки ошибок при конфликте.
Pessimistic locking — «жесткая блокировка»: при чтении или изменении данных сразу ставится блокировка на строку или таблицу (SELECT ... FOR UPDATE). Другие транзакции ждут, пока блокировка не освободится. Это надежнее в сценариях с высокой конкуренцией, но дороже по производительности и может приводить к дедлокам.
👉 На практике выбор зависит от нагрузки: при редких конфликтах лучше optimistic, при частых — pessimistic.
🐸 Библиотека собеса по Java
❓ Что делает аннотация @Transactional в Spring?
@Transactional управляет транзакцией на уровне метода или класса. При вызове метода Spring открывает транзакцию, выполняет код, а затем:
если метод завершился успешно — транзакция коммитится
если возникло непроверяемое (runtime) исключение — транзакция откатывается
Также можно тонко настроить поведение (какие исключения приводят к rollback, изоляцию транзакции, propagation и т. д.). В итоге эта аннотация упрощает работу с транзакциями: разработчик пишет бизнес-логику, а управление транзакциями берет на себя Spring.
🐸 Библиотека собеса по Java
❓ Для чего нужны профили в Spring?
Профили используются для того, чтобы разделить конфигурацию приложения в зависимости от различных сред (например, development, testing, production). Это позволяет гибко настраивать приложение для разных условий, активируя или деактивируя определенные бины, конфигурации и зависимости в зависимости от активного профиля. Профили помогают избежать жесткой привязки к среде, упрощая тестирование и развертывание приложения.
🐸 Библиотека собеса по Java
❓ Что делает аннотация @Entity?
Аннотация используется для обозначения класса как сущности, которая будет сопоставлена с таблицей в базе данных при использовании JPA (Java Persistence API). Класс, помеченный этой аннотацией, становится частью модели данных, и каждый его экземпляр будет соответствовать строкам в базе данных. Также важно, чтобы такой класс имел конструктор без параметров и корректно определял идентификатор сущности с помощью аннотации @Id.
🐸 Библиотека собеса по Java
💬 Обратная связь
Как вы относитесь к формату постов в канале?
🔥 — Удобно, интересно
🤔 — Нейтрально
😁 — Неудобно (предложу что-то в комменты)
🐸 Библиотека собеса по Java
👀 Задача с собеса: Поиск наибольшей общей подпоследовательности (LCS) (mid+)
Найдите длину наибольшей общей подпоследовательности (LCS) двух строк: — Даны две строки A и B. — Нужно найти длину наибольшей общей подпоследовательности между ними.▪️ Условия 1. Строки могут быть длиной до 1000 символов. 2. Используйте динамическое программирование для решения. 3. Подсчитайте длину LCS. 💡 Ключевые моменты — Используйте таблицу для хранения промежуточных результатов. — Если символы в строках совпадают, то прибавляйте 1 к предыдущему значению. Если не совпадают — выбирайте максимум из предыдущих значений. — Убедитесь, что алгоритм работает с большими строками за время O(n*m), где n и m — длины строк. 💬 Возможная реализация в комментариях. Пишите свои варианты и обсудим разные подходы. 🐸 Библиотека собеса по Java
❓ Каково внутреннее строение LinkedList?
LinkedList реализован как двусвязный список. Каждый элемент хранится в отдельном объекте Node, который содержит:
— Ссылку на значение (item)
— Ссылку на предыдущий элемент (prev)
— Ссылку на следующий элемент (next)
Список хранит указатели на первый (first) и последний (last) элементы, а также размер (size). Это обеспечивает:
— Быстрые операции добавления/удаления в начало и конец списка O(1)
— Последовательный обход с помощью ссылок
— Но медленный произвольный доступ по индексу — O(n), так как приходится проходить список от начала или конца
🐸 Библиотека собеса по Java
🔥 Последняя неделя перед стартом курса по AI-агентам
Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место
На курсе:
— разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах
📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями
И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»
Промокод на 5.000₽: LASTCALL
👉 Курс здесь
❓ Для чего нужен Component Scan в Spring?
Component Scan в Spring используется для автоматического поиска и регистрации бинов в контексте приложения. Он сканирует пакеты и находит классы, аннотированные как компоненты (@Component, @Service, @Repository, @Controller и т.д.), после чего добавляет их в контекст Spring для последующего использования. Это позволяет избежать явной конфигурации бинов и упростить процесс их интеграции в приложение.
🐸 Библиотека собеса по Java
