Библиотека собеса по Java | вопросы с собеседований
6.34K subscribers
397 photos
9 videos
464 links
Вопросы с собеседований по Java и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Какие бывают гарантии доставки сообщений в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1👏1
В чём основное отличие Docker от виртуальной машины?

Основное отличие в уровне виртуализации.

Виртуальная машина виртуализирует железо целиком: у неё есть собственная ОС со всеми компонентами, гипервизор, ядро. Это тяжеловесно — VM может весить гигабайты и стартовать минутами.

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

🔹 На практике это означает

— Docker быстрее и экономнее по ресурсам.
— VM даёт полную изоляцию и может запускать разные ОС на одном хосте.
— Для микросервисов обычно выбирают Docker, для полной изоляции окружений — VM.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1😁1
В чём разница между throw и throws?



throw — это когда один разработчик бросает исключение в другого.

throws — это когда вся команда бросает код в прод без ревью.

Ключевое: чем больше 's' в конце, тем больше народу пострадает.

✔️

throw — это оператор, который непосредственно выбрасывает исключение в коде:
throw new IllegalArgumentException("Ошибка");


throws — это ключевое слово в сигнатуре метода, которое декларирует, что метод может выбросить исключение (перекладывает обработку на вызывающий код):
public void readFile() throws IOException {
// код
}


💬 Добавим немного юмора?

😁 → Да
🔥 → Нет

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
😁45🔥6👍2
Может ли интерфейс быть final?



Конечно может! Более того, в Java 21 появился секретный модификатор ultra-final, после которого IDE будет ругаться на него еще до компиляции!

✔️

Интерфейс не может быть объявлен как final. Это противоречит самой природе интерфейсов — они созданы для того, чтобы их реализовывали другие классы. Модификатор final запрещает наследование/реализацию, что делает интерфейс бесполезным.

Интерфейсы по умолчанию являются abstract, что концептуально противоположно final.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍3🔥1