Forwarded from Библиотека задач по Java | тесты, код, задания
Что чаще всего будет результатом кода?
Anonymous Quiz
18%
1000
51%
число меньшее 1000
6%
0
10%
Ошибка компиляции
15%
Посмотреть ответ
👍4🔥1👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42👍3💯3👾1
Производительность enterprise-систем часто упирается в кэширование. Но один только Redis — не всегда оптимально: сетевые вызовы вносят задержки, а локальные кэши не делятся данными между инстансами. Решение — связка in-memory и распределённого кэша.
📝 Промпт:
Generate a Spring Boot 3 configuration with multi-level caching (L1 + L2).
— Integrate Caffeine as in-memory (L1) cache for ultra-fast lookups.
— Integrate Redis as distributed (L2) cache for cross-instance consistency.
— Configure CacheManager that combines Caffeine (short-lived) and Redis (longer TTL) transparently.
— Implement annotation-based caching with @Cacheable, @CachePut, and @CacheEvict.
— Add fallback to DB if both caches miss, with metrics for hit/miss ratios.
— Ensure proper serialization (Jackson or Kryo) for complex entities in Redis.
— Provide cache invalidation strategies (per entity, per tenant, global).
— Добавьте Near-cache pattern для высоконагруженных сервисов.
— Интегрируйте с Spring Data Redis Streams для event-driven invalidation.
— Настройте Prometheus + Grafana dashboards для мониторинга кэш-слоя.
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2❤1👏1
💰 Java и лицензии
Oracle активно напоминает компаниям о необходимости платить за использование Java.
— Кто-то считает это справедливым: язык, экосистема, поддержка стоят денег.
— Другие утверждают, что Oracle душит Java и правильный путь — полностью уходить в OpenJDK и его дистрибутивы (Adoptium, Azul, Amazon Corretto).
💬 Что думаете?
🐸 Библиотека джависта
#DevLife
Oracle активно напоминает компаниям о необходимости платить за использование Java.
— Кто-то считает это справедливым: язык, экосистема, поддержка стоят денег.
— Другие утверждают, что Oracle душит Java и правильный путь — полностью уходить в OpenJDK и его дистрибутивы (Adoptium, Azul, Amazon Corretto).
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4😁4🔥1
🔥 Задача на алгоритмы: оптимизация расписания задач
Иногда даже повседневные задачи превращаются в отличный повод вспомнить алгоритмы и потренировать мозг. Особенно если представить, что это часть сервиса планирования нагрузок или распределения вычислений в распределённой системе.
🔹 Условие
— У вас есть N задач, каждая с временем выполнения t[i].
— Есть K воркеров (потоков, серверов), которые могут выполнять задачи параллельно, но каждый воркер может брать только одну задачу за раз.
💡 Пример:
🔹 Уточнения
— N может достигать 10⁴
— K до 100
— Допустимо небольшое отклонение от оптимума (например, ≤5%)
— Требуется O(N log N) или лучше
— Можно предусмотреть балансировку “на лету” при поступлении новых задач
🔹 Вопрос
Какой алгоритм примените для минимизации времени выполнения?
Подумайте о вариантах:
— жадный
— динамическое программирование
— приближённые решения (если N велико)
🔹 Подсказки
—Это классическая NP-трудная задача разбиения множества (Partition Problem)
—На практике часто решается жадным алгоритмом LPT (Longest Processing Time first)
👇🏻 Скелет решения предложили в комментах.
💬 Делитесь своими решениями: какой алгоритм выбрали бы для продакшена, а какой — для интервью?
🐸 Библиотека джависта
#CoreJava
Иногда даже повседневные задачи превращаются в отличный повод вспомнить алгоритмы и потренировать мозг. Особенно если представить, что это часть сервиса планирования нагрузок или распределения вычислений в распределённой системе.
🔹 Условие
— У вас есть N задач, каждая с временем выполнения t[i].
— Есть K воркеров (потоков, серверов), которые могут выполнять задачи параллельно, но каждый воркер может брать только одну задачу за раз.
Нужно распределить задачи между воркерами так, чтобы время завершения всех задач было минимальным.
t = [3, 7, 2, 5, 4]
K = 2
— если раздать задачи просто по очереди, один воркер закончит через 14 секунд, другой — через 7.
— а если распределить умнее (например, [7,3] и [5,4,2]), итоговое время — 10 секунд.
🔹 Уточнения
— N может достигать 10⁴
— K до 100
— Допустимо небольшое отклонение от оптимума (например, ≤5%)
— Требуется O(N log N) или лучше
— Можно предусмотреть балансировку “на лету” при поступлении новых задач
🔹 Вопрос
Какой алгоритм примените для минимизации времени выполнения?
Подумайте о вариантах:
— жадный
— динамическое программирование
— приближённые решения (если N велико)
🔹 Подсказки
—
—
👇🏻 Скелет решения предложили в комментах.
#CoreJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏2🔥1
Наш подписчик спрашивает:
Работаю джуном на проекте на Spring Boot и Hibernate. ORM вроде понятен — есть аннотации, Entity, Repository, всё работает «из коробки». Но недавно на собеседовании спросили, как работает JDBC под капотом, что такое PreparedStatement, и я понял, что знаю это очень поверхностно.
Возникает вопрос — стоит ли вообще углубляться в JDBC, если в проектах всё делается через ORM? Или это знания “для галочки”?
🔹 Что думаете?
Нужно ли джуну копать в сторону JDBC и понимать, как Hibernate общается с базой? Или достаточно знать ORM-уровень и двигаться дальше — в кэширование, оптимизацию запросов и т.п.?
— В каких кейсах применяете JDBC
— Насколько часто ORM «прячут» ошибки, которые проще понять через нативный SQL
— Что посоветуете джунам: когда стоит спуститься на уровень JDBC и зачем это вообще нужно
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥1
И вновь прошла насыщенная рабочая неделя. Сегодня немного сменилась локация, гуляю вдоль средиземного моря.
Как проходят ваши выходные?
Отправляйте фото в комментарии👇🏻
#DevLife
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😍2👍1
Когда в проекте сотни файлов и десятки классов — навигация превращается в хаос. А вы знали, что IDEA помнит все места, где вы недавно были?
🔹 Что делает
— Показывает список недавних мест в коде (не просто открытых файлов)
— Можно искать по содержимому, не только по имени
— Можно найти только изменённые фрагменты
🔹 Зачем это нужно
— Молниеносно возвращает к недавнему месту редактирования
— Полезно при ревью, багфиксе или исследовании сложных фрагментов
— Работает лучше, чем "Recent Files", ведь учитывает даже переходы внутри одного файла
🔹 Как использовать
— Нажмите
Ctrl+Shift+E
(Windows/Linux) или ⌘+Shift+E
(macOS)— Появится список последних мест где вы были. Можно также искать лишь изменённые фрагменты (повторно нажмите то же сочетание)
— Начните вводить фрагмент кода или имени и IDEA сама сузит поиск
#Enterprise
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4❤1
Forwarded from Библиотека собеса по Java | вопросы с собеседований
ConcurrentHashMap использует
В отличие от Collections.synchronizedMap(...), который
#concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2👏1