Java с нуля · персональный AI-наставник

От первой строки Java
к своим сервисам с AI.

Персональный AI-наставник помогает разобраться в твоём коде. В программе — банковский сервис, собственный маркетплейс и Spring AI + RAG на практике.

Первый урок — сразу. Без регистрации, карты и установки IDE.

300+ пользователей

уже присоединились к MentorSkillAI

AI-наставник рядомПример работы
Твой этап: первые строки кода

Урок: вывод текста

Опираемся на тему урока: строки, print и println.

Задача

Выведи «Кот любит код» и перейди на новую строку.

Твоя попыткаНужна правка
  1. System.out.print("Кот любит код");
Твой наставникПодсказка

Текст выведен верно. Осталось выполнить вторую часть: перейти на новую строку. Какой из двух методов из урока поможет?

AI направляет вопросом. Следующий шаг — твоё решение.

Нажми на шаг — посмотри, как меняется помощь. Это демонстрация, а твоя практика начинается в уроке.

Понятный путь с нуля

Новая тема опирается на то, что было раньше.

Два проекта для портфолио

От учебной задачи до собственного сервиса.

AI внутри твоего приложения

Подключение модели и работа с документами.

Два проекта для твоего портфолио

Твой код становится
работающим сервисом.

Банковский сервис развиваешь по ходу backend-программы. Маркетплейс создаёшь самостоятельно — от требований до запуска.

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

Финтех на Java

Банковский сервис

Каждая новая тема — новое улучшение твоего приложения.

Реализуй счета, переводы и историю операций. Подключи базу данных, защити доступ и добавь события о переводах.

  • Счета, переводы и история
  • Транзакции и права доступа
  • Тесты, запуск и уведомления
  • Java
  • Spring Boot
  • PostgreSQL
  • Docker
  • Kafka
Как растёт твой проект
  1. Первый API. Счета, переводы и история в памяти.
  2. Надёжность данных. PostgreSQL, транзакции и повторные запросы.
  3. Защита. Вход и доступ только к своим счетам.
  4. Проверка и запуск. Docker и тесты с настоящей базой.
  5. События. Уведомления о завершённых переводах через Kafka.
Иллюстрация маркетплейса: каталог, заказы и база данных; AI-функция находит информацию в документах. Проект 02 · самостоятельно

Твой проект по техническому заданию

Собственный маркетплейс

От требований до запуска — твои инженерные решения.

Спроектируй серверную часть площадки с несколькими продавцами. Собери каталог, корзину и заказы, проверь остатки и права доступа.

  • Каталог и управление товарами
  • Заказы, остатки и отмена
  • Свои тесты и инструкция запуска
  • Spring Boot
  • PostgreSQL
  • Spring Security
  • Docker
  • Spring AI + RAG
Твой путь от ТЗ до запуска
  1. Требования и модель. Определи сущности, роли и API.
  2. Каталог. Продавец управляет своими предложениями.
  3. Заказы. Проверь остатки, повторы запросов и отмену.
  4. Тесты. Бизнес-правила, HTTP, права и настоящая база.
  5. Демонстрация. Подготовь запуск и покажи сценарий через API.
  6. Новое требование. Измени проект и объясни своё решение.

В портфолио — код, тесты и инструкция запуска.
На собеседовании — конкретные решения, о которых ты можешь рассказать.

Посмотреть программу

Spring AI + RAG · в твоём проекте

Учись с AI.
Создавай приложения с AI.

AI-наставник помогает тебе освоить Java. А в модуле Spring AI ты сам добавишь AI-функции в свой маркетплейс.

Умный поиск и ответы по документам

Подключи языковую модель. Научи приложение находить нужные материалы и формировать ответ с указанием источников. Проверь качество ответов и поведение при сбоях.

Дополнительный этап после самостоятельного маркетплейса.

Твой маркетплейсПример функции

Как отменить заказ?

  1. 01
    Находит нужное правило

    RAG ищет подходящий фрагмент в документах маркетплейса.

  2. 02
    Формирует ответ

    Spring AI передаёт вопрос и найденный материал модели.

  3. 03
    Показывает источник

    Пользователь получает объяснение и ссылку на правило.

Ты проверишь и сложные случаи: нужной информации нет, источник не подходит или модель недоступна.

Больше, чем обычный AI-чат

Всё уже собрано,
чтобы ты научился.

Программа, практика и AI-наставник работают вместе. Ты сосредоточен на коде — маршрут и контекст помощи уже на платформе.

Что важно для обученияОбычный AI-чатВ MentorSkillAI

Понятный маршрут

Обычный AI-чатОтдельные вопросы и ответы — без встроенного курса с практикой.

От простого к сложному. Уроки выстроены последовательно: новая тема опирается на предыдущий материал.

Помощь с учётом контекста

Обычный AI-чатОтветы в переписке — без встроенного контекста курса.

AI разбирает именно твою попытку. Он учитывает текущий урок, материал до него в программе и твой код.

Навык решать самому

Обычный AI-чатГотовый ответ может появиться раньше, чем ты разберёшься сам.

AI помогает разобраться самому. Нажми «Проверить без решения»: получи подсказку, подумай и исправь свой код. Полный разбор тоже доступен.

Свой следующий шаг

Обычный AI-чатИстория сообщений вместо понятного следующего шага в курсе.

План по твоему прогрессу. Вернись к незавершённой задаче или продолжи курс. Доступно после регистрации.

Учись самостоятельно, обсуждай вместе

Под уроками и заданиями можно обсуждать решения с другими участниками.

Попробовать на первой задаче

Продолжай с понятного шага

Следующий шаг —
уже перед тобой.

Не нужно каждый раз вспоминать, где остановился. В профиле тебя ждёт следующий шаг по прогрессу: вернуться к попытке, закончить задание или перейти к уроку.

Выбери время для занятия — план поможет сфокусироваться на ближайших действиях. Доступно в профиле после регистрации.

Начать бесплатно

Программа курса

От первого урока — к двум своим проектам

Не нужно гадать, что учить дальше. Программа выстроена так, чтобы каждая новая тема опиралась на предыдущие. Сначала — понятная база, затем — инструменты и backend-разработка.

Разобрал тему Закрепил в задаче Перешёл дальше

Шаг 01

Освой Java с нуля

Читай и пиши код, понимай ошибки и решай задачи. Новая тема опирается на предыдущую.

Синтаксис · ООП · коллекции · обработка данных

Шаг 02

Собери банковский сервис

Переноси изученное в одно приложение: от первого API до базы данных, защиты и событий.

Git и тесты · Spring Boot · PostgreSQL · Docker · Kafka

Шаг 03

Создай свой маркетплейс

Самостоятельно пройди путь от технического задания до работающего backend-проекта.

Каталог · продавцы · заказы · остатки · права доступа

Шаг 04

Добавь AI-функции

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

Spring AI · смысловой поиск · RAG · проверка качества

Одна последовательная программа · 24 модуля

Подробный список модулей

Раскрой модуль, чтобы увидеть темы и названия уроков. От основ Java — к самостоятельному проекту и AI-интеграции.

01Основы программирования на Java

Напиши первые программы: расчёты, условия, методы, циклы и поиск в массивах.

Первая программа и работа с платформой

  1. Вводная лекция (описание курса и как пользоваться образовательной платформой)
  2. Твой первый код на Java! (System.out.print)
  3. Знакомимся с переменными (основы)
  4. Узнаём больше о переменных (основы с арифметикой)
  5. Комментарии: объясняем намерение и отключаем код
  6. Работаем со строками в Java (основы)
  7. Каркас Java-программы: class и main
  8. Как искать ошибку в первом коде
  9. Первый самостоятельный расчёт и отчёт
  10. Как выполняется Java: исходный код, JDK и JVM
  11. После первого расчёта: следующий шаг
  12. Карьера Java-разработчика: как читать обзор 2024–2025 годов

Типы, значения и состояние программы

  1. Выбор типа данных и допустимые значения
  2. Состояние программы: инициализация, копирование и присваивание
  3. Ссылки на строки: копирование и переназначение
  4. Ключевое слово final (основы)

Числовые и логические выражения

  1. Деление, остаток и приоритет вычислений
  2. Преобразования чисел и тип выражения
  3. Переполнение и точность вычислений
  4. Составное присваивание: обновляем состояние
  5. Инкремент и декремент
  6. Операторы сравнения
  7. Логические операторы

Ветвления и методы

  1. Условные операторы if/else
  2. Условное выражение ?: — выбираем значение
  3. Выбор действий: switch и break
  4. Выбор значения с помощью switch
  5. Методы: параметры, результат и повторное использование

Циклы: повторение и обработка последовательностей

  1. Цикл while
  2. Цикл do-while
  3. Цикл for
  4. Вложенные циклы: строки, столбцы и пары
  5. Операторы break и continue
  6. Пошаговая отладка метода и цикла

Массивы и основы поиска

  1. Одномерные массивы
  2. Обход массива: сводки и копирование
  3. Массивы массивов: таблицы и обход
  4. Arrays: копирование, заполнение и представление
  5. Линейный поиск и проверка границ
  6. Бинарный поиск и отсортированность
  7. Стоимость обработки и библиотечная сортировка
02Прикладная объектная модель

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

Объекты: состояние, методы и жизненный цикл

  1. Понятие класса и объекта
  2. Поля объекта и начальные значения
  3. Методы объекта: состояние, параметры и результат
  4. Конструкторы: создание и допустимое состояние
  5. Порядок инициализации: поля → конструктор (основы)
  6. Ключевое слово this и вызов this() из конструктора
  7. Ссылки, null и безопасный доступ
  8. Одинаковая ссылка и одинаковое значение String
  9. Передача параметров в Java: всегда по значению
  10. final-поля и изменяемые объекты
  11. Локальный var и неизменный тип переменной

Файлы, пакеты и подключение библиотек

  1. Ключевое слово package и пространственная организация проекта
  2. Оператор import и обзор стандартных пакетов
  3. Метод main как точка входа программы

Защита состояния и общие члены класса

  1. Доступ к состоянию и границы пакета
  2. Инкапсуляция: защищаем правило объекта
  3. Общее и личное состояние: static-поля
  4. Статические методы (static method)
  5. Константы класса: static final и область действия

Стандартные значения, вызовы и создание объектов

  1. Обёртки примитивов: объектное значение и отсутствие значения
  2. Ключевые методы обёрток, границы и преобразования
  3. Автобоксинг и распаковка — неявные преобразования, сравнение и влияние кэша
  4. Перегрузка методов: сигнатуры и понятные вызовы
  5. Переменное число аргументов: varargs
  6. java.util.Objects — requireNonNull, безопасные equals/hash и чистый код проверок
  7. Статические фабрики vs конструкторы — of()/valueOf(), имена, кэш, контроль экземпляров

Наследование, переопределение и Object

  1. Наследование: отношение is-a и доступное поведение
  2. Ключевое слово super и доступ к членам родителя
  3. Вызов конструктора родителя super()
  4. Object: общий корень классов
  5. Фактический класс объекта: getClass
  6. Переопределение методов (@Override)
  7. Доступ при наследовании: protected и границы пакета
  8. Метод toString() — человекочитаемое представление
  9. equals и hashCode: контракт и равенство по ссылке

Абстрактный класс, интерфейс и выбор контракта

  1. Абстрактные классы и абстрактные методы
  2. Интерфейсы и implements — объявление контракта и его реализация
  3. Выбор между интерфейсом и абстрактным классом

Полиморфизм, приведение и проверка типа

  1. Полиморфизм и динамическое связывание
  2. Приведение типов — upcasting/downcasting: когда безопасно и зачем нужно
  3. instanceof — проверка типа перед приведением
  4. Сопоставление с образцом в instanceof (Java 16+)

Композиция и контракты взаимодействия

  1. Композиция vs наследование
  2. Делегирование — расширяем поведение без жёсткой иерархии
  3. Принцип подстановки Лисков (LSP, вводное) — корректные подтипы без сюрпризов для клиента

Равенство, неизменяемость и копирование

  1. Равенство объектов по значениям полей
  2. Неизменяемые объекты и объекты-значения — преимущества неизменяемости в моделях
  3. Копирование объекта: конструктор и фабрика
  4. Инварианты и защитные копии (defensive copy) — безопасные геттеры и сохранность состояния

Стандартные формы моделей: enum и record

  1. Перечисления (enum) — свойства, методы, конструкторы и использование в switch
  2. record — компактные неизменяемые классы, автогенерация equals/hashCode/toString, ограничения (Java 16+)
03Текст, ошибки и ресурсы

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

Класс String и работа со строками

  1. Неизменяемость String и строковый пул
  2. Длина и доступ к символам — length(), charAt(), индексация и границы
  3. Подстрока и границы substring
  4. Склейка строк — оператор +, concat(), join() и repeat() (Java 11+)
  5. Поиск подстроки — indexOf(), lastIndexOf(), contains() и базовые паттерны
  6. Сравнение строк — equals(), equalsIgnoreCase(), compareTo()/compareToIgnoreCase() и влияние локали
  7. Регистр и обрезка — toUpperCase()/toLowerCase() (с Locale), trim(), strip()/stripLeading()/stripTrailing() и isBlank() (Java 11+)
  8. Форматирование строки и явная локаль
  9. Текстовые блоки: отступы и экранирование
  10. StringBuilder — создание, append(), insert(), когда выгоднее +
  11. StringBuilder — delete(), reverse(), управление буфером: capacity()/ensureCapacity()
  12. Unicode: char, кодовая точка и границы

Базовая обработка исключений

  1. Понятие исключений
  2. Чтение стека ошибки и её причины
  3. Блоки try-catch-finally
  4. Типичные исключения
  5. NullPointerException: предотвращение и контракт
  6. Множественный catch и объединение исключений

Продвинутая работа с исключениями

  1. Генерация исключений
  2. Проверяемые и непроверяемые исключения
  3. Документирование кода Javadoc — теги @param/@return/@throws, генерация и стиль команды
  4. Пользовательские исключения
  5. Лучшие практики работы с исключениями
  6. Освобождение ресурсов и try-with-resources
  7. Несколько ресурсов и ошибки закрытия

Шаблоны текста и ошибки формата

  1. Первый шаблон: Pattern и Matcher
  2. Разделение и замена текста по шаблону

Модель памяти Java (основы)

  1. Стек и куча
  2. Ссылки и управление памятью
  3. Обзор работы Garbage Collector
04Обобщённые типы и коллекции

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

Использование типизированного контракта

  1. Зачем нужны generics
  2. Использование обобщений на примере

Обзор коллекций и списки (List)

  1. Зачем нужны коллекции
  2. Интерфейс List и класс ArrayList
  3. LinkedList
  4. Итераторы и перебор коллекций

Свои generic-контракты и границы типов

  1. Свой обобщённый контейнер
  2. Обобщенные методы
  3. Почему List<Cat> не является List<Animal>
  4. Ограничение параметра типа
  5. Неизвестный тип: List<?>
  6. Границы чтения и записи: extends и super
  7. Стирание параметров типа
  8. Ограничения generics и опасность raw types

Алгоритмы и утилиты для коллекций

  1. Внешнее правило сравнения: Comparator
  2. Коллекции и эффективность (Big-O)
  3. Естественный и внешний порядок: Comparable и Comparator
  4. Сортировка коллекций
  5. Поиск в коллекциях
  6. Изменяемость, представления и копии коллекций
  7. Обобщённые типы в стандартной библиотеке

Множества (Set) и очереди

  1. Интерфейс Set и HashSet
  2. TreeSet
  3. LinkedHashSet
  4. Очереди (Queue) и Deque
  5. PriorityQueue

Map

  1. Интерфейс Map и пара «ключ-значение»
  2. HashMap – использование
  3. Хеш-таблица: коллизии и стабильный ключ
  4. LinkedHashMap
  5. TreeMap
  6. Переопределение equals() и hashCode()
05Последовательная обработка данных

Превращай наборы данных в полезные сводки с помощью Stream API.

Лямбда-выражения и функциональные интерфейсы

  1. Переход к функциональному стилю
  2. Анонимная реализация интерфейса
  3. Интерфейс с одной операцией
  4. Синтаксис лямбда-выражений
  5. Встроенные функциональные интерфейсы
  6. Ссылки на методы
  7. Составное правило сортировки
  8. Лямбда и область видимости
  9. Лямбда vs анонимный класс
  10. Побочные эффекты и чистые функции
  11. Функциональные обновления коллекций

Последовательные запросы к данным

  1. Значение или отсутствие: Optional
  2. Введение в Stream API
  3. Создание стримов
  4. Промежуточные операции: фильтрация и отображение
  5. Поиск, условия и ограничение результата
  6. Разворачивание вложенных данных
  7. Промежуточные операции: сортировка и уникальность
  8. Ленивый обход цепочки Stream
  9. Терминальные операции: итерация и свёртка
  10. Сбор потока в коллекцию
  11. Map и группировка результатов потока
  12. Примитивные стримы
  13. Строки документа и кодовые точки как потоки
  14. Преобразования Optional и резервный результат
  15. Самостоятельная сводка по данным
06Прикладная Java: проект и внешние значения

Собери небольшой Java-проект: каталог, чтение документов, точные расчёты и работа со временем.

Самостоятельный прикладной проект

  1. Контракт и граничные проверки
  2. Прикладной итог: учёт и отчёт

Точные десятичные значения

  1. Точные десятичные значения: BigDecimal
  2. Сравнение и округление десятичных значений

Календарные и временные значения

  1. Календарные даты
  2. Момент, локальное время и длительность
  3. Дата и время во внешнем тексте

Внешние документы и владение ресурсами

  1. Путь, байты и кодировка текста
  2. Небольшие текстовые файлы через Files
  3. Потоковое чтение текста и ресурс
  4. Байтовое копирование и граница прочитанного
  5. Чтение старого кода: сериализация объектов Java
  6. Разбор и подготовка внешнего документа
07Углубление языка и объектной модели

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

Инициализация и выбор вызова

  1. Static- и instance-блоки инициализации: назначение, порядок вызова (вместе с полями и конструктором)
  2. Порядок инициализации при наследовании — static/instance-блоки/конструкторы родителя и потомка
  3. Сокрытие статических членов и переопределение
  4. Как Java выбирает перегрузку

Развитие интерфейсного контракта

  1. Готовое поведение интерфейса: default-методы
  2. Статические методы интерфейса
  3. Конфликты унаследованных методов интерфейсов
  4. Вспомогательные закрытые методы интерфейса

Ограниченные иерархии и современный выбор

  1. Ограничиваем расширение иерархии: final и sealed
  2. Sealed-интерфейсы — ограничение круга разрешённых реализаций и управление иерархией
  3. Более конкретный возвращаемый тип при переопределении
  4. Полный разбор вариантов: sealed, record и switch

Вложенные и локальные формы классов

  1. Статический вложенный класс
  2. Константы и вложенные типы в интерфейсе
  3. Внутренний класс и внешний объект
  4. Локальный класс и захват переменной
  5. Выбор формы вложенного класса

Сложные контракты объектов и копирования

  1. Связи между объектами — ассоциация, агрегация, композиция, жизненный цикл и владение
  2. equals/hashCode в иерархиях — симметрия/транзитивность, instanceof vs getClass()
  3. clone в существующем коде: ограничения и альтернативы
08Проектирование объектов и прикладные паттерны

Меняй программу под новые требования и выбирай подходящие приёмы проектирования.

Ответственность и зависимости

  1. Ответственность класса и причина изменения
  2. Зависимость через конструктор и интерфейс

Паттерн как ответ на изменение

  1. Strategy: взаимозаменяемое правило
  2. Фабрика: отделяем выбор создаваемого объекта
  3. Adapter: согласуем разные контракты
  4. Decorator: добавляем поведение вокруг вызова

Выбор и проверка изменения

  1. Прикладной разбор: изменяем модель без лишних абстракций
09Аннотации и контролируемая рефлексия

Пойми, как библиотеки используют аннотации и рефлексию, и применяй их в своём коде.

Метаданные классов

  1. Class: тип во время выполнения
  2. Публичные методы: поиск и сигнатура

Аннотации и их потребитель

  1. Объявление и применение аннотации
  2. Retention и чтение аннотаций

Динамический вызов и границы

  1. Вызов через Method и две причины ошибки
  2. Метаданные библиотеки и границы рефлексии
10Рабочий проект: Git и сборка

Настрой локальный проект, сохраняй изменения в Git и собирай приложение через Maven.

От исходников к артефакту

  1. Файлы и каталоги Java-проекта
  2. Команда, окружение и процесс программы
  3. Локальная Java-среда и первый запуск
  4. Компиляция, classpath и JAR

Изменение кода и история Git

  1. Git: установка и сохранение своей рабочей версии
  2. Ветки Git, удалённый репозиторий и проверка изменения
  3. Конфликт двух изменений и безопасная отмена

Одна воспроизводимая Maven-сборка

  1. POM: координаты, XML и зависимости
  2. Фазы Maven и сборка через Wrapper
  3. Области зависимостей и транзитивность
  4. Диагностика сборки по первому значимому сбою

Чтение эквивалентной Gradle-сборки

  1. Gradle Java plugin и декларативная запись
  2. Проверка двух описаний одной сборки

Модель выполнения собранной Java-программы

  1. Загрузка классов и выполнение программы
11Тестирование поведения и непрерывная проверка

Пиши тесты поведения и настрой автоматическую проверку изменений.

Контракт в форме теста

  1. Первый JUnit-тест и его запуск
  2. Границы и классы эквивалентности
  3. Проверка исключения как части контракта

Повторяемость и изоляция

  1. Жизненный цикл теста и независимые данные
  2. Параметризованный тест и таблица случаев
  3. Тестовая замена за интерфейсом
  4. Mockito: управляемый ответ и значимое взаимодействие
  5. Время и случайность как явные входы теста

Набор проверок и его границы

  1. Запуск и ревью набора тестов

Непрерывная проверка изменения

  1. Непрерывная проверка: сборка, тестовый отчёт и артефакт
12SQL, JDBC и развитие схемы данных

Проектируй таблицы в PostgreSQL, пиши SQL и связывай базу данных с Java-приложением.

Реляционные данные и чтение

  1. Таблица, строка и устойчивый идентификатор
  2. Локальная PostgreSQL и первое подключение
  3. SELECT: проекция, отбор и порядок
  4. NULL и трёхзначная логика SQL
  5. JOIN: соединяем строки по ключу
  6. Агрегаты и GROUP BY
  7. Подзапрос и проверка наличия связанных строк

Ограничения и модель данных

  1. INSERT, UPDATE, DELETE и ограничения
  2. Связи M:N и один источник изменяемого факта

Изменение и согласованность данных

  1. Транзакция: все изменения или ни одного
  2. Конкурирующие изменения и граница изоляции
  3. Изоляция: что видят два сеанса базы
  4. Блокировка строки, ожидание и взаимная блокировка
  5. Индекс и проверяемая гипотеза о запросе

JDBC: код на границе ресурса

  1. JDBC: подключение и владение ресурсом
  2. Пул соединений: заём, close и возврат
  3. ResultSet: строки в Java-объекты
  4. PreparedStatement: данные отдельно от SQL
  5. Транзакция JDBC и восстановление после ошибки

Развитие схемы и проверка хранилища

  1. Изменение заполненной схемы и история миграций
  2. Репозиторий: контракт Java и проверка SQL
13Многопоточность и асинхронные задачи

Запускай несколько задач одновременно и защищай общие данные от ошибок.

Жизненный цикл работника

  1. Понятие потока исполнения
  2. Создание потоков
  3. Жизненный цикл потока
  4. Ожидание потока и кооперативное прерывание

Общее состояние и видимость

  1. Проблема гонок и синхронизация
  2. Ключевое слово synchronized
  3. Блокировка и критическая секция
  4. Volatile-поля
  5. Видимость и безопасная публикация состояния
  6. Deadlock (взаимная блокировка)
  7. Пример синхронизации – банк
  8. Готовые средства конкурентной работы

Задачи, исполнители и завершение

  1. Пул потоков и ExecutorService
  2. Callable и Future
  3. Владелец executor: таймаут, отмена и завершение
  4. Выбор исполнителя и ограничение нагрузки
  5. ThreadLocal: данные потока и очистка после задачи
  6. Виртуальные потоки и задача на один поток
  7. ScheduledExecutorService

Атомарность и передача данных

  1. Атомарные переменные
  2. Concurrent Collections
  3. Блокирующая очередь (BlockingQueue)

Подготовленная координация и чтение низкоуровневого кода

  1. Интерфейс Lock и ReentrantLock
  2. Ожидание завершения группы: CountDownLatch
  3. Ограничение одновременного доступа: Semaphore
  4. Чтение кода с wait и notify
  5. Приоритеты и демоны
  6. StringBuffer — отличие от StringBuilder, потокобезопасность и её цена
  7. Повторяющиеся этапы: CyclicBarrier

Асинхронные зависимости и общий сценарий

  1. Класс CompletableFuture
  2. Последовательная асинхронная цепочка
  3. Объединение независимых результатов
  4. Обработка ошибок в CompletableFuture
  5. Таймаут и политика асинхронного результата
  6. Самостоятельный сценарий фоновой обработки
14Spring Core: объекты и контейнер зависимостей

Собирай приложение из связанных компонентов с помощью Spring Core.

От ручной сборки к контейнеру

  1. ApplicationContext и определения bean
  2. Component scan и граница пакетов
  3. Несколько реализаций и ошибки графа зависимостей

Время жизни и перехват вызовов

  1. Области действия объектов: singleton и prototype
  2. Singleton scope и изменяемое состояние
  3. Жизненный цикл bean и внешнего ресурса

Вызовы через прокси и небольшой аспект

  1. Прокси: внешний вызов и self-invocation
  2. Spring AOP: небольшой аспект и сохранение результата

Проверка контейнерной конфигурации

  1. Сервис и конфигурация: две разные проверки
15Spring Boot: сборка и конфигурация приложения

Создай и запусти Spring Boot-приложение, разберись в его настройках и диагностике ошибок.

Состав приложения

  1. Starter и первый локальный запуск Spring Boot
  2. Условия автоконфигурации и собственные bean

Данные конфигурации и окружение

  1. properties и YAML: одни настройки в двух формах
  2. Источники настроек, переменные окружения и профили
  3. Типизированная конфигурация и ранняя проверка

Диагностика и подтверждение запуска

  1. Читаем причину отказа запуска
  2. Проверка конфигурации Boot-приложения
16HTTP, JSON и Spring Web

Спроектируй HTTP API и собери первые операции банковского сервиса.

Сеть и протокол до framework

  1. Клиент, сервер, адрес и порт
  2. HTTP: запрос, метод, ответ и статус
  3. JSON: структура данных и контракт полей

Контроллер и граница входа

  1. Ресурс API и его наблюдаемый контракт
  2. Spring MVC: mapping и связывание параметров
  3. Изменяющий HTTP-запрос: тело, действие и ответ
  4. Входной DTO и Bean Validation
  5. Ошибки API: статус и безопасное тело

Сервисная граница и проверка API

  1. Контроллер без общего состояния запроса
  2. HTTP-клиент: граница сервиса и неопределённый исход
  3. MockMvc: проверяем HTTP-контракт в тесте
  4. Учебный банк: счета, суммы и правила перевода
  5. Учебный банк — этап 1: счета и переводы через API
17Доступ к данным в Spring: JDBC и JPA

Подключи банк к PostgreSQL: сохраняй счета и выполняй переводы внутри транзакций.

SQL через Spring JDBC

  1. JdbcTemplate: запрос и преобразование строки без ручного закрытия ресурсов

Сущность и контекст хранения

  1. Entity: отображение таблицы и идентичность
  2. Persistence context, состояния и dirty checking
  3. Связь ManyToOne и внешний ключ
  4. Коллекция связей, mappedBy и каскад

Репозиторий и загрузка

  1. Spring Data repository и результат отсутствия
  2. Создание и изменение: persist, merge и save
  3. Явный JPQL, параметры и ограничение результата

Время жизни данных и стоимость загрузки

  1. Ленивая загрузка и граница контекста JPA
  2. Lazy loading, N+1 и DTO-граница

Сервисная транзакция и проверка

  1. @Transactional: одна прикладная операция
  2. Вложенные операции: REQUIRED, REQUIRES_NEW и rollback-only
  3. Конкурирующее обновление и @Version

Схема, тест и прикладной срез хранения

  1. Flyway: версия схемы и соответствие JPA
  2. JPA-тест: flush, повторное чтение и границы БД
  3. Перевод в БД: целостность, конфликт и повтор запроса
  4. Учебный банк — этап 2: хранение и надёжный перевод
18Spring Security: личность, права и защита запросов

Добавь вход и права доступа, чтобы пользователь работал только со своими счетами.

Личность и доверие

  1. Кому доверяет приложение: аутентификация и права
  2. Сеанс, cookie и подтверждённая личность
  3. Области действия запроса и сеанса в Spring
  4. Пароль и PasswordEncoder
  5. Стандартный вход: UserDetailsService, provider и контекст

Политика сервиса и запроса

  1. SecurityFilterChain и правила endpoint
  2. Права на конкретный объект

Браузерные угрозы и негативные проверки

  1. CSRF: кто приложил cookie к запросу
  2. CORS: разрешение браузеру читать ответ

Bearer-токен и готовый ресурсный сервер

  1. Bearer-токен и граница доверия к JWT
  2. Ресурсный сервер JWT: готовая проверка токена

Проверка безопасности прикладного сценария

  1. Учебный банк — этап 3: вход и доступ к своим счетам
19Диагностика, упаковка и запуск сервиса

Упакуй сервис в Docker, запусти его с базой и проверь тестами на настоящем PostgreSQL.

Диагностика и границы сервисных механизмов

  1. Журнал, состояние и готовность сервиса
  2. Кеш: ключ, обновление и устаревший результат
  3. Асинхронный вызов и расписание: границы исполнения

Процесс, образ и контейнер

  1. Процесс, образ и запущенный контейнер
  2. Подготовка Docker и пробный контейнер
  3. Dockerfile для готового JAR
  4. Контекст сборки, слои и воспроизводимость
  5. Версия образа и путь артефакта из сборки

Сеть, данные и готовность

  1. Порты контейнера и адреса сервисов
  2. Данные контейнера, volume и внешняя конфигурация
  3. Compose: зависимости запуска и готовность

Диагностический пакет окружения

  1. Учебный банк — этап 4а: воспроизводимый запуск

Проверка настоящей зависимости

  1. Учебный банк — этап 4б: тесты с настоящей базой
20Kafka: журнал, потребители и обработка отказов

Добавь события завершённых переводов через Kafka и разберись, как обрабатывать сбои.

Событие, журнал и контракт

  1. Событие и граница отказа между сервисами
  2. Topic, partition, key и порядок
  3. Контракт события и совместимость потребителя

Читатели и устойчивый журнал

  1. Группы потребителей и перераспределение разделов Kafka
  2. Хранение журнала и повторное чтение
  3. Реплики и предел подтверждения записи

Отправка, чтение и повтор

  1. Producer: подтверждение и неизвестный исход
  2. Consumer: чтение, обработка и commit offset
  3. Повторы, непригодное сообщение и ограничение попыток
  4. Идемпотентный обработчик и внешняя БД

Прикладная связка и границы согласованности

  1. Spring Kafka: адаптеры producer и listener
  2. Изменение БД и публикация: проблема двух записей
  3. Учебный банк — этап 5: события о переводах
21Контракты библиотек, память JVM и диагностика

Разбирайся в работе JVM, выбирай подходящие коллекции и находи причины проблем программы.

Специальные Map и стоимость хеширования

  1. Специальные реализации Map
  2. Метод hashCode() и хеш-функции
  3. Производительность HashMap

Параллельный Stream: корректность и ограничения

  1. Параллельные стримы
  2. Потенциальные проблемы параллельных стримов

Память JVM и диагностика по данным

  1. Утечки памяти в Java
  2. Память JVM, сборка мусора и признаки отказа
  3. Оптимальное управление объектами
  4. Отладка проблем памяти
  5. Выбор данных для диагностики JVM
22Прикладное проектирование и самостоятельный маркетплейс

Создай самостоятельный backend-маркетплейс по требованиям: от проектирования до тестов и запуска.

Прикладное проектирование и ревью

  1. Небольшой сервис: требования, данные и границы
  2. Ревью чужого кода и изменение требования

Диагностика и передача изменения

  1. Сбой сервиса: наблюдение, гипотеза и проверка
  2. Итоговый срез: изменение сервиса и доказательства
  3. Технический разбор: объяснить решение и проверить контрпример

Самостоятельный проект: универсальный маркетплейс

  1. Маркетплейс: требования, модель и границы
  2. Маркетплейс: каталог и кабинеты продавцов
  3. Маркетплейс: корзина, заказ и остатки
  4. Маркетплейс: проверка правил и отказов
  5. Маркетплейс: запуск и демонстрация
  6. Маркетплейс: самостоятельное изменение и объяснение
23AI-функции в Java-приложениях: Spring AI и работа с документами

Добавь в свой маркетплейс поиск и ответы по документам на Spring AI и RAG. Проверяй источники и качество ответов.

Модель в Java-сервисе

  1. Языковая модель как внешний сервис
  2. Spring AI: первый вызов из Spring Boot
  3. Инструкции, данные и проверяемый Java DTO

Ответ по собственным материалам

  1. Ответ по переданным материалам и проверка источника
  2. Фрагменты документов и смысловой поиск
  3. Простой RAG: поиск перед ответом

Границы, отказы и качество

  1. Недоверенный текст и границы доступа
  2. Отказы модели и воспроизводимые Java-тесты
  3. Как проверить качество AI-ответа

Дополнительное расширение маркетплейса

  1. Проект: справочный AI-помощник маркетплейса
24Алгоритмы: дополнительная практика для отдельных интервью

Подготовься к алгоритмическим задачам на интервью: от массивов и хеш-таблиц до деревьев и графов.

Дополнительная практика: массивы, частоты и стек

  1. Дополнительная практика: слияние двух последовательностей
  2. Дополнительная практика: преобразования таблицы
  3. Дополнительная практика: скользящее окно
  4. Дополнительная практика: частоты и просмотренные значения
  5. Дополнительная практика: стек парных разделителей

Дополнительная практика: рекурсия и сортировки

  1. Дополнительная практика: рекурсия и завершение
  2. Дополнительная практика: сортировка вставками
  3. Дополнительная практика: разделение и слияние

Деревья и достижимость в графе

  1. Дополнительная практика: модель дерева
  2. Дополнительная практика: обход дерева в глубину
  3. Дополнительная практика: обход дерева по уровням
  4. Дополнительная практика: достижимость в невзвешенном графе

Повторные подзадачи и алгоритмическое интервью

  1. Дополнительная практика: таблица повторных подзадач
  2. Дополнительная практика: самостоятельный разбор алгоритмической задачи

Параллельные алгоритмы

  1. Идея Fork/Join
  2. Класс ForkJoinPool
  3. Задачи ForkJoin

Навыки для новой профессии

Как может расти доход Java-разработчика

Банковские приложения, интернет-сервисы, корпоративные системы. Осваивай язык и инструменты, чтобы готовиться к первой Java-позиции и расти дальше с опытом.

Junior≈130 000 ₽
Middle≈235 000 ₽
Senior / Lead400 000 ₽ и выше

Примерные ориентиры дохода в месяц. Зависят от опыта, региона и компании.

Автор курса

Алексей Семенов

Senior Java-разработчик с опытом в крупных банках и международной IT-компании.

Я сам пришёл в Java из другой сферы и знаю, как непросто начать с нуля. Поэтому в курсе — последовательные объяснения, практика и разбор типичных ошибок: чтобы ты понимал код, а не просто повторял за автором.

6+ летопыта в разработке
200 собеседованийпроведено автором
Путь с нуляличный опыт смены профессии

Начни бесплатно

Попробуй формат на первых задачах

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

Вводный курс

0 ₽
на всё время

10 простых уроков с задачами — чтобы попробовать Java и почувствовать, как работает AI‑наставник.

  • Доступ к вводным лекциям и задачам.
  • Полноценная проверка кода AI‑ассистентом.
  • Можно начать без регистрации.
Скоро

Платный доступ скоро

от 990 ₽/мес
после запуска онлайн-оплаты

Сейчас курс доступен бесплатно. Оставьте заявку, чтобы получить скидку 30% на первый месяц после запуска онлайн-оплаты.

  • Все текущие и будущие модули курса.
  • AI‑проверка и диалог по каждой задаче.
  • Заявка ни к чему не обязывает.

FAQ

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

Подойдёт ли курс, если я никогда не писал код?

Да. Начинаем с основ и первых задач. В уроке есть объяснение, а в задании можно попросить AI разобрать непонятное место на примере твоего кода.

Чем AI-наставник отличается от отдельного чат-бота?

Здесь уже есть последовательная программа, уроки, задачи и твой прогресс. AI получает условие, твою попытку, текущий урок и предшествующий материал курса — не нужно каждый раз собирать контекст вручную. В режиме «Проверить без решения» помощь направлена на самостоятельный поиск ответа. Если застрял, доступны вопрос AI и полный разбор.

Могу ли я пропустить знакомые темы?

Да, открывай нужную тему в программе. Основы и backend — этапы одного курса, покупать их по отдельности не нужно.

Что бесплатно и нужна ли банковская карта?

10 вводных уроков с практикой бесплатны без ограничения срока. Начать можно без регистрации и банковской карты. Для участников Telegram-канала действует временная акция с бесплатным доступом к курсу. Онлайн-оплата появится позже, а бронь скидки сейчас не требует платежа.

Как забронировать скидку и обязывает ли это платить?

Нажми «Забронировать скидку 30%» в блоке доступа и оставь заявку. Скидка действует на первый месяц после запуска онлайн-оплаты. Заявка ни к чему не обязывает и не списывает деньги. О запуске сообщим по email; пока можно учиться бесплатно.

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

Да. За пройденный этап обучения и выполненную практику — сертификат MentorSkillAI с перечнем освоенных тем.

Что делать, если не понимаю ошибку?

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

Нужно ли устанавливать программы?

Для первых задач не нужно: редактор и AI-проверка работают в браузере. Читать уроки можно и с телефона; писать код удобнее на компьютере. Для проектной части ты настроишь локальную среду и будешь запускать свои Java-приложения в IDE. Инструменты вводятся по мере обучения.

Сколько времени нужно на обучение?

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

Какие проекты я создам?

Учебный банковский сервис со счетами, переводами, базой данных, правами доступа и событиями Kafka. Затем — самостоятельный backend маркетплейса по техническому заданию: продавцы, каталог, корзина, заказы и остатки. У проектов будут свои тесты и инструкция запуска.

AI-наставник и Spring AI — это одно и то же?

AI-наставник на платформе помогает тебе учиться: разбирает попытку и направляет к решению. Spring AI — технология, которую ты изучишь, чтобы подключить модель к собственному Java-приложению. В маркетплейсе ты реализуешь умный поиск и ответы по документам.

Нужно ли знать AI до начала курса?

Нет. Начинаем с Java. Spring AI и RAG — дополнительный модуль после самостоятельного маркетплейса. К нему ты подойдёшь с базой Java, Spring и тестирования; основной проект можно завершить и без этого модуля.

Попробуй. Почувствуй, что можешь сам.

Открой первый урок, напиши код и получи помощь по своей попытке. Бесплатно.

Начать бесплатно