В Java на собеседованиях могут спросить про альтернативы
Ниже три мощные альтернативы
Используется для временных кэшей, хранения слушателей, метаданных, привязанных к жизненному циклу объекта.
Используется во фреймворках, парсерах и графах зависимостей, где важна физическая идентичность объекта.
Использовать
Используется всегда, если ключи берутся из одного
Быстрый гайд по выбору:
- Нужно автоочищение кэша →
- Нужна идентичность объектов (
- Ключи из
- Всё остальное →
👉 Java Portal
HashMap
, так как он не всегда самый быстрый или экономичный по памяти и иногда приводит к скрытым проблемам с производительностью, утечкам памяти и сложным багам. Ниже три мощные альтернативы
HashMap
и ситуации, когда стоит их использовать. WeakHashMap
: Самоочищающийся кэш HashMap
часто применяют для кэширования, но он держит сильные ссылки на ключи, мешая GC освободить память даже тогда, когда объект уже больше нигде не используется. Это может привести к утечкам памяти. WeakHashMap
хранит ключи через слабые ссылки. Если на объект-ключ больше нет сильных ссылок, GC может удалить его, и запись в мапе исчезнет автоматически. Используется для временных кэшей, хранения слушателей, метаданных, привязанных к жизненному циклу объекта.
IdentityHashMap
: Когда объекты "равны", но не одинаковы HashMap
проверяет ключи через метод .equals()
. Если у вас два объекта с одинаковыми данными, но это разные экземпляры (например, два Person
с одинаковым именем, но разными записями), то HashMap
перезапишет значение. IdentityHashMap
сравнивает ключи только по ссылке (==), игнорируя .equals()
. Разные объекты всегда будут разными ключами, даже если у них одинаковые данные. Используется во фреймворках, парсерах и графах зависимостей, где важна физическая идентичность объекта.
EnumMap
: Оптимизированный вариант для enum-ключей Использовать
enum
как ключ в HashMap
неэффективно. Нужно считать хэши, обрабатывать коллизии, хотя набор ключей фиксирован на этапе компиляции. EnumMap
специально создан для enum-ключей. Внутри он работает через массив, используя ordinal() значения enum в качестве индекса. Это даёт настоящие O(1)-операции и экономит память. Используется всегда, если ключи берутся из одного
enum
. Быстрый гайд по выбору:
- Нужно автоочищение кэша →
WeakHashMap
- Нужна идентичность объектов (
==
) → IdentityHashMap
- Ключи из
enum
→ EnumMap
- Всё остальное →
HashMap
по умолчаниюPlease open Telegram to view this post
VIEW IN TELEGRAM
👍12
Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:
Выбирай своё направление:
Please open Telegram to view this post
VIEW IN TELEGRAM
Google увеличил функционал Agent Development Kit для Java, внедрив поддержку LangChain4j. Теперь Java-инженеры способны подключать модели OpenAI, Anthropic, Mistral и прочие, разрабатывая многоагентные решения с более гибким контролем и усовершенствованной логикой.
Подробности: тык
👉 Java Portal
Подробности: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
InfoQ
Google's Agent Development Kit for Java Adds Integration with LangChain4j
The latest release of the Agent Development Kit for Java, version 0.2.0, marks a significant expansion of its capabilities through the integration with the LangChain4j LLM framework, which opens it up to all the large language models supported by the framework.
❤4👍2
Вопрос для собеседования Java/Backend:
Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT
Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.
JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.
Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.
Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.
👉 Java Portal
Как современные приложения оставляют вас залогиненным без хранения сессии на сервере?🫖
Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT
Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.
JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.
Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.
Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4
1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Держите репозиторий на GitHub где собрана отличная подборка бесплатных материалов по программированию.
Здесь собраны сотни книг по самым разным направлениям: от веб-разработки и геймдева до AI, блокчейна, создания приложений и даже prompt engineering.😎
👉 Java Portal
Здесь собраны сотни книг по самым разным направлениям: от веб-разработки и геймдева до AI, блокчейна, создания приложений и даже prompt engineering.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2