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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое Type Erasure в Java?

Type Erasure — это механизм стирания информации о generic типах на этапе компиляции для обратной совместимости.

List<String> strings = new ArrayList<>();
List<Integer> integers = new ArrayList<>();

// В runtime оба имеют тип List
strings.getClass() == integers.getClass(); // true


🔹 Последствия:

нельзя создать массив параметризованного типа;
нельзя использовать instanceof с generics;
невозможно получить параметр типа в runtime.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4👏2
Равен ли Double.NaN сам себе?

Double.NaN == Double.NaN возвращает false в соответствии со спецификацией IEEE 754.

NaN (Not a Number) представляет недопустимый или неопределённый результат вычислений. По определению, NaN не равен ничему, включая себя.

Для корректной проверки используйте Double.isNaN(value).

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥3🤔1
Что такое Lambda выражение?

Lambda — это анонимная функция, реализующая функциональный интерфейс.

Синтаксис: (параметры) -> { тело }

Под капотом компилятор создаёт анонимный класс или использует invokedynamic для оптимизации.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👏2🔥1
Что такое Selector в NIO?

Selector позволяет одному потоку обрабатывать множество каналов (network connections).

Selector selector = Selector.open();
channel.register(selector, SelectionKey.OP_READ);

while (true) {
selector.select(); // блокируется до события

Set<SelectionKey> keys = selector.selectedKeys();
for (SelectionKey key : keys) {
if (key.isReadable()) {
// обработка чтения
}
}
}


Один поток может обслуживать тысячи соединений. Это основа high-performance серверов (Netty, Tomcat NIO).

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3👏1
Что такое Autoboxing и Unboxing?

Autoboxing — автоматическое преобразование примитива в класс-обёртку (int → Integer).
Unboxing — обратное преобразование (Integer → int).

Удобно, но есть подводные камни

возможен NullPointerException при unboxing null
снижает производительность (создание объектов)
проблемы с == (сравнивает ссылки, а не значения)

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1👏1
Что такое Fail-Safe итератор?

Fail-Safe итератор работает с копией коллекции и не бросает ConcurrentModificationException при модификации.

Примеры: CopyOnWriteArrayList, ConcurrentHashMap.

Особенности:

не видят изменения, сделанные после создания итератора
потребляют больше памяти (копия данных)
подходят для сценариев с редкими изменениями

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔3🔥1
Где хранятся объекты?

Объекты хранятся в heap (куче). Ссылки на объекты при этом могут жить в стеке (локальные переменные), в heap (поля других объектов) или в регистрах CPU (оптимизация JIT).

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1👏1
Как устроена архитектура брокеров в Kafka?

Брокер — это отдельный сервер Kafka. Он принимает сообщения от продюсеров, хранит их на диске и отдаёт консьюмерам. В кластере может быть несколько брокеров. Они работают совместно и знают друг о друге.

Топик — это именованный канал, куда продюсеры пишут сообщения, а консьюмеры их читают.

Топик делится на партиции. Партиция — это упорядоченный, неизменяемый лог. Партиции распределяются по брокерам.

Репликация: у каждой партиции есть один Leader и несколько Follower-реплик. Все записи и чтения идут через Leader, Follower-ы синхронно подтягивают данные. Если Leader падает — один из Follower-ов становится новым Leader-ом.

ISR (In-Sync Replicas) — список реплик, которые не отстали от Leader-а. Запись считается подтверждённой только когда все реплики из ISR её получили (если acks=all).

Координация: раньше это делал ZooKeeper — хранил метаданные о брокерах, партициях, лидерах. Начиная с Kafka 3.x активно внедряется KRaft.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4👏2
Какие есть методы в классе Object?

Класс Object — это базовый класс для всех классов в Java. Он содержит следующие методы:

🔹 public final Class<?> getClass() – возвращает объект Class для текущего объекта.
🔹 public int hashCode() – возвращает хэш-код объекта.
🔹 public boolean equals(Object obj) – сравнивает объекты на равенство.
🔹 protected Object clone() – создает копию объекта (глубокое/поверхностное копирование зависит от реализации).
🔹 public String toString() – строковое представление объекта.
🔹 public final void notify() – пробуждает один поток, ожидающий монитор объекта.
🔹 public final void notifyAll() – пробуждает все потоки, ожидающие монитор объекта.
🔹 public final void wait() – заставляет поток ждать, пока его не разбудят через notify/notifyAll.
🔹 public final void wait(long timeout) – ждет указанное время или до уведомления.
🔹 public final void wait(long timeout, int nanos) – более точная версия ожидания.
🔹 protected void finalize() – вызывается перед удалением объекта сборщиком мусора (deprecated с Java 9).

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

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

→ throws: указывается в сигнатуре метода, чтобы сообщить, какие исключения метод может выбросить. Например, если метод может генерировать FileNotFoundException, это указывается так:
public void readFile() throws FileNotFoundException { ... }


Здесь throws не выбрасывает исключение, а только предупреждает, что оно может возникнуть.

→ throw: используется непосредственно в теле метода, чтобы выбросить конкретное исключение. Пример:
if (file == null) {
throw new FileNotFoundException("Файл не найден");
}


Здесь throw запускает исключение, когда возникает определённое условие.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥1