19 KiB
📝 10 прикладных задач для Middle Java-разработчика
🎯 Задача 1: Система управления складскими операциями
Условие:
Вы разрабатываете модуль WMS для управления операциями приемки товаров на склад. Система должна обрабатывать поступление товаров от поставщиков.
-
Поставка имеет:
- ID, номер поставки, поставщик
- Плановую и фактическую дату прибытия
- Статус (PLANNED, ARRIVED, IN_PROGRESS, COMPLETED, CANCELLED)
-
Товарная позиция содержит:
- SKU товара, плановое количество
- Фактически принятое количество
- Статус приемки (PENDING, ACCEPTED, REJECTED, PARTIAL)
-
Бизнес-правила:
- Приемка возможна только для прибывших поставок
- Нельзя принять больше товара, чем заявлено в поставке
- При расхождениях создается акт о расхождениях
- После завершения приемки обновляется остаток на складе
- При отмене поставки нужно освободить зарезервированные ячейки
Техническое задание:
Опишите подход к решению:
- Архитектуру приложения - слои и компоненты
- Entity классы - модель данных
- Ключевые методы ReceivingService
- Валидацию бизнес-правил
- REST API endpoints
- Обработку исключений
- Управление транзакциями
- Стратегию тестирования
Время: 25 минут
🎯 Задача 2: Система уведомлений с приоритизацией
Условие:
Разрабатывается сервис уведомлений для корпоративного приложения. Система должна отправлять уведомления различными каналами с учетом приоритетов.
-
Уведомление содержит:
- ID, получатель, тема, содержание
- Приоритет (LOW, NORMAL, HIGH, CRITICAL)
- Каналы доставки (EMAIL, SMS, PUSH)
- Статус (PENDING, SENT, FAILED, DELIVERED)
-
Шаблон уведомления имеет:
- Тип события, шаблон сообщения
- Настройки каналов по умолчанию
- Параметры для подстановки
-
Бизнес-правила:
- CRITICAL уведомления отправляются немедленно всеми каналами
- HIGH - в течение 5 минут, предпочтительные каналы
- NORMAL - батчами каждые 15 минут
- LOW - раз в час группами
- При неудаче повторная отправка через экспоненциальный backoff
- Дедупликация одинаковых уведомлений
Техническое задание:
Опишите:
- Архитектуру решения - асинхронная обработка
- Модель данных - entities и relationships
- NotificationService методы
- Стратегию приоритизации
- API для создания уведомлений
- Error handling и retry логику
- Использование очередей
- Тестирование асинхронных процессов
Время: 25 минут
🎯 Задача 3: Система управления задачами роботов
Условие:
Создается система для управления автоматизированными роботами на складе. Роботы выполняют задачи перемещения товаров между локациями.
-
Робот имеет:
- ID, тип, текущая локация
- Статус (IDLE, BUSY, MAINTENANCE, ERROR)
- Грузоподъемность, заряд батареи
- Текущая задача
-
Задача содержит:
- ID, тип операции (MOVE, PICK, PLACE)
- Локация источник и назначение
- Приоритет, крайний срок выполнения
- Статус (QUEUED, ASSIGNED, IN_PROGRESS, COMPLETED, FAILED)
-
Бизнес-правила:
- Задачи назначаются ближайшему свободному роботу
- Учитывается грузоподъемность и тип робота
- При низком заряде робот отправляется на зарядку
- Высокоприоритетные задачи могут прерывать обычные
- При сбое задача переназначается другому роботу
Техническое задание:
Опишите:
- Системную архитектуру
- Доменную модель
- RobotTaskService логику
- Алгоритм назначения задач
- API для управления роботами
- Обработку сбоев
- Coordination между роботами
- Тестирование concurrent операций
Время: 25 минут
🎯 Задача 4: Система управления скидками и промокодами
Условие:
Разрабатывается модуль для e-commerce платформы, управляющий скидками и промокодами с различными условиями применения.
-
Скидка имеет:
- ID, название, описание
- Тип (PERCENTAGE, FIXED_AMOUNT, FREE_SHIPPING)
- Значение скидки
- Период действия, лимит использований
-
Промокод содержит:
- Код, связанная скидка
- Условия применения (минимальная сумма, категории товаров)
- Количество использований на пользователя
- Статус (ACTIVE, EXPIRED, EXHAUSTED)
-
Бизнес-правила:
- Промокод можно применить только к подходящим товарам
- Один заказ может содержать несколько скидок
- Скидки применяются в порядке приоритета
- Нельзя превысить максимальный процент скидки (например, 80%)
- Скидки на доставку несовместимы друг с другом
Техническое задание:
Опишите:
- Архитектуру модуля
- Entity модель
- DiscountService функциональность
- Логику валидации и применения
- REST endpoints
- Обработку конфликтов скидок
- Транзакционность операций
- Unit и integration тесты
Время: 25 минут
🎯 Задача 5: Система резервирования ресурсов
Условие:
Создается система для резервирования переговорных комнат, оборудования и других ресурсов в офисе компании.
-
Ресурс имеет:
- ID, название, тип (ROOM, EQUIPMENT, VEHICLE)
- Вместимость, локация
- Доступное время работы
- Статус (AVAILABLE, OCCUPIED, MAINTENANCE)
-
Резервирование содержит:
- ID, пользователь, ресурс
- Время начала и окончания
- Цель использования
- Статус (PENDING, CONFIRMED, CANCELLED, COMPLETED)
-
Бизнес-правила:
- Нельзя забронировать занятый ресурс
- Резервирование возможно только на будущее время
- Автоматическая отмена неподтвержденных бронирований через 15 минут
- Recurring резервирования (еженедельные встречи)
- Приоритет для VIP пользователей
Техническое задание:
Опишите:
- Системную архитектуру
- Модель данных
- ReservationService методы
- Conflict resolution логику
- API endpoints
- Exception handling
- Scheduled tasks для cleanup
- Тестирование concurrent бронирований
Время: 25 минут
🎯 Задача 6: Система мониторинга производительности API
Условие:
Разрабатывается система для мониторинга производительности и доступности API endpoints различных микросервисов.
-
API Endpoint имеет:
- URL, HTTP метод, сервис
- SLA параметры (latency, availability)
- Частота проверок
- Критичность (LOW, MEDIUM, HIGH, CRITICAL)
-
Метрика содержит:
- Timestamp, endpoint, response time
- HTTP статус код, размер ответа
- Статус проверки (SUCCESS, TIMEOUT, ERROR)
-
Бизнес-правила:
- Критичные endpoints проверяются каждые 30 секунд
- Обычные - каждые 5 минут
- При превышении SLA генерируется alert
- Escalation при множественных сбоях
- Автоматическое отключение проблемных endpoints из балансировщика
Техническое задание:
Опишите:
- Архитектуру monitoring системы
- Data model
- MonitoringService функции
- Alerting механизм
- Reporting API
- Circuit breaker интеграцию
- Async обработку проверок
- Performance тестирование
Время: 25 минут
🎯 Задача 7: Система управления документооборотом
Условие:
Создается система для управления корпоративными документами с workflow для согласования и утверждения.
-
Документ имеет:
- ID, название, тип, версия
- Автор, дата создания
- Содержимое, вложения
- Статус (DRAFT, REVIEW, APPROVED, REJECTED, ARCHIVED)
-
Workflow содержит:
- Этапы согласования
- Участники (роли или конкретные пользователи)
- Условия перехода между этапами
- Временные ограничения
-
Бизнес-правила:
- Документ проходит все этапы workflow по порядку
- На каждом этапе могут быть множественные approvers
- При отклонении документ возвращается автору
- Возможны параллельные и условные этапы
- Автоматическая эскалация при превышении сроков
Техническое задание:
Опишите:
- Архитектурный подход
- Domain model
- WorkflowService логику
- State management
- Document API
- Notification интеграцию
- Versioning стратегию
- Тестирование workflow сценариев
Время: 25 минут
🎯 Задача 8: Система управления инвентаризацией
Условие:
Разрабатывается модуль для проведения инвентаризации товаров на складе с поддержкой различных методов подсчета.
-
Инвентаризация имеет:
- ID, дата проведения, ответственный
- Тип (FULL, PARTIAL, CYCLE_COUNT)
- Зоны склада для проверки
- Статус (PLANNED, IN_PROGRESS, COMPLETED, CANCELLED)
-
Позиция инвентаризации содержит:
- SKU товара, локация
- Ожидаемое количество (по системе)
- Фактическое количество (по подсчету)
- Расхождение, причина расхождения
-
Бизнес-правила:
- Во время инвентаризации блокируются операции в проверяемых зонах
- Расхождения свыше порога требуют пересчета
- Автоматическая корректировка остатков после утверждения
- Генерация отчетов о расхождениях
- Cycle counting по ABC анализу
Техническое задание:
Опишите:
- Системную архитектуру
- Модель данных
- InventoryService методы
- Locking механизм
- API для mobile приложений
- Exception scenarios
- Concurrency control
- Accuracy testing
Время: 25 минут
🎯 Задача 9: Система управления конфигурациями
Условие:
Создается централизованная система управления конфигурациями для множества микросервисов с поддержкой версионирования и hot reload.
-
Конфигурация имеет:
- Ключ, значение, тип данных
- Сервис, окружение (dev/test/prod)
- Версия, дата изменения
- Статус (DRAFT, ACTIVE, DEPRECATED)
-
Изменение конфигурации содержит:
- Старое и новое значение
- Автор изменения, комментарий
- Время применения
- Статус применения
-
Бизнес-правила:
- Изменения в prod требуют дополнительного утверждения
- Возможность отката к предыдущей версии
- Валидация значений по схеме
- Encrypted значения для sensitive данных
- Audit trail всех изменений
Техническое задание:
Опишите:
- Architecture design
- Data model
- ConfigurationService API
- Validation framework
- REST API design
- Security considerations
- Version control strategy
- Integration testing approach
Время: 25 минут
🎯 Задача 10: Система аналитики пользовательского поведения
Условие:
Разрабатывается система для сбора и анализа событий пользовательского поведения в веб-приложении с real-time обработкой.
-
Событие имеет:
- ID, тип события, пользователь
- Timestamp, session ID
- Метаданные (страница, действие, параметры)
- Источник (web, mobile, api)
-
Сессия содержит:
- ID сессии, пользователь
- Время начала и окончания
- Количество событий, страниц
- Conversion events
-
Бизнес-правила:
- События обрабатываются в real-time
- Агрегация метрик по различным измерениям
- Обнаружение аномалий в поведении
- GDPR compliance - возможность удаления данных пользователя
- Retention анализ и funnel metrics
Техническое задание:
Опишите:
- Event-driven архитектуру
- Data schema design
- AnalyticsService компоненты
- Real-time processing pipeline
- Query API для дашбордов
- Privacy compliance
- Stream processing с Kafka
- Load testing стратегию
Время: 25 минут
📋 Рекомендации по оценке решений
Критерии оценки (для каждой задачи):
Архитектура (25%):
- Правильное разделение на слои
- Понимание принципов SOLID
- Separation of concerns
Модель данных (20%):
- Корректное проектирование entities
- Понимание relationships
- Учет performance implications
Бизнес-логика (25%):
- Правильная обработка бизнес-правил
- Валидация и error handling
- Edge cases consideration
API Design (15%):
- RESTful principles
- Proper HTTP methods и status codes
- Request/Response design
Качество кода (15%):
- Тестирование стратегия
- Transaction management
- Exception handling
Уровни оценки:
- Senior level: Полное решение со всеми деталями, best practices, edge cases
- Middle level: Основные компоненты покрыты, базовая архитектура правильная
- Junior level: Базовое понимание задачи, простое решение
Каждая задача покрывает ключевые навыки Middle разработчика и может быть адаптирована под специфику вашей складской логистики добавлением warehouse-specific деталей.