Этап 10 из 11 · ≈ 8 ч

Сборка, тесты и логирование

Основа с Junior

Maven и Gradle, JUnit 5 и Mockito, логирование через SLF4J.

Что важно знать

  • Maven — декларативный, жизненный цикл; Gradle — гибкий, быстрый с кэшем.
  • JUnit 5, параметризованные тесты, Mockito для подмены зависимостей, AssertJ для читаемых проверок.
  • SLF4J + Logback, параметризованные сообщения, без конкатенации.

Критерии освоения

Junior ≈ 8 ч

  • Собирает проект в Maven или Gradle и управляет зависимостями
  • Пишет тесты на JUnit 5 с Mockito и AssertJ
  • Логирует через SLF4J с правильными уровнями

Практика. Создать проект на Gradle с модулем бизнес-логики, тестами JUnit 5 и Mockito и отчётом о покрытии.

Middle ≈ 4 ч

  • Настраивает многомодульную сборку и разрешает конфликты версий зависимостей

Практика. Разобрать конфликт версий транзитивных зависимостей в многомодульном проекте и зафиксировать версии через BOM.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Чем unit-тест отличается от integration-теста?Junior

Unit-тест проверяет единицу логики изолированно: быстро, без БД и сети, зависимости заменены моками. Интеграционный проверяет связку компонентов с реальной инфраструктурой: БД, брокер, HTTP. Медленнее, но ловит ошибки стыков.

Полный разбор
Почему в логировании предпочитают log.debug("user {} order {}", userId, orderId) вместо конкатенации строк?Middle

Отложенное форматирование: строка собирается, только если уровень включён. Конкатенация вычисляется до вызова всегда — на горячем пути с выключенным debug это лишние аллокации.

Полный разбор
Что такое паттерн Singleton и как сделать его потокобезопасным?Senior

Singleton — единственный экземпляр с глобальной точкой доступа. Потокобезопасные варианты: enum (проще всего, защищён от сериализации и рефлексии), static holder (ленивый, безопасность даёт инициализация класса), double-checked locking с volatile.

Полный разбор
Зачем в логировании существуют уровни вроде DEBUG и ERROR?Junior

Уровни нужны, чтобы фильтровать записи по важности: в продакшене — только значимое, подробности — для отладки.

Полный разбор
Зачем нужны Maven и Gradle и как устроена сборка Java-проекта?Junior

Система сборки скачивает зависимости нужных версий из репозитория (Maven Central), компилирует код, запускает тесты и упаковывает результат (jar). Maven описывает проект декларативно в pom.xml с фиксированным жизненным циклом (compile → test → package →…

Полный разбор
Как написать модульный тест на JUnit 5?Junior

Тест — метод с @Test в классе в src/test/java. Проверки — assertEquals(ожидаемое, фактическое), assertTrue, assertThrows для исключений; удобнее — AssertJ (assertThat(x).isEqualTo(5)). Подготовка — @BeforeEach. Один тест — одно поведение, имя описывает…

Полный разбор

Разборы темы

Документация

← Вся карта «Java»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования