Java-разработчик

Единый Агрегатор Торговли

Java-разработчик

Москва, Большой Саввинский переулок, 9с3

Метро: Киевская

Описание вакансии

Ищем Middle Java Developer для разработки backend на Java и Spring Boot. Предстоит самостоятельно реализовывать функции в принятой архитектуре, писать тесты и сопровождать код. Решения обсуждаем с архитектором и Senior-разработчиками. Рассматриваем также Senior-кандидатов с опытом из раздела «Будет преимуществом».

Особые условия (обратить внимание):

  • Формат работы: только офис
  • Тип занятости: проектная работа до 30.07.2027. После выполнения проекта рассматривается возможность оформления в штат на постоянной основе.

Чем предстоит заниматься

  • Разрабатывать backend-компоненты, REST/gRPC API, WebSocket-взаимодействие, обработчики сообщений и операции с БД.
  • Реализовывать транзакции, проверки данных и фоновые задачи; работать с XML/XSD и интеграцией с КриптоПро.
  • Писать unit- и интеграционные тесты, исправлять ошибки, оптимизировать Java-код и SQL; участвовать в code review, обсуждении требований и документировании API.

Обязательные требования

От 3 лет коммерческой разработки на Java; опыт самостоятельной реализации и сопровождения функций в промышленной эксплуатации.

  • Java 17+ и многопоточность. Generics, коллекции, Stream API, records, исключения, equals/hashCode и изменяемость объектов. Понимание race condition и deadlock; применение synchronized, concurrent collections, ExecutorService и CompletableFuture. Обработка ошибок, тайм-аутов и прерываний, закрытие ресурсов через try-with-resources, контроль числа задач и потребления ресурсов.
  • Spring. Spring Boot, Framework и Data: DI, конфигурация, жизненный цикл и scope бинов, AOP-прокси. Применение @Transactional: границы транзакций, rollback и self-invocation. Работа с @Async и executors; понимание границ транзакции при переходе в другой поток и рисков ожидания внешнего ответа внутри транзакции.
  • PostgreSQL. SQL: JOIN, группировки, подзапросы; PK/FK/UNIQUE/CHECK, индексы и чтение EXPLAIN. Понимание ACID и уровней изоляции; атомарные обновления, блокировки и обработка конфликтов записи по принятой схеме. Миграции Flyway/Liquibase с учётом существующих данных и совместимости с кодом.
  • JPA и Hibernate. Маппинг сущностей и связей, persistence context, жизненный цикл entity, lazy/eager loading, границы сессии и транзакции, разделение entity/DTO. Устранение N+1 через fetch join, EntityGraph или DTO-проекции; контроль SQL-запросов, применение @Version и обработка конфликтов.
  • Kafka или RabbitMQ. Практика с одним из брокеров: topics/partitions/consumer groups/offsets либо queues/exchanges/routing keys/ack/nack. Публикация и обработка сообщений, подтверждения, повторная доставка, дедупликация, ограниченные retry и DLQ. Применение существующего механизма согласования записи в БД и отправки сообщения.
  • REST и HTTP. Реализация API по OpenAPI-контрактам: DTO, валидация, ошибки, пагинация и серверные проверки. HTTP-клиенты, тайм-ауты, обработка временных и постоянных ошибок; безопасные повторы, идемпотентность изменяющих запросов и обработка конкурентных обращений.
  • gRPC. Работа с Protobuf-контрактами, генерация stubs и серверных интерфейсов, реализация unary RPC. Deadlines, коды ошибок, отмена вызовов и совместимость сообщений при изменении контрактов.
  • WebSocket. Серверная реализация средствами Spring: обмен сообщениями, жизненный цикл соединений, обработка ошибок и разрывов, освобождение ресурсов. Валидация сообщений, проверка прав доступа, ограничения размера сообщений и буферов.
  • XML и XSD. JAXB/Jakarta XML Binding, пространства имён, атрибуты и кодировки. Чтение и изменение XSD: типы, ограничения, include/import. Валидация через JAXP (SchemaFactory, Validator), разбор ошибок, защита от XXE и ограничение доступа к внешним сущностям и схемам.
  • КриптоПро. Опыт JCP и/или JCSP, JCA/JCE: формирование и проверка подписи по ГОСТ, доработка существующей интеграции. X.509, KeyStore, ключевые контейнеры; обработка результатов проверки цепочки доверия, срока действия и отзыва сертификата. Диагностика ошибок подписи, сертификата и доступа к ключу.
  • Состояния и фоновые задачи. Реализация переходов по заданной модели, проверок допустимости и атомарных изменений; учёт повторных и конкурентных команд. Работа с принятыми механизмами запуска, повторов и восстановления задач; расширение обработчиков с сохранением контрактов.
  • Тестирование и инструменты. JUnit 5, Mockito; интеграционные тесты с PostgreSQL и брокером через Testcontainers или аналог. Проверка валидации, rollback, повторов и ошибок. WireMock для HTTP, Awaitility для асинхронных результатов. Отладчик, логи, stack trace и анализ SQL; Git, Maven/Gradle, разрешение конфликтов зависимостей.

Будет преимуществом

Дополнительные навыки для задач уровня Senior и профессионального роста. Для позиции Middle владение всем перечнем не требуется.

  • Самостоятельное проектирование компонентов, интерфейсов и взаимодействий, обоснование решений. Разработка переиспользуемых библиотек, Spring Boot starters и валидаторов конфигураций; применение Strategy, State, Specification и версионирование конфигураций.
  • Java Memory Model, happens-before, volatile, ReentrantLock, Atomic-классы. Настройка ThreadPoolExecutor, размеров пулов, очередей и политик перегрузки; диагностика deadlock и исчерпания пула. Практика Virtual Threads в Java 21+.
  • Сложные транзакционные сценарии: REQUIRED/REQUIRES_NEW, выбор изоляции и rollback; анализ взаимодействия транзакций, блокировок и асинхронного выполнения.
  • PostgreSQL: MVCC, CTE, оконные функции, SELECT FOR UPDATE, составные и частичные индексы; EXPLAIN (ANALYZE, BUFFERS), оптимизация JOIN, сортировок и пагинации, планирование совместимых миграций.
  • Hibernate: dirty checking, flush, batch fetching, pessimistic locking и пакетные операции; управление persistence context, загрузкой коллекций и её влиянием на пагинацию.
  • Надёжная обработка сообщений: порядок событий и rebalance в Kafka, prefetch и publisher confirms в RabbitMQ; Transactional Outbox, границы at-least-once/exactly-once для БД и внешних вызовов.
  • Проектирование и версионирование REST API, совместимость контрактов; реализация идемпотентности через ключ операции, ограничения уникальности и сохранение результата при конкурентных запросах.
  • DOM/SAX/StAX, потоковая обработка больших XML; проектирование XSD и совместимость версий схем.
  • Самостоятельная интеграция с КриптоПро: CMS/CAdES, XMLDSig, каноникализация XML и кодирование подписываемых данных; диагностика сложных ошибок провайдера и сертификатов.
  • Оркестрация многошаговых процессов на Camunda/Flowable или аналогах либо реализация машин состояний без готового движка. Состояния, переходы, условия, события и таймеры; сохранение состояния в БД, восстановление после перезапуска, повторные события и защита от конкурентных переходов и захвата задач несколькими экземплярами приложения. Опыт Spring Statemachine и Drools.
  • Тестирование конкурентных обновлений, прерывания и восстановления обработки с latch/barrier и управляемой синхронизацией; контрактные и property-based тесты.
  • Анализ thread dump/heap dump, утечек памяти, блокировок и GC; JFR/JMC, async-profiler или аналоги. Применение JMH, проверка результатов оптимизации измерениями.

Условия

  • Только офис в Москве. Оформление по ТК РФ. Вознаграждение от 300 000 рублей на руки, итоговый уровень — по результатам собеседования.
  • Проектная работа до 30.07.2027. После завершения проекта рассматривается возможность перехода в постоянный штат.
  • Разработка нового продукта вместе с архитектором и опытными разработчиками, возможность развивать технические навыки и брать более сложные задачи.
Посмотреть контакты работодателя

Адрес

Похожие вакансии

Voximplant

Java developer

Voximplant

  • Москва

  • Не указана

Рекомендуем
Bell Integrator

Java-разработчик

Bell Integrator

  • Москва

  • Не указана

Рекомендуем
СБЕР
  • Москва

  • Не указана

Рекомендуем
СБЕР

Java Developer

СБЕР

  • Москва

  • Не указана

СБЕР
  • Москва

  • Не указана

Ростелеком

Senior Java-разработчик

Ростелеком

  • Москва

  • Не указана

БЮРО 1440
  • Москва

  • Не указана

Банк ПСБ

Java-разработчик

Банк ПСБ

  • Москва

  • Не указана

Swordfish Security
  • Москва

  • Не указана

СБЕР
  • Москва

  • Не указана

Правительство Москвы

Java разработчик (Middle / Senior)

Правительство Москвы

  • Москва

  • Не указана

SPTLab
  • Москва

  • Не указана

СБЕР
  • Москва

  • Не указана

Лига Цифровой Экономики

Middle Java Developer (Москва)

Лига Цифровой Экономики

  • Москва

  • Не указана

Хотите оставить вакансию?

Заполните форму и найдите сотрудника всего за несколько минут.
Оставить вакансию