Перейти к основному содержимому
DevScallix

Роудмапы · L1

Junior Java Developer

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

Чем отличается от предыдущего уровня

Тот, кто прошёл туториалы, повторяет готовые шаги и останавливается, когда код заработал. Junior-разработчик может объяснить, почему код работает, самостоятельно разбирается с ошибками, сдаёт работу с тестами и Pull Request и делает выводы из замечаний на review.

Ожидаемые знания

  • Основы Java: типы, ООП, интерфейсы, record, неизменяемость и контракт equals/hashCode
  • Collections: выбор между List, Set и Map и понимание их сложности
  • Правильное использование исключений: checked и unchecked, обёртка с cause
  • Читаемое использование Stream API и его ограничения
  • SQL: SELECT, JOIN, GROUP BY, INSERT/UPDATE, primary и foreign key, идея индекса
  • Основы Spring Boot: слои controller, service, repository и dependency injection
  • REST: HTTP-методы, коды статусов, JSON, простая валидация
  • Git и процесс Pull Request: ветки, коммиты, конфликты слияния, review

Практические навыки

  • Написать небольшой REST-сервис с нуля на PostgreSQL
  • Писать unit-тесты на JUnit и мокать простые зависимости
  • Находить причину сбоя по stack trace и логам
  • Пошагово проходить выполнение в отладчике
  • Давать переменным, методам и классам осмысленные имена
  • Готовить небольшой Pull Request с одной целью и отвечать на замечания review

Типичные ошибки

  • Использовать изменяемый объект как ключ HashMap и не согласовать equals/hashCode
  • Поймать исключение и оставить пустой блок catch
  • Возвращать JPA-сущность напрямую как ответ API
  • Класть всю логику внутрь controller
  • Заменять тест ручной проверкой, что вроде бы работает

Приоритеты обучения

  1. 1Укрепить основы Java и ООПCollections, исключения, equals/hashCode и неизменяемость. На них строятся все следующие уровни.
  2. 2Серьёзно выучить SQLJOIN, агрегация и идея индекса. Большая часть backend-работы связана с данными.
  3. 3Разделять слои в Spring BootДержите ответственность controller, service и repository раздельно, используйте DTO и добавляйте валидацию.
  4. 4Выработать привычку писать тестыМинимум один unit-тест на каждую новую логику. Смотрите на тест как на инструмент проверки дизайна.
  5. 5Уверенно работать с Git, Pull Request и DockerНебольшие коммиты, понятное описание PR и локальное окружение, поднимаемое через docker compose.

Архитектурная зрелость

От junior не ждут проектирования архитектуры системы. Но важно понимать, как код делится на слои, куда направлены зависимости и почему бизнес-логика живёт в service, а не в controller. Достаточно добавлять код, который вписывается в существующую структуру, и задавать вопрос, когда что-то не вписывается.

Примеры вопросов

  • Почему equals и hashCode нужно переопределять вместе?
  • Когда вы выберете ArrayList, а когда LinkedList?
  • В чём разница между checked и unchecked исключениями?
  • Чем результат INNER JOIN отличается от LEFT JOIN?
  • Какую проблему решает dependency injection в Spring?
  • Почему Pull Request стоит делать небольшим?

Упражнения для самостоятельной работы

  • Сделайте CRUD REST API для Order, где controller, service, repository и DTO разделены.
  • Напишите три SQL-запроса на одних данных: с JOIN, GROUP BY и подзапросом. Изучите вывод EXPLAIN.
  • Напишите тест, воспроизводящий потерю элемента в HashMap с изменяемым ключом, и исправьте через record.
  • Поднимите проект одной командой через Dockerfile и docker compose.

Статьи для этого уровня

Подходящие программы

Насколько вы близки к этому уровню?

Оценка навыков формирует личный отчёт о пробелах на основе ваших ответов. Это рекомендация, а не сертификат.