113 lines
3.1 KiB
Markdown
113 lines
3.1 KiB
Markdown
|
## Anagram microservice
|
|||
|
|
|||
|
### Задача
|
|||
|
|
|||
|
Разработать микросервис на Go для группировки слов по анаграммам с возможностью обработки больших объемов данных.
|
|||
|
|
|||
|
### Основные требования
|
|||
|
|
|||
|
1. REST API
|
|||
|
|
|||
|
Реализовать HTTP API со следующими эндпоинтами:
|
|||
|
|
|||
|
POST /api/v1/anagrams/group - группировка массива слов
|
|||
|
|
|||
|
GET /api/v1/anagrams/groups/{id} - получение результата по ID задачи
|
|||
|
|
|||
|
GET /api/v1/health - проверка состояния сервиса
|
|||
|
|
|||
|
2. Входные данные
|
|||
|
|
|||
|
```json
|
|||
|
{
|
|||
|
"words": ["ток","рост","кот","торс","Кто","фывап","рок"],
|
|||
|
"case_sensitive": false
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
3. Выходные данные
|
|||
|
|
|||
|
```json
|
|||
|
{
|
|||
|
"task_id": "uuid-string",
|
|||
|
"status": "completed",
|
|||
|
"result": [
|
|||
|
["ток","кот","Кто"],
|
|||
|
["рост","торс"],
|
|||
|
["фывап"],
|
|||
|
["рок"]
|
|||
|
],
|
|||
|
"processing_time_ms": 15,
|
|||
|
"groups_count": 4
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
4. Архитектура и производительность
|
|||
|
|
|||
|
Использовать паттерн Clean Architecture
|
|||
|
|
|||
|
Реализовать пул горутин для обработки больших массивов (>10k слов)
|
|||
|
|
|||
|
Добавить кэширование результатов (in-memory)
|
|||
|
|
|||
|
Поддержка конкурентной обработки нескольких запросов
|
|||
|
|
|||
|
5. Обработка больших данных
|
|||
|
|
|||
|
Поддержка потоковой обработки для массивов >100k элементов
|
|||
|
|
|||
|
Возможность загрузки данных из файла (CSV, JSON)
|
|||
|
|
|||
|
6. Мониторинг и логирование
|
|||
|
|
|||
|
Структурированное логирование (logrus/zap)
|
|||
|
|
|||
|
Трейсинг запросов
|
|||
|
|
|||
|
Graceful shutdown
|
|||
|
|
|||
|
8. Тестирование
|
|||
|
|
|||
|
Unit тесты с покрытием >80%
|
|||
|
|
|||
|
Integration тесты
|
|||
|
|
|||
|
Benchmark тесты для алгоритма группировки
|
|||
|
|
|||
|
Тестирование нагрузки
|
|||
|
|
|||
|
9. API дополнения
|
|||
|
|
|||
|
POST /api/v1/anagrams/upload - загрузка файла со словами
|
|||
|
|
|||
|
GET /api/v1/anagrams/stats - статистика обработанных запросов
|
|||
|
|
|||
|
DELETE /api/v1/anagrams/cache - очистка кэша
|
|||
|
|
|||
|
10. Обработка ошибок
|
|||
|
|
|||
|
Валидация входных данных
|
|||
|
|
|||
|
Rate limiting
|
|||
|
|
|||
|
Timeout для долгих операций
|
|||
|
|
|||
|
Возврат детальных ошибок в JSON формате
|
|||
|
|
|||
|
-----------------
|
|||
|
|
|||
|
Критерии оценки:
|
|||
|
|
|||
|
Качество и читаемость кода
|
|||
|
|
|||
|
Архитектурные решения
|
|||
|
|
|||
|
Производительность алгоритма
|
|||
|
|
|||
|
Обработка edge cases
|
|||
|
|
|||
|
Покрытие тестами
|
|||
|
|
|||
|
Документация API (Swagger/OpenAPI)
|
|||
|
|
|||
|
Monitoring и observability
|