Библиотека джависта | Java, Spring, Maven, Hibernate
23.5K subscribers
2.18K photos
44 videos
45 files
3.07K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
✔️ Java-тест: Docker edition

Продолжаем тестить новый формат. Представим задачу 👇

У вас есть Spring Boot-приложение. Нужно собрать Docker-образ, который:
1. Основан на официальном JDK 21
2. Поддерживает порт 8080
3. Настраивает часовой пояс контейнера на Москву (Europe/Moscow)


📦 Задание:

Составьте Dockerfile, который корректно запускает приложение в контейнере по условиям выше.

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

💬 Скидывайте Dockerfile в комментарии, главное прячьте под спойлер.

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

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍3👏1😁1
✔️ Java-тест: Concurrency edition

Проверим, как вы дружите с многопоточностью 👇

У вас есть метод doWork(), который выполняет тяжёлую операцию (например, чтение и обработку файла).

📦 Задание:

Нужно запустить ровно 5 потоков, каждый из которых вызывает doWork(), и дождаться завершения всех перед продолжением выполнение основного потока.

Разрешено использовать любые инструменты.

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

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

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

#practise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥152👍1
✔️ 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
🔥1411👍3🤔2
✔️ 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
🔥11👍2🥱21
✔️ 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
🔥5🤔31👍1