> Как генерировать короткую ссылку в системе url shortener (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Black Wall Group (BWG)

Стек: Go

> Пример ответа

Для генерации короткой ссылки в URL shortener на Go используется хеширование или кодирование уникального идентификатора. Типичный подход:

  1. Генерация уникального ID (например, через автоинкремент в БД или UUID).
  2. Кодирование ID в короткую строку с помощью base62 (0-9, a-z, A-Z) - это даёт компактное представление.

Пример реализации:

GO
import (
"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 % 62
encoded = append([]byte{base62Chars[remainder]}, encoded...)
num /= 62
}
return string(encoded)
}

Альтернативный вариант - хеширование исходного URL (MD5/SHA1) с последующим усечением до 6-8 символов, но это может давать коллизии, поэтому требуется проверка уникальности в БД.

Готовая короткая ссылка: http://short.domain/Ab3xYz - где Ab3xYz - результат кодирования.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью