Java Portal | Программирование
12.6K subscribers
1.07K photos
86 videos
35 files
924 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Современный Java, объяснённый просто (с примерами)

Многие думают, что Java сложный или многословный язык.
Но в последних версиях (Java 17 → 21 → 25) язык сильно изменился.

4 современных фичи, которые делают жизнь разработчика проще:

1. Records (меньше повторяющегося кода)
Раньше приходилось писать конструкторы, геттеры, toString…

Достаточно одной строки — всё это генерируется автоматически.

2. Sealed classes (контролируемое наследование)
Позволяет ограничить, какие классы могут наследоваться от другого.

Никто больше не сможет реализовать Shape, кроме разрешённых. Безопасность и ясность.

3. Pattern Matching (более мощный switch)
Теперь switch понимает типы, а не только значения.

Чище, чем использовать instanceof и касты повсюду.

4. Virtual Threads (лёгкая конкуренция)
С Java 21 появились виртуальные потоки → можно создавать тысячи потоков без падения системы.

Идеально для приложений с огромным количеством соединений (APIs, микросервисы).

Java больше не тот тяжёлый язык, каким был раньше.

А с выходом Java 25 как LTS он приносит ещё больше улучшений для разработчиков.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍205
В Java на собеседованиях могут спросить про альтернативы 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
- Ключи из enumEnumMap
- Всё остальное → HashMap по умолчанию

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Google увеличил функционал Agent Development Kit для Java, внедрив поддержку LangChain4j. Теперь Java-инженеры способны подключать модели OpenAI, Anthropic, Mistral и прочие, разрабатывая многоагентные решения с более гибким контролем и усовершенствованной логикой.

Подробности: тык

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Вопрос для собеседования Java/Backend:

Как современные приложения оставляют вас залогиненным без хранения сессии на сервере? 🫖


Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT

Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.

JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.

Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра

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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
Вопрос из Java-собеседования (сценарный):

Ты используешь @Autowired для field injection в Spring-проекте. Это просто и работает.

@Component
public class UserService {

@Autowired
private UserRepository userRepository;
}


Тимлид просит тебя отрефакторить это, так как field injection часто считается плохой практикой.

Подумай о минусах field injection:

→ Visibility: скрывает обязательные зависимости класса.
→ Testability: усложняет unit-тестирование, часто требует рефлексии.
→ Runtime Issues: может привести к NullPointerException, если зависимость отсутствует.
→ Design: поощряет классы с чрезмерной ответственностью (нарушение SRP).

Какой рекомендуемый вариант?

→ Constructor Injection.

Зависимости явно передаются при создании объекта, делая их обязательными.

@Component
public class UserService {
private final UserRepository userRepo; // final!

public UserService(UserRepository userRepo) {
this.userRepo = userRepo;
}
}


Почему Constructor Injection лучше?

→ Explicit: явно показывает, что нужно классу для работы.
→ Guaranteed: приложение не поднимется, если зависимости нет.
→ Immutable: final-поля безопаснее и дружелюбнее к многопоточности.
→ Testable: легко замокать и прокинуть зависимости в тестах.

Это приводит к более надежному и поддерживаемому коду.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3💊1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁178
Как вы решаете вопрос с покрытием?
Почти в каждом проекте висит задача: поднять покрытие до 70%.
И почти в каждой команде никто не хочет этим заниматься.

Explyt – AI-плагин для Java и Kotlin разработчиков, который снимает эту боль.
Он генерирует юнит-тесты прямо в IDE: по коду, по runtime-трассам, по спекам. И делает это так, как будто реально вник в проект.

📌 Что умеет:
- создаёт осмысленные тесты для Java и Kotlin-кода
- поддерживает JUnit 4/5, TestNG, кастомные фреймворки
- превращает execution trace в автотесты
- предлагает фиксы, если сгенерированный тест падает
- есть режим агента, где AI сам меняет код, запускает тесты и ищет ошибки

📦 Плагин доступен:
- через JetBrains Marketplace
- или напрямую с сайта разработчика

🎁 30 дней бесплатного доступа – просто пользуйтесь.
👉 Попробовать на своём проекте
🤣41👍1🔥1
Топ-53 задач на Java для подготовки к собеседованиям

В статье собраны самые популярные задания по Java, полезные курсы по DevOps, Linux и паттернам проектирования, а также список вопросов для подготовки к техническим интервью.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42