Библиотека собеса по Java | вопросы с собеседований
6.32K subscribers
395 photos
8 videos
440 links
Вопросы с собеседований по Java и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
✔️ Java-тест: Retry с exponential backoff

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

📦 Задание

Реализуйте метод, который выполняет операцию с повторными попытками:

public <T> T retry(Supplier<T> operation, 
int maxAttempts,
long initialDelayMs) {
// Ваш код здесь
// При неудаче - повторить с задержкой
// Задержка удваивается: 100ms -> 200ms -> 400ms
// После maxAttempts выбросить исключение
}


Требования

— Первая попытка без задержки
— Каждая следующая: задержка *= 2
— После maxAttempts пробросить последнее исключение
— Если успех - вернуть результат

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

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

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

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥102👍1
💬 Обратная связь

Моё отношение к постам за прошлый месяц:

🔥 — Интересно, полезно
🤔 — Нейтрально
😁 — Не понравилось, напишу что

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23🤔5😁4
🤔 Как ускорить браузер

Закрой все вкладки со словами «MacBook», «купить ноутбук», «ноут в рассрочку». Потому что у нас есть решение лучше.

🔥 Proglib разыгрывает MacBook Pro 14. Формула простая: покупаешь любой курс до 15 ноября → учишься 2 недели → пишешь куратору #розыгрыш

Пока у тебя открыто 147 вкладок с ценами, кто-то уже прокачивает скилы и может забрать приз.

👉🏻 Выбрать курс для участия
😁5👍1
Как между собой связаны Iterable, Iterator и цикл for-each?

Iterable — это интерфейс с единственным методом iterator(), который возвращает объект Iterator. Любой класс, реализующий Iterable, может использоваться в цикле for-each.

Iterator — это интерфейс для последовательного обхода элементов коллекции. Содержит методы hasNext(), next() и remove().

Цикл for-each — это синтаксический сахар. Компилятор автоматически преобразует его в вызов iterator() и работу с Iterator.

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5👏1
Что такое GraphQL?

GraphQL — это язык запросов для API и среда выполнения этих запросов, разработанный Facebook.

🔹 Ключевые особенности:

В отличие от REST, клиент запрашивает ровно те данные, которые ему нужны, в одном запросе. Это решает проблемы over-fetching (получение лишних данных) и under-fetching (когда нужно делать несколько запросов).

✔️ Плюсы

Гибкость на клиенте
Строгая типизация через схему
Один эндпоинт
Хорошая документация "из коробки"

Минусы

Сложность кеширования
Может быть оверхед для простых API
Требует дополнительных библиотек на бэкенде

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥21
Что означает ключевое слово native?

Ключевое слово native используется для объявления методов, реализация которых написана не на Java, а на других языках — обычно C или C++. Такие методы называются нативными.

Когда мы объявляем метод как native, мы указываем только его сигнатуру без тела метода. Реальная реализация находится в нативной библиотеке (.dll, .so), которая подключается через JNI (Java Native Interface).

Нативные методы используются для:

Работы с системными ресурсами и API операционной системы
Повышения производительности критичных участков кода
Использования существующих библиотек на C/C++

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥1
Halloween Special — последний день магии! 👻

Успевай сегодня купить курсы со скидкой 40%!

А также участвуй в розыгрыше MacBook Pro 14 💻

После полуночи останется только тыква 🎃

🔮 Открой портал и выбери курс
😁2🔥1
Что такое enum?

Enum используется для определения ограниченного набора именованных констант, которые логически связаны между собой.
Он делает код безопаснее и читаемее по сравнению с "магическими" числами или строками.

Кроме того, enum может содержать:


поля и методы, чтобы хранить доп. данные (например, код статуса);
конструктор (по умолчанию private);
переопределение методов (например, toString() или abstract-методы для каждого элемента).

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

#core
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
✔️ Java-тест: Группировка строк по длине

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

📦 Задание

Реализуйте метод, который группирует строки по их длине:

public Map<Integer, List<String>> groupByLength(List<String> strings) {}


Требования

— Обработать null и пустой список → вернуть пустую Map
— Игнорировать null-элементы в списке
— Порядок строк в группах сохраняется
— Пустые строки группировать с ключом 0

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

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

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

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥91👍1
Какие существуют проблемы в многопоточной среде?

Основные проблемы многопоточности:

1️⃣ Race Conditionкогда результат работы зависит от порядка выполнения потоков. Например, два потока одновременно изменяют одну переменную без синхронизации.

2️⃣ Deadlockвзаимная блокировка, когда потоки ждут друг друга. Классика: поток А держит ресурс 1 и ждёт ресурс 2, а поток Б держит ресурс 2 и ждёт ресурс 1.

2️⃣ Livelockпотоки активны, но не могут продолжить работу, постоянно реагируя на действия друг друга. Например, как два человека в коридоре, которые одновременно пытаются уступить дорогу.

4️⃣ Starvationпоток никогда не получает доступ к ресурсу из-за того, что другие потоки постоянно его перехватывают.

5️⃣ Memory Visibility изменения, сделанные одним потоком, могут быть не видны другим из-за кэширования в CPU.

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

#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🔥1
Разница StackOverflowError и OutOfMemoryError?

— StackOverflowError

Возникает когда переполняется стек вызовов конкретного потока. Обычно из-за бесконечной или слишком глубокой рекурсии.

— OutOfMemoryError

Возникает когда JVM не может выделить память в куче (heap) для новых объектов. Это проблема всего приложения, а не отдельного потока.

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

#jvm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥21
5 ноября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Представь ситуацию?

Есть Spring Boot приложение с несколькими @Configuration классами, и в них определены бины с одинаковыми именами. Что произойдет при старте приложения и как разрешить конфликт?

🔹 Ответ:

Spring выбросит BeanDefinitionOverrideException при старте приложения.

Если нужно разрешить конфликт, есть несколько путей:

— Использовать @Primary
— Использовать @Qualifier
— Использовать профили (@Profile)

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

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1🤔1
Почему метод с @Transactional, вызванный из другого метода того же класса, не открывает транзакцию?

Spring использует proxy-объекты для обработки @Transactional. Когда вы вызываете метод извне класса, вызов идет через proxy, который оборачивает метод в транзакцию. Но при вызове метода внутри того же класса (this.method()), вы обращаетесь напрямую к реальному объекту, минуя proxy.

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

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1👏1
💬 Обратная связь

Хештег с темой вопроса:

🔥 — Супер, удобно
😁 — Неудобно, верните как было

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20😁3
Что такое нагрузочное тестирование?

Нагрузочное тестирование — это проверка поведения системы под различными уровнями нагрузки. Цель — понять, как приложение работает при большом количестве одновременных пользователей или запросов.

Обычно проверяем:

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

Используем инструменты типа JMeter, Gatling или K6.

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

#tests
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥411
✔️ Java-тест: Безопасное извлечение значений из Map

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

📦 Задание

Реализуйте метод для безопасного получения значения из вложенной Map с default-значением:
public class MapUtils {

public static <T> T getNestedValue(Map<String, Object> map,
String path,
T defaultValue) {
// Ваша реализация
}
}


Требования

— Путь задается через точку: "user.address.city"
— Если любой уровень вложенности null или отсутствует → вернуть defaultValue
— Обработать пустой путь → вернуть defaultValue
— Обработать null в параметрах → вернуть defaultValue

Примеры использования

Map<String, Object> data = Map.of(
"user", Map.of(
"name", "John",
"age", 30,
"address", Map.of(
"city", "Moscow"
)
)
);

String city = getNestedValue(data, "user.address.city", "Unknown");
// → "Moscow"

Integer age = getNestedValue(data, "user.age", 0);
// → 30

String country = getNestedValue(data, "user.address.country", "Russia");
// → "Russia" (не найдено)


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

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

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

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍31🤔1