Флексмайнд Тех.

Senior Java developer

Не указана
  • Москва
  • Полная занятость
  • Удаленная работа
  • От 3 до 6 лет
  • Java
  • SQL
  • Spring Framework
  • Kafka
  • Elasticsearch
  • Kubernetes
  • Spring
  • REST
  • Микросервисы
  • Redis

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

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

  • Развивать продуктовое решение;
  • Участвовать в проработке архитектуры продукта;
  • Выбирать оптимальные паттерны, структуры данных и инструменты их обработки;
  • Проводить рефакторинг и поддерживать имеющийся функционал;

Для нас важно:

  • Понимание принципов построения микросервисной архитектуры;
  • Уверенные знания Java 21+.
  • Понимание SOLID;
  • Опыт работы с Spring Framework (Core, Boot, Security, Data);
  • Опыт работы с реляционными БД (Postgresql) и NoSQL БД (Elastic, Redis, MongoDB);
  • Опыт работы с брокерами сообщений (Kafka);
  • Опыт разработки корпоративных систем от 3-х лет;
  • Понимание сферы разработки e-commerce продуктов.
  • Английский язык на уровне чтения технической документации.

Наши преимущества:

  • Оформление в аккредитованную IT-компанию;
  • Конкурентная заработная плата;
  • Гибкий график работы: вы сможете планировать время так, как удобно вам.
  • Удаленный формат работы, вы можете работать из любой точки мира.
  • Сложные и интересные задачи, современный стек технологий.

Для рассмотрения вашего резюме просим:

Выполнить одно из тестовых заданий:

Тестовое задание 4.1 (middle): Сервис управления конфигурациями событий (EventConfig)

Описание:
Необходимо реализовать микросервис, отвечающий за хранение и управление конфигурациями событий. Конфигурации используются другими частями системы для подписки и генерации уведомлений.
Сервис должен уметь работать с двумя хранилищами (MongoDB и Elasticsearch) и переключаться между ними.

Формулировка:

Опишите архитектуру сервиса: как организуете работу с разными хранилищами (MongoDB, Elasticsearch)?

Реализуйте REST API с возможностями:

  • POST /api/v1/event-config — создать конфигурацию события

  • PUT /api/v1/event-config/{id} — обновить конфигурацию

  • GET /api/v1/event-config — получить список конфигураций с фильтрацией по eventType, source, enabled

Предусмотрите возможность переключения между хранилищами (Mongo/Elasticsearch) через application.properties

Обеспечьте базовую валидацию входных данных и читаемость кода

Сущность EventConfig:

json

CopyEdit

{

"id": "string",

"eventType": "string",

"source": "string",

"enabled": true,

"createdAt": "datetime",

"updatedAt": "datetime"

}

Комментарий:
Оценка будет производиться по качеству архитектуры, коду, валидации, документации и организации проекта.
Важны читаемость, модульность, уверенное владение Spring Boot и основами работы с БД.

Тестовое задание 4.2 (senior): Конфигуратор событий + подписки + Webhook-интеграция

Описание:
Нужно разработать расширенный микросервис управления конфигурациями событий и подписками сторонних систем.
Сервис должен уметь хранить конфигурации, обрабатывать изменения, отправлять уведомления по webhook-подпискам и поддерживать работу с несколькими хранилищами.

Формулировка:

Опишите архитектуру сервиса: как выстроите переключение хранилищ, как организуете подписки и отправку webhook

Реализуйте REST API с возможностями:

  • POST /api/v1/event-config — создать конфигурацию

  • PUT /api/v1/event-config/{id} — обновить конфигурацию

  • GET /api/v1/event-config — получить список конфигураций с фильтрацией по полям

  • POST /api/v1/subscription — создать webhook-подписку на событие

  • POST /api/v1/notify/test — триггер для генерации webhook-события (можно имитировать Kafka event)

Реализуйте бизнес-логику:

  • При изменении EventConfig — генерировать событие и вызывать все подписанные callbackUrl

  • Сохранение подписок в отдельной сущности Subscription

Предусмотрите UI-friendly endpoint:

  • GET /api/v1/ui/event-configs — сгруппировать конфигурации по source и вернуть список

Сущности (можно адаптировать):

json

CopyEdit

// EventConfig

{

"id": "string",

"eventType": "string",

"source": "string",

"enabled": true,

"createdAt": "datetime",

"updatedAt": "datetime"

}

// Subscription

{

"id": "string",

"eventType": "string",

"callbackUrl": "string",

"active": true

}

Комментарий:
Важны архитектурные решения, устойчивость к ошибкам, изоляция бизнес-логики, расширяемость.
Дополнительно оценивается наличие тестов, документации, docker-compose, и обоснование архитектуры (в README.md).
Плюсом будет CI pipeline и схема архитектуры

После выполнения, просьба отправить сопроводительное письмо, в котором:

  • укажите ссылку или приложите файлы с результатами тестовых заданий
    (оформите их в отдельном репозитории или архиве — чёткая структура проекта, README с инструкциями по запуску; допускаются Pull Request-ссылки на GitHub/GitLab);

  • сообщите ваш ожидаемый уровень дохода (gross/net, ₽);

  • опишите предпочтительный формат сотрудничества (тип оформления).

Дальнейшие этапы отбора

  • Техническое интервью — около 1 часа, онлайн;

  • Финальное интервью с руководителем проекта.