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

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

@java_interview_lib

Вопросы с собеседований по Java и ответы на них.

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

Учиться у нас: clc.to/3wECtA

Для обратной связи: @proglibrary_feeedback_bot
Subscribers
6.44K
Photos
438
Videos
12
Links
733

Showing posts older than #1396 · Back to latest

Older Posts 20 shown
Post #1395 960
Что такое идемпотентность и почему она важна?

Идемпотентная операция при многократном выполнении даёт тот же результат, что и при однократном. В HTTP идемпотентны GET, PUT, DELETE, а POST — нет.

Почему это критично: в распределённых системах сетевые сбои и таймауты приводят к автоматическим повторам (retry). Если операция не идемпотентна — например, «снять 100 рублей» — повтор спишет деньги дважды.

Подходы к идемпотентности:

идемпотентные ключи (idempotency key) для дедупликации повторных запросов;
проектирование операций как «установить состояние X», а не «изменить на дельту»;
отслеживание уже обработанных id запросов.

Особенно важно для платежей и очередей сообщений с гарантией at-least-once.

🐸 Библиотека собеса по Java
  • 👍 6
  • ❤ 1
  • 🔥 1
  • 👏 1
Post #1394 998
🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru

Proglib.аcademy вместе с cloud․ru провели вебинар, где разобрали реальные боли проектирования автономных систем. Вы просили запись встречи — она уже в открытом доступе!

Что внутри:

— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.

👉 Посмотреть запись можно тут:
VK
YouTube
Post #1393 2.75K
✔️ Spring-тест: рассылка ушла клиентам трижды

Подняли 3 реплики в k8s, и клиенты получили одно и то же письмо три раза 👇

📦 Задание — code review

Ежедневная рассылка счетов через @Scheduled.
@Component
@RequiredArgsConstructor
public class BillingScheduler {

private final InvoiceService invoiceService;

@Scheduled(cron = "0 0 9 * * *")
public void sendDailyInvoices() {
List<Invoice> due = invoiceService.findDueToday();
due.forEach(invoiceService::sendAndMarkSent);
}
}


▪️ Объясни

— Почему @Scheduled выполняется на каждой реплике и приводит к дублирующим отправкам.
— Почему «сначала проверим флаг isSent, потом отправим» не спасает от гонки между подами.
— Какие есть решения и их трейд-оффы.

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

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

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

#practise
  • 🔥 9
  • 👍 3
  • ❤ 1
  • 🤔 1
Post #1390 984
В чём разница между связанностью (coupling) и сцепленностью (cohesion)?

Cohesion (сцепленность)насколько элементы внутри одного модуля подчинены общей цели. Высокая сцепленность — это хорошо: модуль делает одну вещь и делает её хорошо.

Coupling (связанность)насколько модули зависят друг от друга. Низкая связанность — это хорошо: изменение в одном модуле не вынуждает переписывать другие.

Цель проектирования — high cohesion, low coupling. Такой код легче читать, тестировать, переиспользовать, а изменения в нём локализованы. Инструменты достижения — разделение ответственности, программирование на интерфейсах, внедрение зависимостей и принципы SOLID.

🐸 Библиотека собеса по Java
  • ❤ 4
  • 👍 4
  • 🔥 1
Post #1389 952
🚀 Освойте разработку AI-агентов и получите доступ ещё к двум курсам Академии бесплатно!

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

Чтобы вы вышли на рынок с максимальным преимуществом, мы подготовили специальное предложение: покупаете курс по AI-агентам и ещё 2 курса Академии получаете бесплатно!

Соберите свой стек под оффер:

🔹 AI-агенты + AgentOps + Архитектура — комбо для бэкендеров и техлидов, чтобы внедрять ИИ без боли для прода.
🔹 AI-агенты + Математика + ML — для тех, кто хочет войти в Data Science.
🔹 AI-агенты + Алгоритмы — чтобы уверенно проходить хардкорные технические собесы.

Как это работает: вы оставляете заявку на курс по разработке AI-агентов и указываете еще два курса, которые хотите открыть в подарок.

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

👉 Забрать предложение и освоить ИИ-агентов
Post #1388 1.05K
Что такое нормализация и когда оправдана денормализация?

Нормализация — устранение избыточности через декомпозицию таблиц и связи между ними (нормальные формы 1NF–3NF/BCNF). Цель — целостность: данные хранятся в одном месте, нет аномалий вставки, обновления и удаления. Минус — много JOIN'ов при чтении.

Денормализация — намеренное дублирование данных ради скорости чтения, чтобы избежать дорогих соединений и агрегаций. Типична в аналитике, отчётах и read-heavy системах.

Это компромисс: денормализация ускоряет чтение, но усложняет поддержание согласованности при записи (одни и те же данные надо обновлять в нескольких местах). Выбор зависит от профиля нагрузки — что преобладает, чтение или запись.

🐸 Библиотека собеса по Java
  • 👍 4
  • 🔥 1
  • 🎉 1
Post #1387 1.12K
Чем INNER JOIN отличается от LEFT JOIN?

INNER JOIN возвращает только те строки, для которых нашлось совпадение в обеих таблицах. Если связи нет — строка не попадёт в результат.

LEFT JOIN возвращает все строки из левой таблицы плюс совпадающие из правой. Там, где совпадения нет, в столбцах правой таблицы будут NULL.

RIGHT JOIN — то же самое, но «главная» правая таблица.

🐸 Библиотека собеса по Java
  • 👍 7
  • 🔥 1
  • 👏 1
Post #1385 1.18K
Чем WHERE отличается от HAVING?

Оба фильтруют, но на разных этапах выполнения запроса.

🔹 WHERE отсекает строки до группировки (GROUP BY) и не может работать с агрегатными функциями.

🔹 HAVING отсекает уже сгруппированные данные после агрегации и умеет работать с агрегатами (COUNT, SUM, AVG).

Логический порядок выполнения: WHERE → GROUP BY → HAVING → SELECT → ORDER BY.

🐸 Библиотека собеса по Java
  • 👍 7
  • 🔥 1
  • 👏 1
Post #1384 1.13K
Какие бывают уровни изоляции транзакций?

От слабого к строгому:

READ UNCOMMITTEDвидны незакоммиченные изменения других транзакций (грязное чтение).
READ COMMITTEDвидны только закоммиченные данные, но при повторном чтении строки значение может измениться (неповторяющееся чтение).
REPEATABLE READодна и та же строка читается стабильно в рамках транзакции, но возможны фантомы (новые строки, подходящие под условие).
SERIALIZABLEполная изоляция, транзакции выполняются как будто строго последовательно.

Чем выше уровень, тем меньше аномалий, но больше блокировок и ниже пропускная способность. Выбор — это компромисс между корректностью и производительностью.

🐸 Библиотека собеса по Java
  • 👍 5
  • ❤ 1
  • 🔥 1
  • 👏 1
Post #1383 1.05K
🤖 Какие задачи можно действительно доверить ИИ?

Уже завтра разберём это на открытом уроке «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».

Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft от Яндекса.

После урока вы:

🔹 поймёте, какие задачи стоит делегировать AI уже сегодня;
🔹 научитесь быстрее разбираться в новых проектах и кодовой базе;
🔹 увидите, как выглядит современный workflow разработки с AI;
🔹 узнаете, где AI помогает экономить время, а где всё ещё нужен контроль разработчика.

На практике разберём путь от получения задачи до готового Pull Request с использованием AI-инструментов и AI-ревью.

🗓️ 23 июня, 19:00 (МСК)
⏱️ 90 минут

👉 Зарегистрироваться и получить рабочий AI-workflow для своих задач
Post #1382 2.95K
✔️ Java-тест: медленный сервис кладёт всё приложение

Внешний API затупил на 30 секунд и наш сервис перестал отвечать целиком 👇

📦 Задание — code review

Ходим во внешний платёжный шлюз через RestTemplate.

@Configuration
public class HttpConfig {

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

@Service
@RequiredArgsConstructor
public class PaymentGatewayClient {

private final RestTemplate restTemplate;

public GatewayResponse charge(ChargeRequest request) {
return restTemplate.postForObject(
"https://gateway.example.com/charge",
request,
GatewayResponse.class
);
}
}


▪️ Объясни

— Что происходит с пулом потоков Tomcat, когда внешний шлюз отвечает медленно или висит.
— Почему «ложится» всё приложение, хотя тормозит только один внешний вызов.
— Как настроить таймауты правильно (connect / read), зачем connection pool и где здесь место для timeout + circuit breaker / bulkhead.

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

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

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

#practise
  • 🔥 8
  • 👍 2
  • ❤ 1
  • 🤔 1
Post #1381 1.05K
🤖 AI пишет код за вас? Это самое скучное, что он умеет

Основное время разработчик тратит на другое: разобраться в чужой кодовой базе, найти нужный участок проекта, проверить решение, собрать Pull Request. Вот где AI реально экономит часы — если знать, как им пользоваться.

23 июня Ольга Лукьянова покажет это на практике: как с помощью современных AI-инструментов быстро погружаться в незнакомый проект, находить нужный код, реализовывать задачи и проверять результат до ревью коллег.

В итоге вы увидите не отдельные приёмы и промпты, а целостный workflow, который можно встроить в свою работу уже на следующий день 🔥

Чтобы лучше погрузиться в тему:

📺 Выступление про SourceCraft
📖 Статья на Хабре

🗓️ Когда: 23 июня, 19:00 (МСК)

👉 Занять место на открытом уроке
Post #1380 1.1K
Что такое индекс в БД и почему он ускоряет поиск?

Индекс — это отдельная структура данных (чаще всего B-дерево), которая хранит отсортированные значения столбца со ссылками на соответствующие строки таблицы.

Благодаря сортировке поиск идёт за O(log n) вместо полного сканирования таблицы O(n). Это как алфавитный указатель в книге: не нужно читать всё подряд.

Цена: индекс занимает место на диске и замедляет INSERT/UPDATE/DELETE, потому что его тоже нужно поддерживать в актуальном состоянии. Поэтому индексируют столбцы, которые часто используются в WHERE, JOIN, ORDER BY, а не всё подряд.

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

#sql
  • 👍 8
  • ❤ 1
  • 🔥 1
Post #1379 1.11K
В чём разница между @Component и @Bean?

Оба регистрируют бин в контейнере, но по-разному:

@Component (и специализации @Service, @Repository, @Controller) вешается на класс. Spring сам находит его при сканировании компонентов и создаёт бин. Подходит для своих классов, которые вы пишете сами.

@Bean вешается на метод внутри @Configuration-класса. Вы вручную создаёте объект и возвращаете его. Это нужно, когда:
бин из чужой библиотеки, куда нельзя добавить аннотацию;
требуется нетривиальная логика конструирования;
нужно условно собрать разные реализации.

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

#spring
  • 👍 4
  • 🔥 3
  • 👏 1
Post #1378 1.27K
Как Spring разрешает циклические зависимости между бинами?

Для синглтонов с внедрением через поля или сеттеры через кеш ранних ссылок (трёхуровневый кеш). Spring создаёт «сырой» экземпляр бина, кладёт раннюю ссылку на него до завершения инициализации, и второй бин в цикле получает эту ссылку, не дожидаясь полной готовности первого.

А вот при внедрении через конструктор цикл разрешить нельзя: чтобы создать бин A, нужен готовый B, а чтобы создать B — готовый A. Результат — BeanCurrentlyInCreationException.

Лучшее решение — устранить цикл, так как это обычно запах архитектуры. Как костыль — @Lazy на одной из зависимостей.

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

#spring
  • ❤ 3
  • 👍 3
  • 🔥 1
Post #1377 1.08K
⏰ Уже сегодня в 19:00 (МСК) стартует открытый урок!

Тема:

«Мультиагентные системы: почему большинство архитектур переусложнены»


🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.

Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.

🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.

🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».

👉 Успей присоединиться к уроку
Post #1376 1.13K
Чем fail-fast итераторы отличаются от fail-safe?

fail-fast (ArrayList, HashMap) бросают ConcurrentModificationException при структурном изменении коллекции во время обхода. Механизм — счётчик modCount, который итератор сверяет на каждом шаге. Это способ быстро отловить баг, а не средство защиты.

fail-safe (CopyOnWriteArrayList, ConcurrentHashMap) не бросают исключение:
- CopyOnWriteArrayList при модификации копирует внутренний массив, итератор работает со «снимком» старого состояния;
- итератор ConcurrentHashMap слабо-согласованный (weakly consistent) — отражает состояние на момент создания или позже, без жёстких гарантий.

Fail-safe безопасны в многопоточке, но итератор может не видеть свежие изменения и обходятся дороже по памяти.

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

#core
  • 👍 6
  • ❤ 2
  • 🔥 1
Post #1375 1.09K
🔥 Чем больше агентов — тем лучше? Не всегда. Уже завтра поговорим о реальных ограничениях на открытом уроке «Мультиагентные системы: почему большинство архитектур переусложнены».

Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.

После урока вы:

🔹 будете лучше ориентироваться в выборе между одним агентом и мультиагентной системой;
🔹 поймёте, какие архитектурные ошибки встречаются чаще всего;
🔹 получите практические ориентиры для проектирования и внедрения агентных систем;
🔹 будете лучше понимать возможности и ограничения современных ИИ-агентов.

🗓️ 18 июня, 19:00 (МСК)
⏱️ 90 минут

👉 Зарегистрироваться и получить промокод на 10 000 ₽
Post #1374 1.08K
Почему @Transactional не срабатывает при вызове метода внутри того же класса?

Потому что @Transactional работает через прокси. Spring оборачивает бин в прокси-объект, и транзакция открывается, когда вызов проходит через этот прокси извне.

Если же метод класса вызывает другой @Transactional-метод того же класса напрямую (this.method()), вызов идёт мимо прокси — аннотация просто игнорируется, транзакция не открывается. Это называется self-invocation.

Решения:

- вынести транзакционный метод в отдельный бин;
- инжектить ссылку на самого себя (self-injection) и вызывать через неё;
- переключиться на AspectJ-режим вместо проксей.

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

#spring
  • 👍 10
  • 🔥 1
  • 👏 1
Post #1373 1.05K
💬 Обратная связь

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

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

🐸 Библиотека собеса по Java
  • 👍 28
  • 😁 20
  • 🔥 10
  • ❤ 5
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →