> Какая должна быть длина короткой ссылки, чтобы избежать коллизий при заданной нагрузке и времени жизни (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Международный аэропорт Шереметьево
Стек: Python
> Пример ответа
Для оценки минимальной длины короткой ссылки, гарантирующей отсутствие коллизий при заданной нагрузке и времени жизни, нужно рассчитать общее количество уникальных ссылок, которое может быть сгенерировано за период.
Формула:
N = R * T, где:
R- количество запросов на создание ссылки в секунду (нагрузка),T- время жизни ссылки в секундах.
Количество уникальных комбинаций для алфавита длиной A (например, 62 символа: [a-z, A-Z, 0-9]) и длины ссылки L равно A^L.
Условие отсутствия коллизий:
A^L >= N
Пример расчёта:
- Нагрузка: 1000 ссылок/сек
- Время жизни: 1 год = 31 536 000 секунд
N = 1000 * 31 536 000 = 31 536 000 000- Минимальное
LприA=62:62^6 ≈ 56 800 000 000(больше N)62^5 ≈ 916 000 000(меньше N)
- Ответ: длина 6 символов (например,
aB3xY9).
Важно:
- Если допускаются коллизии (например, с повторной попыткой генерации), длина может быть меньше.
- Для повышения надёжности используют хеширование (MD5, SHA-256) с обрезанием до нужной длины, но это не исключает коллизий полностью - тогда применяют проверку уникальности в БД.
Итог:
Длина = ceil(log_A(N)). Для типовых нагрузок (100-10 000 ссылок/сек) и времени жизни до года достаточно 6-7 символов.
> Похожие задачи по Python
Как справляться с коллизиями при генерации коротких ссылок
Как оценить необходимое дисковое пространство для хранения сокращенных ссылок с учетом нагрузки и времени жизни
С чем именно приходилось бороться в производительности
Насколько доволен своей оценкой задач
> Похожие задачи по backend
Как справляться с коллизиями при генерации коротких ссылок
Как оценить необходимое дисковое пространство для хранения сокращенных ссылок с учетом нагрузки и времени жизни
С чем именно приходилось бороться в производительности
Насколько доволен своей оценкой задач
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью