> Как генерировать короткую ссылку в системе url shortener (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Black Wall Group (BWG)
Стек: Go
> Пример ответа
Для генерации короткой ссылки в URL shortener на Go используется хеширование или кодирование уникального идентификатора. Типичный подход:
- Генерация уникального ID (например, через автоинкремент в БД или UUID).
- Кодирование ID в короткую строку с помощью base62 (0-9, a-z, A-Z) - это даёт компактное представление.
Пример реализации:
GOimport ("math/big""crypto/rand")const base62Chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"func GenerateShortID() string {// Генерация случайного 64-битного числаn, _ := rand.Int(rand.Reader, big.NewInt(1<<62))return base62Encode(n.Uint64())}func base62Encode(num uint64) string {if num == 0 {return string(base62Chars[0])}encoded := make([]byte, 0)for num > 0 {remainder := num % 62encoded = append([]byte{base62Chars[remainder]}, encoded...)num /= 62}return string(encoded)}
Альтернативный вариант - хеширование исходного URL (MD5/SHA1) с последующим усечением до 6-8 символов, но это может давать коллизии, поэтому требуется проверка уникальности в БД.
Готовая короткая ссылка: http://short.domain/Ab3xYz - где Ab3xYz - результат кодирования.
> Похожие задачи по Go
Есть ли у TCP и UDP операция подтверждения доставки
На какие действия можно повесить триггер
Влияют ли индексы на другие запросы кроме ускорения поиска
Какую метрику Prometheus использовать для подсчета RPS сервера
> Похожие задачи по backend
Есть ли у TCP и UDP операция подтверждения доставки
На какие действия можно повесить триггер
Влияют ли индексы на другие запросы кроме ускорения поиска
Какую метрику Prometheus использовать для подсчета RPS сервера
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью