Всегда ли хватает стандартной реализации equals() и hashCode()? Контекст: методы Java, отвечающие за сравнение объектов и вычисление их хеш-кодов Стандартный equals() сопоставляет ссылки, то есть проверяет, указывают…
Подходы к обработке исключений в Java: try/catch и предварительная проверка условий Обработка через try/catch: перехват исключения и выполнение нужной логики непосредственно во время работы программы Предварительная…
Коллекции в Java на практике Коллекции представляют собой наборы объектов с удобными средствами для их хранения и обработки К основным интерфейсам относятся List, Set и Map — каждый задаёт свою структуру и гарантии…
Использовать Spring AOP — аспектно-ориентированный подход для перехвата вызовов Создать аспект с аннотацией @Around и применить его к целевым методам Зафиксировать System.nanoTime() непосредственно перед вызовом и…
Контейнеризация Java-приложений с помощью Docker Docker представляет собой платформу для изоляции приложений внутри контейнеров Сначала создают Dockerfile, в котором выбирают базовый образ, как правило openjdk В…
Java-коллекции, в том числе HashMap, используют hashCode() для ускорения поиска Правило контракта таково: при результате equals() true метод hashCode() обязан возвращать одинаковое значение Если правило нарушено,…
Как параллельно получить данные из 4 независимых систем через CompletableFuture? Java concurrency и асинхронное выполнение CompletableFuture — оболочка для асинхронных вычислений Запускать каждый запрос в пуле потоков…
логирование с помощью фреймворков: Log4j2, SLF4J, Logback настройка уровней: ERROR, WARN, INFO, DEBUG вывод данных в файлы, консоль, удалённые сервисы (например, ELK, Splunk) структурирование сообщений:…
CI/CD автоматизирует сборку, тестирование и доставку приложения настроить Git и определить триггеры запуска pipeline подключить CI-сервер: Jenkins, GitLab CI или GitHub Actions запускать сборку и юнит-тесты…
Как работает стирание типов (type erasure) в дженериках? механизм компиляции дженериков, при котором конкретные типы удаляются обобщённый код преобразуется в единый байт-код без сведений о параметрах типов…
Жизненный цикл Spring Beans Spring Bean — объект, жизненным циклом которого управляет Spring-контейнер этап 1: создание экземпляра с помощью конструктора или фабрики этап 2: внедрение зависимостей (DI через…
Инструменты CI/CD для автоматизации сборки и деплоя CI/CD представляет собой практику автоматизации сборки, тестирования и деплоя. Jenkins: расширяемый open-source-инструмент с плагинами для любых этапов конвейера…