Топ эндпоинтов по access-логу с нормализацией маршрутов
Условие
Дан access-лог. Первая строка: k n. Дальше n строк вида <МЕТОД> <путь> <статус> <мс>.
Нужно найти k самых частых эндпоинтов. Эндпоинт это метод плюс нормализованный путь: строка запроса (?...) отбрасывается, а каждый сегмент пути, состоящий только из цифр, заменяется на :id. Так /api/users/15?full=1 и /api/users/7 это один эндпоинт /api/users/:id.
Выведи до k строк <число запросов> <МЕТОД> <путь> <среднее время>, среднее округляется вниз до целого. Порядок: по убыванию числа запросов, при равенстве по строке "<МЕТОД> <путь>" в порядке возрастания кодов символов.
n ≤ 1000.
Пример
2 5
GET /api/users/15 200 30
GET /api/users/7 200 50
POST /api/orders 201 120
GET /api/users/15?full=1 404 10
POST /api/orders 500 300
3 GET /api/users/:id 30
2 POST /api/orders 210
Как подойти
Подсказки: 2
- Сначала нормализуй путь: отрежь
?, замени числовые сегменты. - Храни для ключа число запросов и сумму времени.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Слияние k отсортированных логов
Следующий вопрос
Сессии пользователей по потоку событий