anagram
This commit is contained in:
parent
45bc53f88a
commit
75d2d36f64
|
@ -0,0 +1,113 @@
|
|||
## 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
|
Loading…
Reference in New Issue