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

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

رفتن به کانال در Telegram

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

نمایش بیشتر
6 465
مشترکین
-224 ساعت
-37 روز
-1130 روز
آرشیو پست ها
Расскажите о volatile? volatile — это модификатор переменной, который гарантирует: ▪️ Видимость изменений между потоками ▪️ Запрет кэширования в регистре потока Использовать стоит, когда: ▪️ Есть несколько потоков, которые читают/пишут одну переменную. ▪️ Нет сложных операций над этой переменной (например, инкрементов, которые требуют атомарности). volatile не обеспечивает атомарности, поэтому для операций «чтение-модификация-запись» нужны синхронизация или атомарные типы (AtomicInteger, AtomicReference и т.п.). 🐸 Библиотека собеса по Java #concurrency

😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой
😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой код команда пропустит на ревью. Для человека это естественная часть работы. У Claude Code этого контекста по умолчанию нет — только задача и инструкции, которые ему дали.
Поэтому в большой команде недостаточно просто выбрать хорошую модель. ❗️ Нужно ещё объяснить ей, как у вас устроена разработка: какие подходы приняты, что обязательно проверять и по каким правилам принимать решения.
🗓 23 июля в 19:00 МСК поговорим об этом на бесплатном вебинаре с Алексеем Жиряковым — он Executive Director в Сбере, руководит GenAI Data Platform, и с этой проблемой сталкивался не раз 🔥 Покажет живое демо, разберём, как встроить AI в процесс разработки так, чтобы он реально помогал, а не добавлял ещё один повод для споров на ревью. 🔗 Занять место на вебинаре 🏃‍♀️ Proglib Academy

Разница между Lambdas и Anonymous Classes? И лямбды, и анонимные классы позволяют создавать "одноразовые" реализации, но лямбды — это более короткий и функциональный способ записать код, реализующий функциональный интерфейс (т.е. интерфейс с одним абстрактным методом). Ключевые отличия: → Синтаксис: лямбда короче и читабельнее. → Производительность: лямбды компилируются как invoke-dynamic и не создают новый класс → меньше накладных расходов. → this: внутри лямбды this указывает на внешний объект, а в анонимном классе — на экземпляр самого анонимного класса. → Назначение: анонимные классы подходят, если нужно переопределить несколько методов или иметь состояние. Лямбды — только для одного метода. 🐸 Библиотека собеса по Java #core

StackOverflowError vs OutOfMemoryError? 🔹 StackOverflowError Возникает когда переполняется стек вызовов конкретного потока. Обычно из-за бесконечной или слишком глубокой рекурсии. 🔹 OutOfMemoryError Возникает когда JVM не может выделить память в куче (heap) для новых объектов. Это проблема всего приложения, а не отдельного потока. 🐸 Библиотека собеса по Java #jvm

Какие бывают гарантии доставки сообщений в Kafka? В Kafka существует три уровня гарантий доставки сообщений: 1️⃣ At most once (максимум один раз) Сообщение может быть потеряно, но никогда не будет обработано дважды. Producer отправляет сообщение и не ждет подтверждения (acks=0). Самый быстрый, но ненадежный вариант. 2️⃣ At least once (минимум один раз) Сообщение гарантированно доставлено, но может быть обработано несколько раз. Producer ждет подтверждения от лидера (acks=1) или всех реплик (acks=all). При повторной отправке возможны дубликаты. Используется чаще всего. 3️⃣ Exactly once (ровно один раз) Сообщение доставляется и обрабатывается строго один раз. Достигается через idempotent producer (enable.idempotence=true) и транзакции. Самый надежный, но с небольшим оверхедом по производительности. Выбор зависит от задачи: для логов подойдет at most once, для финансовых операций — exactly once, для большинства случаев — at least once с идемпотентной обработкой. 🐸 Библиотека собеса по Java #core

✔️ Java-тест: сортировка падает только на больших данных Локально всё ок, на проде — IllegalArgumentException: Comparison method violates its general contract! 👇 📦 Задание — code review Сортируем товары: сначала в наличии, потом по убыванию рейтинга.
products.sort((a, b) -> {
    if (a.isInStock() && !b.isInStock()) return -1;
    if (!a.isInStock() && b.isInStock()) return 1;
    return (int) (b.getRating() - a.getRating()); // rating: double
});
▪️ Объясни — Почему этот компаратор нарушает контракт (нетранзитивность / нарушение антисимметрии) и почему падает только на достаточно больших списках. — Как переписать, чтобы было корректно и читаемо. Ставьте → 🔥, если нравится формат. Если нет → 🌚 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise

🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе Курс «ИИ для разработчиков» ведут практики из ведущи
🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе Курс «ИИ для разработчиков» ведут практики из ведущих российских IT-компаний 🔥 🔵 Они прошли путь от первых экспериментов с AI до рабочих процессов, в которых агенты помогают команде писать код, готовить PR и быстрее доводить задачи до продакшена. В ближайшее время познакомим вас с каждым преподавателем. Программа курса — по ссылке 🎹 🏃‍♀️ Proglib Academy

🤷‍♂️ Что важнее в хорошем курсе: программа или люди, которые её создают? У Proglib Academy вышел пост о том, на каком опыте построен новый курс по AI для разработчиков 🦴

Что такое Autoboxing и Unboxing? Autoboxing — автоматическое преобразование примитива в класс-обёртку (int → Integer). Unboxing — обратное преобразование (Integer → int). Удобно, но есть подводные камнивозможен NullPointerException при unboxing nullснижает производительность (создание объектов)проблемы с == (сравнивает ссылки, а не значения) 🐸 Библиотека собеса по Java #core

В чём разница между IO и NIO? IO (Input/Output) — это традиционная модель потоков, использующая блокирующие операции для чтения и записи данных, что может привести к задержкам, если операция занимает много времени. NIO (New IO) был введён в JDK 1.4 для улучшения производительности, предлагая неблокирующие каналы и буферы, а также поддержку асинхронных операций, что позволяет эффективно работать с большими объёмами данных или многими соединениями одновременно. 🐸 Библиотека собеса по Java #core

🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат. 1️⃣ способ — просто по
🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат. 1️⃣ способ — просто попросить написать код. Модель может сгенерировать рабочее решение, но именно на этапе проверки часто всплывают пропущенные edge case’ы, ошибки обработки или проблемы с тестами. 2️⃣ способ — дать агенту цикл Think → Act → Observe. Он не останавливается после первой попытки: планирует действия, проверяет результат и, если находит ошибку, исправляет её и пробует снова. Самое интересное, что разница здесь не столько в модели ❕ Claude, GPT или другая LLM могут быть одинаковыми. Разницу создаёт инженерная система вокруг них. 📅 Именно это разберём 23 июля в 19:00 (МСК) на бесплатном вебинаре с Алексеем Жиряковым (Executive Director в Сбере, GenAI Data Platform, ex-CTO Stream и KION). На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней 🔥 🔗 Регистрация 🏃‍♀️ Proglib Academy

Какие объекты стоит использовать для ключей в HashMap? Ключи должны быть иммутабельными, а также правильно реализовывать методы equals() и hashCode(). 🐸 Библиотека собеса по Java

🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться! Мы только начали, а первый практический воркшо
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться! Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу. 💼 Главная фишка: финальный проект в портфолио:
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.
🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽! Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом 🔗 Занять место и забрать 3 курса

🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт По этому поводу мы решили выложить закрытую запись одно
🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт По этому поводу мы решили выложить закрытую запись одного из уроков из программы. Найти её в поиске YouTube нельзя — она доступна только по ссылке и всем, кто будет на курсе. Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций. Что внутри урока:
- Устройство LLM. - Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.). - Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.
После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning. 👉Смотреть закрытый урок на YouTube Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться. 🔗 Занять место на курсе

Расскажите о нагрузочном тестировании? Нагрузочное тестирование — это проверка поведения системы под различными уровнями нагрузки. Цель — понять, как приложение работает при большом количестве одновременных пользователей или запросов. Основные проверки:время отклика при росте нагрузки; — максимальное количество пользователей, которое система выдерживает; — точку деградации производительности; — стабильность при длительной работе. Используем инструменты, например, JMeter, Gatling или K6. 🐸 Библиотека собеса по Java #tests

🚀 Уже завтра стартует новый поток курса «ИИ-агенты»! Мы собрали мощнейший состав преподавателей. Учить вас проектировать арх
🚀 Уже завтра стартует новый поток курса «ИИ-агенты»! Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний. Старт уже завтра! Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока! Всего за 2 часа вы заглянете под капот ИИ-агента, поймете, чем мышление модели отличается от ее ответа, и научите систему чинить собственный код. Это идеальный способ протестировать нашу платформу перед покупкой. 🔗 Пройти демо-урок и занять место на курсе

Что такое propagation у @Transactional? Propagation — политика того, как метод с аннотацией @Transactional будет взаимодействовать с существующей транзакцией. Виды: ▪️ REQUIRED (по умолчанию): использует существующую транзакцию или создаёт новую, если её нет ▪️ REQUIRES_NEW: всегда создаёт новую транзакцию, при этом приостанавливая текущую ▪️ SUPPORTS: действует в рамках текущей транзакции, если есть, иначе без транзакции ▪️ MANDATORY: бросает исключение, если нет текущей транзакции ▪️ NEVER: запрещает наличие транзакции, если уже есть, бросает исключение ▪️ NESTED: создаёт «вложенную» транзакцию (savepoint внутри основной) 🐸 Библиотека собеса по Java #spring

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

🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код? Мы привыкли общаться с ИИ промптами, но для автоном
🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код? Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD). Вот как этот подход меняет работу агента на практике: 🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти. 🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией. 🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ. Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы —оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂

✔️ Concurrency-тест: пул потоков копит задачи до OOM Нагрузка выросла, latency пополз вверх, потом OutOfMemoryError 👇 📦 Задание — code review Сервис обрабатывает входящие события асинхронно.
@Configuration
public class ExecutorConfig {

    @Bean
    public ExecutorService eventExecutor() {
        return Executors.newFixedThreadPool(10);
    }
}

@Service
@RequiredArgsConstructor
public class EventService {

    private final ExecutorService eventExecutor;

    public void handle(Event event) {
        eventExecutor.submit(() -> process(event));
    }
}
▪️ Объясни — Какая очередь стоит за Executors.newFixedThreadPool и почему она опасна под нагрузкой. — Почему задачи бесконтрольно «копятся» и система падает в OutOfMemoryError, а не начинает отбрасывать нагрузку. — Как собрать ThreadPoolExecutor руками: ограниченная очередь, RejectedExecutionHandler, backpressure. Чем плох и newCachedThreadPool в этом сценарии. Ставьте → 🔥, если нравится формат. Если нет → 🌚 💬 Решения под спойлер. Сравним, какое будет лучше. 🐸 Библиотека собеса по Java #practise