Библиотека собеса по Java | вопросы с собеседований
Ir al canal en Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot
Mostrar más6 486
Suscriptores
-324 horas
-67 días
+230 días
Archivo de publicaciones
⚠️ Уже завтра стартует курс AgentOps!
Мы собрали на потоке сборную из мастеров IT-рынка. Практики из BigTech научат вас контролировать и отлаживать ИИ-агентов, чтобы они работали предсказуемо и не сливали бюджет на API.
🔥 Заберите 3 курса по цене 1:
● При покупке VIP-тарифа (осталось 4 места) нового потока «Разработка ИИ-агентов» получаете в подарок курс «AgentOps» + ещё один любой курс Академии (например, «Математика для разработки AI», чтобы глубже освоить направление). ● Три курса обойдутся вам всего в 134.000 ₽ вместо 263.000 ₽. ● Доступна удобная беспроцентная рассрочка, платеж можно разбить на несколько комфортных частей.Хотите прокачать свое портфолио продакшн-кейсом, но пока сомневаетесь? Пройдите наш бесплатный демо-урок, чтобы протестировать формат перед покупкой. 👉 Забрать 3 курса по цене 1 и получить демо-урок
❓ Чем List.of() отличается от Collections.unmodifiableList()?
Оба не позволяют менять список через свой интерфейс, но гарантии разные.
List.of() (Java 9) создаёт по-настоящему неизменяемую коллекцию: компактное представление, запрет на null, любая попытка модификации — UnsupportedOperationException. Менять нечего и неоткуда.
Collections.unmodifiableList() создаёт лишь обёртку-представление над существующим списком. Сама обёртка менять не даёт, но если изменить оригинальный список, изменения будут видны через обёртку. То есть это «view только для чтения», а не неизменяемая копия.
🐸 Библиотека собеса по Java
#core
🔴 Завтра тестовое собеседование с Java-разработчиком
1 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Виктору
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
❓ Чем композиция отличается от наследования?
Наследование — это отношение «is-a», поведение родителя достаётся подклассу статически на этапе компиляции. Композиция — отношение «has-a», объект делегирует работу вложенным объектам.
Проблемы наследования: сильная связанность с деталями реализации родителя (fragile base class), нарушение инкапсуляции, негибкость (только один родитель), лёгкость нарушить принцип Лисков.
Композиция более гибкая: поведение можно менять в рантайме (паттерн «Стратегия»), зависимости легко подменять в тестах, нет хрупкой иерархии. Отсюда принцип «предпочитай композицию наследованию». Наследование оправдано при настоящем «is-a» и стабильной иерархии.
🐸 Библиотека собеса по Java
#core
💬 Обратная связь
Текущий уровень сложности вопросов?
🔥 — Слишком просто, хочу сложнее
👍🏼 — В самый раз
❤️ — Иногда сложновато
😁 — Часто не понимаю
🐸 Библиотека собеса по Java
⭐️ Dream Team 5-го потока: научитесь строить ИИ-агентов у практиков из BigTech
14 июля стартует новый поток курса по разработке ИИ-агентов, и в этот раз мы собрали по-настоящему звездный состав менторов. Это эксперты, которые прямо сейчас определяют развитие AI в России: Yandex Cloud, Avito AI Lab, cloud․ru и НИУ ВШЭ.
Чтобы ваш вход в ИИ-инженерию был максимально мощным, мы подготовили специальное предложение: до 30 июня при покупке курса по ИИ-агентам вы получаете еще 2 любых курса Академии в подарок! 🔥
Как это работает: вы оставляете заявку на курс по разработке ИИ-агентов и указываете менеджеру ещё два курса, которые хотите забрать бесплатно.
👉Заберите 3 курса по цене 1 на звездном потоке по ИИ-агентам
❓ Что такое идемпотентность и почему она важна?
Идемпотентная операция при многократном выполнении даёт тот же результат, что и при однократном. В HTTP идемпотентны GET, PUT, DELETE, а POST — нет.
Почему это критично: в распределённых системах сетевые сбои и таймауты приводят к автоматическим повторам (retry). Если операция не идемпотентна — например, «снять 100 рублей» — повтор спишет деньги дважды.
Подходы к идемпотентности:
→ идемпотентные ключи (idempotency key) для дедупликации повторных запросов;
→ проектирование операций как «установить состояние X», а не «изменить на дельту»;
→ отслеживание уже обработанных id запросов.
Особенно важно для платежей и очередей сообщений с гарантией at-least-once.
🐸 Библиотека собеса по Java
🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru
Proglib.аcademy вместе с cloud․ru провели вебинар, где разобрали реальные боли проектирования автономных систем. Вы просили запись встречи — она уже в открытом доступе!
Что внутри:
— критерии выбора между одним агентом и мультиагентной системой;
— разбор популярных архитектурных ошибок;
— реальные ограничения современных ИИ-агентов;
— практические рекомендации по проектированию агентных систем.
👉 Посмотреть запись можно тут:
● VK
● YouTube
✔️ 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✔️ 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, потом отправим» не спасает от гонки между подами.
— Какие есть решения (ShedLock, распределённая блокировка, отдельный воркер, выборка с FOR UPDATE SKIP LOCKED) и их трейд-оффы.
Ставьте → 🔥, если нравится формат. Если нет → 🌚
💬 Решения под спойлер. Сравним, какое будет лучше.
🐸 Библиотека собеса по Java
#practise❓ Что такое идемпотентность и почему она важна в API и распределённых системах?
**Ответ:** идемпотентная операция при многократном выполнении даёт тот же результат, что и при однократном. В HTTP идемпотентны `GET`, `PUT`, `DELETE`, а `POST` — нет.
Почему это критично: в распределённых системах сетевые сбои и таймауты приводят к автоматическим повторам (retry). Если операция не идемпотентна — например, «снять 100 рублей» — повтор спишет деньги дважды.
Подходы к идемпотентности:
- идемпотентные ключи (idempotency key) для дедупликации повторных запросов;
- проектирование операций как «установить состояние X», а не «изменить на дельту»;
- отслеживание уже обработанных id запросов.
Особенно важно для платежей и очередей сообщений с гарантией at-least-once.
🐸 Библиотека собеса по Java
❓ В чём разница между связанностью (coupling) и сцепленностью (cohesion)?
Cohesion (сцепленность) — насколько элементы внутри одного модуля подчинены общей цели. Высокая сцепленность — это хорошо: модуль делает одну вещь и делает её хорошо.
Coupling (связанность) — насколько модули зависят друг от друга. Низкая связанность — это хорошо: изменение в одном модуле не вынуждает переписывать другие.
Цель проектирования — high cohesion, low coupling. Такой код легче читать, тестировать, переиспользовать, а изменения в нём локализованы. Инструменты достижения — разделение ответственности, программирование на интерфейсах, внедрение зависимостей и принципы SOLID.
🐸 Библиотека собеса по Java
🚀 Освойте разработку AI-агентов и получите доступ ещё к двум курсам Академии бесплатно!
В 2026 году просто писать код мало. Компании ищут инженеров, умеющих проектировать автономные системы и закрывать задачи бизнеса в разы быстрее.
Чтобы вы вышли на рынок с максимальным преимуществом, мы подготовили специальное предложение: покупаете курс по AI-агентам и ещё 2 курса Академии получаете бесплатно!
Соберите свой стек под оффер:
🔹 AI-агенты + AgentOps + Архитектура — комбо для бэкендеров и техлидов, чтобы внедрять ИИ без боли для прода.
🔹 AI-агенты + Математика + ML — для тех, кто хочет войти в Data Science.
🔹 AI-агенты + Алгоритмы — чтобы уверенно проходить хардкорные технические собесы.
Как это работает: вы оставляете заявку на курс по разработке AI-агентов и указываете еще два курса, которые хотите открыть в подарок.
Старт обучения — уже в июле. Количество мест ограничено, выбирайте зрелый подход к карьере.
👉 Забрать предложение и освоить ИИ-агентов
❓ Что такое нормализация и когда оправдана денормализация?
Нормализация — устранение избыточности через декомпозицию таблиц и связи между ними (нормальные формы 1NF–3NF/BCNF). Цель — целостность: данные хранятся в одном месте, нет аномалий вставки, обновления и удаления. Минус — много JOIN'ов при чтении.
Денормализация — намеренное дублирование данных ради скорости чтения, чтобы избежать дорогих соединений и агрегаций. Типична в аналитике, отчётах и read-heavy системах.
Это компромисс: денормализация ускоряет чтение, но усложняет поддержание согласованности при записи (одни и те же данные надо обновлять в нескольких местах). Выбор зависит от профиля нагрузки — что преобладает, чтение или запись.
🐸 Библиотека собеса по Java
❓ Чем INNER JOIN отличается от LEFT JOIN?
INNER JOIN возвращает только те строки, для которых нашлось совпадение в обеих таблицах. Если связи нет — строка не попадёт в результат.
LEFT JOIN возвращает все строки из левой таблицы плюс совпадающие из правой. Там, где совпадения нет, в столбцах правой таблицы будут NULL.
RIGHT JOIN — то же самое, но «главная» правая таблица.
🐸 Библиотека собеса по Java
👩💻 Алгоритмическая сложность коллекций в Java
Приглашаем на открытый урок.
🗓 01 июля в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик».
Программа урока:
✔️Основы алгоритмической сложности и принцип работы о-нотации;
✔️Влияние сложности операций на выбор подходящих коллекций;
✔️Сравнение популярных коллекций Java по эффективности выполнения различных операций;
✔️Практическая демонстрация, в которой будет показано, как эффективно использовать коллекции;
✔️Рекомендации по выбору коллекций для решения задач разного уровня сложности.
🔗 Ссылка на регистрацию: https: https://clc.to/ZUqYAg
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❓ Чем WHERE отличается от HAVING?
Оба фильтруют, но на разных этапах выполнения запроса.
🔹 WHERE отсекает строки до группировки (GROUP BY) и не может работать с агрегатными функциями.
🔹 HAVING отсекает уже сгруппированные данные после агрегации и умеет работать с агрегатами (COUNT, SUM, AVG).
Логический порядок выполнения: WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
🐸 Библиотека собеса по Java
❓ Какие бывают уровни изоляции транзакций?
От слабого к строгому:
→ READ UNCOMMITTED — видны незакоммиченные изменения других транзакций (грязное чтение).
→ READ COMMITTED — видны только закоммиченные данные, но при повторном чтении строки значение может измениться (неповторяющееся чтение).
→ REPEATABLE READ — одна и та же строка читается стабильно в рамках транзакции, но возможны фантомы (новые строки, подходящие под условие).
→ SERIALIZABLE — полная изоляция, транзакции выполняются как будто строго последовательно.
Чем выше уровень, тем меньше аномалий, но больше блокировок и ниже пропускная способность. Выбор — это компромисс между корректностью и производительностью.
🐸 Библиотека собеса по Java
🤖 Какие задачи можно действительно доверить ИИ?
Уже завтра разберём это на открытом уроке «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».
Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft от Яндекса.
После урока вы:
🔹 поймёте, какие задачи стоит делегировать AI уже сегодня;
🔹 научитесь быстрее разбираться в новых проектах и кодовой базе;
🔹 увидите, как выглядит современный workflow разработки с AI;
🔹 узнаете, где AI помогает экономить время, а где всё ещё нужен контроль разработчика.
На практике разберём путь от получения задачи до готового Pull Request с использованием AI-инструментов и AI-ревью.
🗓️ 23 июня, 19:00 (МСК)
⏱️ 90 минут
👉 Зарегистрироваться и получить рабочий AI-workflow для своих задач
✔️ 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
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
