Храните соответствие короткого кода исходному URL, дату истечения и владельца. Создание проверяет допустимость URL и лимит, переход проверяет срок, а аналитику записывает асинхронно.
Сервис генерации коротких URL
Храните соответствие короткого кода исходному URL, дату истечения и владельца. Создание проверяет допустимость URL и лимит, переход проверяет срок, а аналитику записывает асинхронно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте сервис, который преобразует длинные URL‑адреса в короткие варианты и возвращает их клиенту. Требования к функционалу:
- преобразование «длинный URL → короткий URL» (короткая ссылка должна быть отправлена в ответе);
- ограниченный срок жизни каждой ссылки;
- у пользователей могут быть имена (не требуется полноценная система управления доступом);
- реализовать ограничение частоты запросов (rate limiting);
- собрать и предоставить аналитику использования ссылок.
Ответ
Храните соответствие короткого кода исходному URL, дату истечения и владельца. Создание проверяет допустимость URL и лимит, переход проверяет срок, а аналитику записывает асинхронно.
POST /links возвращает короткий адрес; GET /{code} делает временный redirect, чтобы управлять истечением и учитывать переходы. Код должен быть уникальным с обработкой коллизии в БД. Кэш не должен жить дольше ссылки. Разрешайте только допустимые схемы URL; не загружайте произвольные адреса сервером без SSRF-защиты. Имя пользователя не является доказательством личности. Для аналитики определите события, дедупликацию ботов и минимальный состав сохраняемых данных.