Перейти к основному содержимому
DevScallix
← ПрограммыПланируется

Advanced Java Backend

Глубина по JVM, concurrency, JPA/SQL и тестированию, чтобы самостоятельно вести реальные сервисы.

Эта программа планируется и ещё не включена в расписание. Дата, цена и группа не объявлены. Если вы оставите интерес, мы свяжемся, когда программа будет запланирована, или чтобы обсудить индивидуальный формат.

Цель

Программа помогает перейти от уровня junior к разработчику, который самостоятельно ведёт реальный сервис. Основной упор: как работают JVM и память, как правильно строить concurrency и работу с базой данных и как диагностировать проблемы в условиях, близких к production. Code review отрабатывается с двух сторон: как автор и как ревьюер.

Для кого

  • Junior-разработчики с опытом Java не менее 1 года, писавшие CRUD-сервисы на Spring Boot
  • Инженеры, которые хотят понимать, почему код ведёт себя именно так (память, потоки, планы запросов)
  • Те, кто хочет вести задачу от начала до конца и защищать свои решения на review
  • Инженеры, которые системно закрывают пробелы на пути к уровню middle

Для кого не подходит

  • Полные новички в Java: им лучше начать с Java Backend Career Track
  • Те, кто ищет только рецепты настройки фреймворков: программа работает с глубинными основами
  • Те, кто ищет Kubernetes и автоматизацию инфраструктуры: это не тема программы

Требования

  • Уверенное владение синтаксисом Java 17+, коллекциями, исключениями и generics
  • Практика с простым REST-сервисом на Spring Boot и базовым CRUD на JPA
  • Основы SQL: JOIN, GROUP BY и понятие индекса
  • Знакомство с Git и процессом Pull Request

Что вы сможете делать

Что вы сможете делать

  • Объяснить heap, stack, GC и загрузку классов простой схемой и сделать первые выводы из heap dump
  • Выбрать между executor, CompletableFuture и virtual threads для задачи и обосновать выбор
  • Воспроизвести race condition или deadlock тестом и thread dump, затем исправить
  • Находить N+1, проблемы lazy loading и границ транзакции и устранять их на уровне JPA/SQL
  • Читать план EXPLAIN и обосновывать изменение индекса или запроса измерениями
  • Построить разумную стратегию тестирования из unit-, slice- и integration-тестов
  • Диагностировать проблему производительности, близкую к production, по логам, метрикам и профайлеру
  • Подготовить Pull Request и конструктивно проревьюить чужой

Ни одна образовательная программа не может гарантировать трудоустройство или повышение.

Учебный план

Учебный план

  1. 01

    JVM и память

    Как JVM управляет кодом и памятью и как исследовать проблемы с памятью на основе измерений.

    • Heap, stack, metaspace и время жизни объекта
    • Сборщики мусора (G1, ZGC) и понятие пауз
    • Загрузка классов и JIT-компиляция
    • Чтение heap dump и GC-логов
    • Типичные источники утечек (кэши, listener, ThreadLocal)

    Практическая лабораторная: Проанализировать сервис с намеренной утечкой памяти по heap dump, найти источник и исправить.

  2. 02

    Concurrency и virtual threads

    От Java Memory Model до virtual threads: как писать корректный и безопасный параллельный код.

    • Java Memory Model, happens-before и видимость
    • synchronized, Lock, atomic и concurrent-коллекции
    • ExecutorService, CompletableFuture и structured concurrency
    • Virtual threads: когда они полезны, проблема pinning
    • Диагностика deadlock, livelock и starvation
    • Чтение thread dump

    Практическая лабораторная: Создать race condition в коде, обновляющем общий счёт, воспроизвести его тестом, затем исправить двумя разными способами и сравнить.

  3. 03

    JPA и Hibernate в глубину

    Безопасно работать с JPA нельзя, не зная, как на деле ведут себя persistence context, flush и lazy loading.

    • Persistence context, dirty checking и режимы flush
    • Lazy и eager загрузка, проблема N+1
    • Fetch join, entity graph и projection
    • Batch insert/update и optimistic locking
    • Границы транзакций и причины LazyInitializationException

    Практическая лабораторная: Измерить по SQL-логам endpoint с проблемой N+1, исправить тремя способами и сравнить число запросов.

  4. 04

    SQL и производительность запросов

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

    • Чтение EXPLAIN / EXPLAIN ANALYZE
    • B-tree индексы, составные индексы и порядок столбцов
    • Covering index и селективность
    • Пагинация: offset и keyset
    • Уровни изоляции и поведение блокировок

    Практическая лабораторная: Проанализировать медленный запрос на большой таблице по плану, добавить индекс и показать измерения до и после в письменной записке.

  5. 05

    Стратегия тестирования

    Определяем, что тестировать на каком уровне, чтобы тесты оставались дешёвыми и надёжными.

    • Пирамида тестирования и её ограничения
    • JUnit 5, Mockito и чрезмерное использование моков
    • Integration-тесты на реальной БД с Testcontainers
    • Slice-тесты (@DataJpaTest, @WebMvcTest)
    • Причины flaky-тестов и как их устранять

    Практическая лабораторная: Написать документ со стратегией тестирования для существующего сервиса и добавить integration-тест на Testcontainers для критичного сценария.

  6. 06

    Чистый код в растущей кодовой базе

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

    • Структура пакетов и правила зависимостей между слоями
    • Отделение доменной модели от сервисного кода
    • Техники рефакторинга и изменения под защитой тестов
    • Проектирование исключений и модели ошибок
    • Как сделать технический долг видимым

    Практическая лабораторная: Разбить сложный сервисный класс на небольшие части с чёткой ответственностью, сохраняя зелёные тесты.

  7. 07

    Диагностика проблем, близких к production

    Системный подход к медленной работе, росту памяти и тихим сбоям.

    • Structured logging и correlation ID
    • Метрики Micrometer и ключевые сигналы
    • Чтение профайлеров и flame graph
    • Исчерпание connection pool и насыщение thread pool
    • Метод диагностики на основе гипотез

    Практическая лабораторная: Продиагностировать намеренно сломанный сервис (исчерпание пула, медленный запрос) только по логам, метрикам и профайлеру и написать postmortem.

  8. 08

    Практика code review

    Review — это и навык, и командная привычка; отрабатываем её с обеих сторон.

    • Подготовка небольших и понятно описанных Pull Request
    • Чек-лист review: корректность, читаемость, тесты, риск
    • Конструктивная обратная связь и ответы на неё
    • Сигналы безопасности и производительности на review

    Практическая лабораторная: Письменно проревьюить предложенный Pull Request, затем аргументированно ответить на комментарии к собственному Pull Request.

Практические задания

  • Анализ heap dump с письменным выводом
  • Тест, воспроизводящий и затем защищающий от concurrency-ошибки
  • Измерение и сокращение числа запросов JPA
  • Обоснование решения по индексу через EXPLAIN
  • Review двух Pull Request

Результаты для портфолио

  • Сервис с нагрузочным тестом и краткой запиской о ёмкости
  • Документ о стратегии тестирования и тесты на Testcontainers
  • Письменный postmortem диагностики производительности
  • Портфолио-образец письменных code review

Как оценивается обучение

  • Code review ваших Pull Request ментором
  • Защита postmortem диагностики
  • Практическая проверка по concurrency и JPA
  • Короткое техническое обсуждение, где вы объясняете собственный код

Инструменты и технологии

  • Java 21
  • Spring Boot
  • PostgreSQL
  • JUnit 5 и Mockito
  • Testcontainers
  • VisualVM и JDK Flight Recorder
  • Eclipse MAT
  • Micrometer
  • Git

Последовательность уровней

До
До этого: Java Backend Career Track или не менее 1 года практического опыта на уровне junior.
После
После: Enterprise Spring Boot, затем Microservices и Distributed Systems.
Длительность и формат
Длительность и формат ещё не определены; программа планируется и не включена в расписание.

Частые вопросы

Частые вопросы

Доступна ли программа сейчас?

Нет. Программа планируется и пока не стоит в расписании. Даты и цены не объявлены. Вы можете оставить интерес или запросить консультацию.

Я не проходил Java Backend Career Track. Можно присоединиться?

Возможно, если у вас есть не менее 1 года реальной работы с Java и Spring Boot. Если основы слабые, лучше сначала пройти Career Track. На консультации можно вместе оценить ваш уровень.

Нужна ли Java 21 для virtual threads?

Да, программа построена на Java 21. В более ранних версиях virtual threads нет, но остальные темы (JVM, JPA, SQL, тестирование) относятся и к ним.

Будет ли сертификат?

Сертификат не обещается. Оценка проходит в форме обратной связи ментора, review и защит и носит рекомендательный характер.

Оставить интерес

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

Как с вами связаться?