Ingeniero de Software: pregunta de entrevista
¿Cómo diseñarías un acortador de URL?
Un acortador necesita IDs sin colisiones, almacenamiento duradero del mapeo, redirección optimizada para lectura, caché de enlaces populares, controles de abuso, expiración, analítica fuera de la ruta crítica y estimaciones de capacidad.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
El núcleo es un mapeo de un código corto a una URL larga con una ruta de lectura que debe ser rápida y muy disponible y una ruta de escritura rara en comparación. Los códigos salen de una codificación base62 de un contador o de IDs aleatorios con comprobación de colisión; el mapeo vive en un almacén clave-valor o una tabla simple con el código como clave primaria; los códigos calientes se cachean en el borde; la redirección es 301 o 302 según si la analítica necesita cada visita. Los controles de abuso escanean destinos, limitan la creación y permiten retiradas. La analítica se escribe de forma asíncrona para que un pipeline lento nunca retrase una redirección. La capacidad se estima por tasa de escritura, tasa de lectura y retención.
Ejemplo
Para 100 millones de enlaces al año y 10.000 millones de redirecciones, un espacio de códigos base62 de 7 caracteres sobra; las escrituras van a un almacén clave-valor particionado con el código como clave; una CDN cachea las redirecciones de códigos populares; cada visita publica un evento a un stream para contarlo. Crear requiere una clave de API con cuotas por clave, y los destinos nuevos pasan por una comprobación de navegación segura antes de activar el enlace.
Errores frecuentes
- Usar un entero autoincremental directamente como código, de modo que los enlaces son enumerables.
- Devolver 301 mientras se promete analítica por clic que los navegadores se saltarán.
- Poner la escritura de analítica en la ruta de redirección y hacer que cada clic la espere.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.