Библиотека собеса по Java | вопросы с собеседований – Telegram
Библиотека собеса по Java | вопросы с собеседований
6.37K subscribers
403 photos
9 videos
506 links
Вопросы с собеседований по Java и ответы на них.

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

Учиться у нас: https://proglib.io/w/08c603b6

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Можно ли переопределить статический метод?

Нет, статические методы не переопределяются (override), они скрываются (hide).

При вызове статического метода решение о том, какой метод выполнить, принимается на этапе компиляции по типу ссылки, а не по типу объекта.

class Parent {
static void test() { System.out.println("Parent"); }
}
class Child extends Parent {
static void test() { System.out.println("Child"); }
}

Parent obj = new Child();
obj.test(); // Выведет "Parent"


Статические методы принадлежат классу, а не объекту, поэтому полиморфизм на них не работает.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥2👏1
В чём разница между CopyOnWriteArrayList и Collections.synchronizedList()?

CopyOnWriteArrayList создаёт копию массива при каждой модификации. Чтение не блокируется вообще, подходит для случаев, когда чтений много, а записей мало.

Collections.synchronizedList() оборачивает обычный List и синхронизирует каждый метод через монитор. Все операции (и чтение, и запись) блокируются.

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

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👏2🔥1
Чем отличается invokeAll() от submit() в ExecutorService?

→ submit() отправляет одну задачу и сразу возвращает Future. Задача выполняется асинхронно.

→ invokeAll() принимает коллекцию задач и блокирует поток до завершения всех задач. Возвращает список Future только когда все задачи выполнены или вышел таймаут.

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

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1😁1
Что такое паттерн Flyweight и где он используется в Java?

Flyweight — это паттерн для экономии памяти путём переиспользования объектов с одинаковым состоянием.

Объект разделяется на intrinsic state (неизменяемое, общее) и extrinsic state (изменяемое, уникальное). Общее состояние хранится в одном экземпляре.

🔹 Примеры:

String Pool (все одинаковые строки ссылаются на один объект)
Integer.valueOf() кеширует числа от -128 до 127
Boolean.TRUE и Boolean.FALSE

Паттерн эффективен, когда создаётся много объектов с повторяющимися данными.

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

#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1🤔1
В чём разница между @Component, @Service и @Repository?

Технически — никакой. Все три создают Spring bean и работают одинаково.

Разница семантическая:
@Componentобщий стереотип для любого компонента.
@Serviceдля бизнес-логики (service layer).
@Repositoryдля работы с данными (DAO layer).

@Repository имеет дополнительную функцию: перехватывает специфичные для persistence исключения и переводит их в DataAccessException.

Использование правильной аннотации улучшает читаемость и показывает роль класса в архитектуре.

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

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍81👏1
Что делает метод flatMap() в Stream API?

flatMap() преобразует каждый элемент в Stream и объединяет все Stream'ы в один плоский Stream. В отличие от map() возвращает Stream<T>.

Полезен для работы с вложенными коллекциями или когда операция возвращает Optional/Stream.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1👏1
Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы выучить концепцию RAG и уверенно обсуждать её на следующем архитектурном интервью.

Как отвечать на вопросы про ИИ-архитектуру на собеседовании Java-разработчика? Разберём теорию и практику на открытом уроке.

Темы занятия:

— интеграция LLM в Enterprise (RAG vs Fine-tuning);
— хранение эмбеддингов в векторных БД;
— демонстрация работы с PDF-контекстом.

Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.

Урок открывает курс «Разработка AI-агентов». Мы ориентируемся на тех, кто пишет код. Просьба «просто зрителей» не беспокоить.

Записаться на урок
Что такое Phantom Reference и зачем она нужна?

PhantomReference — самая слабая ссылка в Java. Отличается от WeakReference тем, что get() всегда возвращает null.

Используется для отслеживания момента, когда объект удалён из памяти. После удаления объекта PhantomReference помещается в ReferenceQueue.

В отличие от finalize(), это надёжный способ отследить удаление объекта. Используется редко, в основном во внутренних механизмах или для управления off-heap памятью.

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

#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2👏2
✔️ Java-тест: Debouncer для частых событий

Напишите метод для production-кода 👇

📦 Задание

Реализуйте debouncer, который откладывает выполнение действия пока события продолжают поступать:

public class Debouncer {
public Debouncer(long delayMs) {
// Ваш код здесь
}

public void call(Runnable action) {
// Ваш код здесь
// Если вызов повторяется до истечения delayMs
// - отменить предыдущий и запланировать новый
// Выполнить только когда delayMs прошло без новых вызовов
}
}


🔹 Требования

— Выполнять action только если delayMs прошло без новых вызовов
— Каждый новый call() отменяет предыдущий таймер
— Использовать ScheduledExecutorService
— Потокобезопасность

🔹 Пример:

Debouncer debouncer = new Debouncer(300); // 300ms
debouncer.call(() -> search(query)); // откладываем
debouncer.call(() -> search(query)); // отменяем предыдущий
debouncer.call(() -> search(query)); // отменяем предыдущий
// Через 300ms выполнится только последний


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

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

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

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2👏1
Архитектурные вопросы стали сложнее, а ты всё ещё вручную «жаришь» микросервисы?

Настоящий Шеф стоит систему.

В понедельник, 26 января, стартует интенсив по разработке ИИ-агентов. Узнай, как внедрить автономные решения в энтерпрайз-стек.

В программе:

— мультиагентные системы в CrewAI: контроль исполнения задач;
— сложная логика в LangGraph: управление состоянием в графах;
tool use интеграция: связь агентов с внешними сервисами. 🏗️

Записаться на курс
💬 Обратная связь

Как часто вы проходите собеседования?

🔥 — Сейчас активно ищу работу
👍🏼 — Раз в несколько месяцев
❤️ — Раз в полгода-год
😁 — Не прохожу, уже работаю/ещё учусь

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24🔥187👍3
Что такое Race Condition?

Race Condition — это ситуация, когда результат работы программы зависит от порядка выполнения потоков.

Классический пример — инкремент:

// Два потока выполняют:
counter++; // read-modify-write

// Без синхронизации:
// Поток 1: читает 0
// Поток 2: читает 0
// Поток 1: пишет 1
// Поток 2: пишет 1
// Итого: 1 вместо 2


Решения: synchronized, AtomicInteger, Lock, volatile (только для простых операций).

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

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👏1