Preguntas de Entrevista Backend
Bases de datos, APIs, caché, sistemas distribuidos, seguridad y escalabilidad — preguntas de backend agnósticas de lenguaje, de básico a nivel senior, con diagramas y animaciones donde el código solo no alcanza. Para contenido profundo de Kotlin/Spring, mirá la guía de Backend Kotlin & Spring y el curso de Kotlin + Spring Boot 4.
- Bases de Datos
- Básico
SQL vs NoSQL — ¿cómo decides realmente para un servicio nuevo?
Olvida los eslóganes de marketing — la decisión real depende de la forma de tus datos, tus requisitos de consistencia y tus patrones de consulta, no de cuál base de datos suena "más moderna".
Ver pregunta - Básico
Normalización vs desnormalización — ¿cuál es el verdadero tradeoff?
No es una cuestión de estilo — la normalización te da integridad al escribir, la desnormalización te da velocidad al leer, y saber en qué capa de tu arquitectura va cada una es la habilidad real.
Ver pregunta - Avanzado
¿Cómo funcionan realmente los índices B-tree y hash, y por qué eso determina qué consultas aceleran?
Un índice hash y un B-tree responden ambos "¿dónde está esta fila?", pero su forma interna decide, con certeza matemática, qué consultas puede acelerar cada uno y cuáles no.
Ver pregunta - Intermedio
¿Qué hace efectivo a un índice compuesto, y qué es la selectividad de un índice?
El orden de las columnas en un índice compuesto no es una preferencia de estilo — lo dictan la regla del prefijo por la izquierda y la norma de poner la igualdad antes que el rango.
Ver pregunta - Básico
Explica ACID — y da un ejemplo real de una transacción que se rompería si se violara cada propiedad
Cualquiera puede recitar la sigla; un ingeniero senior puede producir una transacción concreta y mostrar exactamente cómo se rompe si se elimina la Atomicidad, la Consistencia, el Aislamiento o la Durabilidad.
Ver pregunta - Avanzado
Recorre los niveles de aislamiento de transacciones — de Read Uncommitted a Serializable — y la anomalía que resuelve cada uno
Los niveles de aislamiento son una perilla que intercambia consistencia por concurrencia — aprende qué anomalía cierra cada nivel y qué te cuesta en throughput.
Ver pregunta - Intermedio
Locking optimista vs pesimista — ¿cuándo gana cada uno?
Ambos evitan que dos transacciones pisen la misma fila — solo difieren en si pagan el costo de coordinación por adelantado o solo cuando hay un conflicto real.
Ver pregunta - Avanzado
¿Cómo funciona realmente la replicación de bases de datos — líder-seguidor vs multi-líder, y qué puede salir mal?
Una sola copia de tus datos es un punto único de falla — la replicación compra resiliencia y escala de lectura, pero obliga a decidir qué pasa cuando las copias no coinciden.
Ver pregunta - Avanzado
¿Cuáles son las principales estrategias de sharding, y cómo eliges una shard key?
El sharding escala escrituras dividiendo los datos entre nodos — pero la decisión que moldea cada consulta y cada dolor de cabeza futuro es la clave por la que particionas.
Ver pregunta - Avanzado
Explica el teorema CAP con un ejemplo concreto de qué pasa durante una partición de red
Las particiones no son opcionales en un sistema distribuido — CAP en realidad describe qué te ves obligado a sacrificar en el instante en que ocurre una.
Ver pregunta - Básico
¿Cuándo conviene más una base de datos de documentos como MongoDB que una relacional, y cuándo te pasa factura?
Las bases de datos de documentos cambian joins y esquemas rígidos por estructuras embebidas optimizadas para lectura, ideal hasta que las relaciones de tus datos superan lo que cabe en un documento.
Ver pregunta - Básico
Las bases clave-valor como Redis o DynamoDB, ¿para qué sirven realmente más allá del caché?
El caché es la puerta de entrada, no el destino: las bases clave-valor también sirven como almacenamiento de sesiones, limitadores de tasa, tablas de clasificación, locks distribuidos y la base de diseños de tabla única a escala masiva.
Ver pregunta - Intermedio
¿Qué es una base de columnas anchas como Cassandra, y en qué se diferencia su modelo de datos de una tabla relacional?
Las tablas de Cassandra parecen tablas hasta que notas que la clave primaria en realidad cumple dos trabajos distintos —uno elige la máquina, el otro el orden— y esa división es todo el modelo.
Ver pregunta - Intermedio
¿Cuándo se rompe tanto el modelo relacional que conviene recurrir a una base de datos de grafos?
Los joins relacionales se vuelven más lentos mientras más profunda es una relación; las bases de datos de grafos guardan la relación misma como un puntero indexado de primera clase, así que recorrer cinco saltos cuesta casi lo mismo que recorrer uno.
Ver pregunta - Avanzado
¿Cómo se lee un plan de ejecución de consultas (EXPLAIN/EXPLAIN ANALYZE) para encontrar el cuello de botella real?
Un plan de consulta se lee de abajo hacia arriba y de adentro hacia afuera; la habilidad real está en detectar el único nodo donde las filas estimadas y las reales se disparan, o donde un escaneo toca mucho más de lo que devuelve.
Ver pregunta - Básico
¿Qué es el problema N+1 y cómo se resuelve de verdad?
Un endpoint de listado, un bucle inocente, y de repente la base de datos responde mil consultas para una página que debía necesitar dos.
Ver pregunta - Básico
¿Cómo funciona el pooling de conexiones y cómo se dimensiona un pool correctamente?
Abrir una conexión a la base de datos es tan costoso que hacerlo por cada request te va a limitar mucho antes que la capacidad real de consultas de la base de datos.
Ver pregunta - Avanzado
¿Cómo ejecutas una migración de esquema en una tabla grande de producción sin downtime?
Una migración que bloquea una tabla de 200 millones de filas para reescribirla completa no es un cambio de esquema, es un incidente — la solución es nunca dejar incompatibles la forma vieja y la nueva al mismo tiempo.
Ver pregunta - Intermedio
¿Qué hace diferente a una base de datos de series temporales y cuándo hace falta una de verdad?
Las métricas y eventos son de solo-anexado, siempre se consultan por rango de tiempo y crecen para siempre — una base OLTP genérica puede guardarlos, pero no fue construida para hacerlo bien.
Ver pregunta - Intermedio
¿Cómo funciona la búsqueda de texto completo por dentro (índices invertidos) y cuándo se usa Elasticsearch en vez de la búsqueda de texto de Postgres?
Un LIKE '%term%' recorre cada fila cada vez; un índice invertido voltea la pregunta de 'esta fila contiene la palabra' a 'a qué filas apunta esta palabra,' respondida en microsegundos.
Ver pregunta - Intermedio
¿Cómo es realmente una buena estrategia de backup y recuperación ante desastres? (RPO/RTO, recuperación a un punto en el tiempo)
Hacer un backup es fácil, pero acertar con la estrategia no: el verdadero trabajo está en definir RPO/RTO, habilitar PITR y ensayar el failover, no solo en programar un pg_dump nocturno.
Ver pregunta - Intermedio
¿Cómo funcionan las réplicas de lectura y el read/write splitting, y cuál es la trampa (el lag de replicación)?
Enviar los SELECT a réplicas multiplica tu capacidad de lectura casi gratis... hasta que el lag de replicación hace que un usuario deje de ver su propio cambio recién guardado.
Ver pregunta - Avanzado
¿Cómo diseñas una base de datos multi-tenant: esquema compartido, esquema por tenant o base de datos por tenant?
La decisión de multi-tenancy es en realidad una decisión sobre dónde quieres que viva el aislamiento — en una columna, en un esquema o en una base de datos completa — y cada respuesta cambia costo por radio de impacto.
Ver pregunta - Avanzado
Una tabla creció a cientos de millones de filas: ¿cómo la particionas?
El particionamiento divide una tabla inmanejable en varias tablas manejables detrás de un solo nombre lógico — todo el arte está en elegir una clave de partición que coincida con cómo se consulta realmente la tabla.
Ver pregunta - Básico
¿Cómo eliges una estrategia de clave primaria: UUID, auto-incremental o un ID distribuido estilo Snowflake?
La opción 'obvia' — un entero auto-incremental — se rompe en silencio en cuanto shardeas, replicas entre regiones o necesitas generar un ID antes de que la fila toque la base de datos.
Ver pregunta - APIs y Protocolos
- Básico
¿Qué diferencia a una API REST bien diseñada de una mediocre?
Las buenas APIs REST se leen como un mapa del dominio: sustantivos para los recursos, verbos HTTP para las acciones, y códigos de estado que no mienten.
Ver pregunta - Básico
REST vs GraphQL vs gRPC vs SOAP: ¿cómo elegís en la práctica?
Cuatro formas de darle forma a una petición en la red, cada una optimizada para un tipo de falla distinto: elegí la que puedas tolerar.
Ver pregunta - Intermedio
¿Qué hace que un endpoint sea idempotente, y cómo funcionan las claves de idempotencia en operaciones no idempotentes como los pagos?
La idempotencia es lo que le permite a un cliente reintentar a ciegas después de un timeout sin cobrarle dos veces a nadie: la garantía que HTTP te da gratis, y la que tenés que construir vos.
Ver pregunta - Básico
¿Cuáles son las principales estrategias de versionado de APIs (URI, header, content negotiation) y sus contrapartidas?
Toda API tarde o temprano rompe un contrato con alguien: versionar es decidir, de antemano, con qué frecuencia y qué tan fuerte va a doler.
Ver pregunta - Avanzado
Explicá los principales algoritmos de rate limiting: token bucket, leaky bucket, ventana fija y ventana deslizante (log/contador)
El rate limiting es una pregunta sobre ráfagas, no sobre promedios: cada algoritmo es, en el fondo, una respuesta distinta a "cuánta ráfaga permito, y cómo recuerdo el pasado reciente".
Ver pregunta - Básico
Paginación por offset vs. paginación por cursor/keyset — ¿qué se rompe con offset a gran escala?
LIMIT/OFFSET parece la forma obvia de paginar una lista, hasta que la página 500 obliga a la base de datos a recorrer medio millón de filas solo para descartarlas.
Ver pregunta - Básico
Repasa los códigos de estado HTTP que una API debería usar correctamente (no solo 200 y 500)
La mayoría de las APIs usa bien unos seis códigos de estado y tapa todo lo demás con 200 o 500 — este es el vocabulario que un entrevistador espera que domines.
Ver pregunta - Intermedio
Webhooks vs. polling vs. long-polling vs. Server-Sent Events vs. WebSockets — ¿cuándo encaja cada uno?
Cinco respuestas distintas a la misma pregunta —cómo se entera el cliente de que algo cambió— y los entrevistadores la usan para ver si vas directo a WebSockets por costumbre o de verdad pesás las alternativas.
Ver pregunta - Avanzado
¿Cómo funciona gRPC realmente por debajo — Protocol Buffers, streaming sobre HTTP/2, y por qué es más rápido que REST+JSON?
La fama de velocidad de gRPC en realidad son tres mecanismos separados apilados entre sí — separarlos te da una respuesta genuinamente senior en lugar de un benchmark memorizado.
Ver pregunta - Avanzado
¿Qué es el problema N+1 en GraphQL y cómo lo resuelve DataLoader (batching + caching)?
Una sola consulta GraphQL puede disparar en silencio cientos de llamadas a la base de datos cuando los resolvers anidados corren por separado — DataLoader las agrupa y las cachea.
Ver pregunta - Intermedio
¿Qué hace realmente un API gateway y por qué poner uno delante de tus microservicios?
Un API gateway es la única puerta de entrada a tus servicios — ruteo, autenticación, rate limiting y agregación viven ahí para que los clientes se mantengan simples.
Ver pregunta - Intermedio
Autenticación de APIs: API keys, OAuth2 y JWT — ¿qué es realmente distinto, y cuándo se combinan?
API keys, OAuth2 y JWT se tratan como competidores, pero cada uno responde una pregunta distinta sobre identidad, delegación y forma del token.
Ver pregunta - Avanzado
Explica paso a paso el flujo de authorization code de OAuth2 con PKCE
Los clientes públicos como las SPA y las apps móviles no pueden guardar un secreto, así que PKCE ata el inicio del flujo con su final.
Ver pregunta - Básico
¿Contra qué protege realmente CORS, y cuál es la diferencia real entre solicitudes simples y con preflight?
CORS parece una regla de firewall, pero es un contrato que el navegador hace cumplir entre orígenes — saber qué bloquea, y qué nunca toca, evita configuraciones costosas.
Ver pregunta - Intermedio
¿Qué es el contract testing de APIs, y cómo encaja una especificación OpenAPI/Swagger en tu flujo de desarrollo y pruebas?
Las pruebas de integración detectan el desvío solo cuando dos equipos chocan en un entorno compartido — el contract testing lo detecta en el CI de cada equipo, contra una especificación que ambos ya acordaron.
Ver pregunta - Intermedio
¿Cómo evolucionas una API sin romper a los clientes existentes?
Cada campo que agregas es gratis; cada campo que quitas, renombras o le cambias el tipo es una promesa rota con alguien que probablemente nunca conociste — evolucionar bien una API significa tratar el contrato como público aunque no lo sea.
Ver pregunta - Básico
¿Cómo funciona la compresión HTTP (gzip/brotli), y cuándo realmente ayuda o perjudica?
La compresión intercambia CPU por ancho de banda mediante negociación de contenido — si haces mal el intercambio, quemas ciclos recomprimiendo un JPEG o, peor, abres un canal lateral que filtra secretos sobre TLS.
Ver pregunta - Intermedio
HTTP/2 vs HTTP/3 (QUIC) — ¿qué problema resuelve realmente cada uno?
Ambos prometen una web más rápida, pero atacan cuellos de botella completamente distintos: uno vive en el pool de conexiones del navegador, el otro vive dentro de TCP.
Ver pregunta - Intermedio
Explica el handshake del protocolo WebSocket, ¿y cuándo hace falta de verdad una conexión persistente?
Un WebSocket nace como una petición HTTP normal y solo se convierte en otra cosa cuando ambos lados aceptan dejar de hablar HTTP — el handshake te dice exactamente qué estás sacrificando a cambio.
Ver pregunta - Básico
¿Cómo debería una API devolver errores? ¿Cómo es una buena respuesta de error estandarizada (por ejemplo, RFC 7807 Problem Details)?
Una respuesta de error sigue siendo parte del contrato de tu API — 'se rompió, aquí tienes un stack trace' no es un diseño, y RFC 7807 le da a cualquier cliente la misma forma para interpretar.
Ver pregunta - Intermedio
¿Cómo diseñas un endpoint de API para una operación de larga duración (por ejemplo, procesamiento de video) — síncrono, polling o webhooks?
Hacer que el cliente espere con una conexión abierta durante una transcodificación de video de dos minutos es la receta perfecta para timeouts del gateway — la solución es aceptar el trabajo de inmediato y dejar que el cliente vuelva a preguntar.
Ver pregunta - Avanzado
¿Qué hace falta para diseñar una API pública que los desarrolladores externos realmente quieran usar?
Una API correcta y una que a la gente le guste usar son dos proyectos distintos — la diferencia la marcan la documentación, los SDKs, un sandbox donde poder fallar sin miedo, y una política de deprecación con la que se pueda planear de verdad.
Ver pregunta - Caché
- Básico
Cache-aside vs. write-through vs. write-behind: ¿en qué se diferencian realmente estos patrones de caché?
Tres formas de mantener sincronizados una caché y una base de datos, cada una con un compromiso distinto entre latencia, consistencia y el radio de daño si algo falla.
Ver pregunta - Básico
¿Cuáles son las principales estrategias de invalidación de caché (TTL, invalidación explícita, basada en eventos) y por qué la invalidación de caché es tan famosamente difícil?
La frase de Phil Karlton sobre "solo dos cosas difíciles en informática" es un cliché porque toda estrategia de invalidación cambia frescura por complejidad en algún punto.
Ver pregunta - Básico
¿Cómo funciona el caché de CDN/edge, y qué encabezados HTTP lo controlan?
Las CDN acercan las respuestas a servidores cerca del usuario, pero solo los encabezados de la respuesta deciden si pueden hacerlo, por cuánto tiempo y para quién.
Ver pregunta - Intermedio
Redis no es solo un almacén clave-valor: ¿qué estructuras de datos ofrece y qué problemas reales resuelve?
Hashes, sorted sets, listas y streams cargan cada uno sus propias garantías de complejidad y compromisos de durabilidad: elegir el correcto es la habilidad real.
Ver pregunta - Avanzado
¿Qué es un cache stampede (thundering herd) y cómo se previene cuando expira una clave caliente?
Cuando una sola entrada de caché popular expira, miles de peticiones pueden caer sobre tu base de datos en el mismo instante — así se evita esa avalancha antes de que empiece.
Ver pregunta - Intermedio
Caché local (en el proceso) vs. caché distribuida: ¿cuál es el verdadero tradeoff?
Ambas mantienen los datos cerca del lector, pero una vive y muere con un solo proceso mientras la otra vive y muere con la red — la elección cambia tu consistencia, latencia e historia de fallos.
Ver pregunta - Básico
¿Cómo funcionan realmente las políticas de desalojo LRU y LFU, y cuándo conviene usar una sobre la otra?
Tanto LRU como LFU deciden qué descartar cuando una caché se llena, pero apuestan por señales completamente distintas — y cada una tiene una carga de trabajo que la rompe en silencio.
Ver pregunta - Básico
Recorre los encabezados de caché HTTP — Cache-Control, ETag, Last-Modified, If-None-Match — y cómo funciona realmente una solicitud condicional
Frescura y validación son dos trabajos separados en el cacheo HTTP — uno se salta la red por completo, el otro sigue preguntando pero puede responder con casi nada.
Ver pregunta - Avanzado
¿Cómo mantienes un caché consistente cuando tienes múltiples instancias de la aplicación escribiendo en él?
Cuando varias instancias escriben el mismo dato, solo una invalidación disciplinada —no copiar el valor nuevo por todas partes— mantiene sincronizado cada caché.
Ver pregunta - Básico
¿Qué es el patrón de caché write-around, y cuándo supera al write-through?
Write-around se salta el caché por completo al escribir, cambiando un primer miss garantizado por un camino de escritura más simple y rápido en datos que nadie relee de inmediato.
Ver pregunta - Intermedio
¿Cómo funciona el cacheo multinivel — L1 en proceso + Redis L2 + CDN — y por qué apilarlos?
Apilar un caché en proceso, una capa Redis compartida y una CDN convierte un problema de hit rate en tres, cada capa atrapando lo que la anterior dejó pasar.
Ver pregunta - Básico
¿Qué es el precalentamiento de caché (cache warming), y cuándo vale la pena la complejidad operativa?
El precalentamiento de caché precarga las claves calientes antes de que llegue el tráfico, cambiando piezas operativas extra por inmunidad a las estampidas de arranque en frío.
Ver pregunta - Básico
¿Qué es el caché negativo (cachear resultados de ‘no encontrado’) y por qué importa para proteger tu backend?
Un caché que solo recuerda los aciertos deja que atacantes o bugs golpeen tu base de datos buscando claves que nunca existirán: el caché negativo cierra esa brecha.
Ver pregunta - Avanzado
¿Cómo funciona el hashing consistente, y por qué los cachés distribuidos como Memcached/Redis Cluster lo necesitan en lugar de un simple hashing por módulo?
Al agregar o quitar un servidor, el hashing por módulo reubica casi todas las claves de golpe; el hashing consistente limita el daño a una porción mínima y predecible.
Ver pregunta - Intermedio
Sticky sessions vs. un caché de sesión compartido: ¿cómo manejar el estado de sesión del usuario detrás de un balanceador de carga?
Fijar a un usuario a un solo servidor te hereda sus problemas de disponibilidad; mover las sesiones a un caché compartido cambia algo de latencia por escalabilidad horizontal real.
Ver pregunta - Intermedio
¿Cómo funciona el cacheo de resultados de consultas en un ORM o en la capa de base de datos, y qué lo invalida?
El cacheo de resultados de consultas promete evitar viajes costosos a la base de datos, hasta que un simple UPDATE deja a la mitad de tus usuarios mirando datos de ayer sin que nadie se entere.
Ver pregunta - Básico
¿Qué hace que una clave de caché sea buena, y qué sale mal cuando el diseño de la clave falla (colisiones, falta de versión o de scoping por tenant)?
Una clave de caché es una promesa de que 'esta entrada exacta produce esta salida exacta'; rompe esa promesa y terminarás sirviendo los datos de otra persona, o de otro tenant, sin que aparezca un solo error en los logs.
Ver pregunta - Intermedio
¿Cuándo NO deberías recurrir a una caché? ¿Cuáles son los riesgos reales de cachear en exceso?
El cacheo suele venderse como una mejora de rendimiento gratuita, pero cada caché que agregas es una segunda fuente de verdad, un nuevo modo de fallo y una apuesta a que la obsolescencia sale más barata que la consulta que estás evitando.
Ver pregunta - Microservicios y Sistemas Distribuidos
- Básico
¿Cuándo realmente compensa dividir un monolito en microservicios, y cuándo es un error costoso?
Los microservicios cambian un problema difícil (un código enredado) por otro (una red enredada) — la pregunta es si tu organización es más grande que el problema que resuelve.
Ver pregunta - Intermedio
¿Cómo funciona el descubrimiento de servicios — descubrimiento del lado del cliente vs. del lado del servidor?
Todo despliegue dinámico necesita responder '¿a qué dirección llamo ahora mismo?' — la decisión de diseño interesante es quién consulta el registro y dónde ocurre el balanceo de carga.
Ver pregunta - Avanzado
¿Cómo funcionan las transacciones distribuidas entre microservicios? — recorre el patrón saga, orquestación vs. coreografía
Cuando una operación lógica abarca cuatro bases de datos que no controlas en conjunto, la atomicidad cede paso a una secuencia de commits locales más acciones compensatorias cuando algo falla más adelante.
Ver pregunta - Avanzado
¿Qué es el commit de dos fases, y por qué la mayoría de los sistemas distribuidos lo evitan a gran escala?
El commit de dos fases compra atomicidad real entre servicios haciendo que cada participante prometa hacer commit antes de que nadie lo haga — y esa promesa es justo lo que puede congelar el sistema por completo.
Ver pregunta - Intermedio
Explica el patrón circuit breaker — ¿cuáles son sus estados y cuándo ocurre cada transición?
Lleva el nombre del fusible de tu casa por una razón: un circuit breaker impide que un llamador siga golpeando una dependencia que falla, fallando rápido en lugar de acumular hilos que nunca regresan.
Ver pregunta - Intermedio
¿Qué es el patrón bulkhead (compartimentos estancos) y cómo evita que una dependencia que falla derribe todo tu servicio?
Un proveedor de pagos lento no debería poder congelar todo tu flujo de checkout — los bulkheads aíslan los recursos de cada dependencia para que un fallo quede contenido.
Ver pregunta - Intermedio
¿Qué problema resuelve realmente un service mesh (Istio/Linkerd) que no podrías resolver ya en el código de la aplicación?
Istio y Linkerd no inventan capacidades nuevas — mueven mTLS, reintentos y observabilidad fuera del código de cada servicio hacia infraestructura compartida y gobernada centralmente.
Ver pregunta - Avanzado
¿Cómo resuelves una consulta que necesita datos de 5 microservicios distintos: composición de APIs vs. CQRS con un modelo de lectura?
Hacer fan-out a cinco llamadas paralelas y fusionarlas, o mantener un modelo de lectura pre-unido construido a partir de eventos — la elección correcta depende de la latencia, la consistencia y la forma de la consulta.
Ver pregunta - Intermedio
¿Cómo funciona el tracing distribuido? ¿Qué es un trace, qué es un span, y cómo se propaga el contexto entre llamadas a servicios?
Un trace es la historia completa de una petición a través de una docena de servicios; un span es un capítulo de esa historia — y un header llamado traceparent es lo que mantiene la historia conectada.
Ver pregunta - Avanzado
Dame la intuición detrás de los algoritmos de consenso como Raft: ¿cómo se ponen de acuerdo los nodos distribuidos sobre un único valor?
Ningún nodo individual puede ser el único en decidir — Raft muestra cómo una mayoría de máquinas poco confiables se pone de acuerdo en una sola verdad, incluso cuando los líderes caen y las redes se dividen.
Ver pregunta - Intermedio
¿Qué hace que un consumidor de mensajes sea idempotente, y por qué la entrega at-least-once obliga a diseñarlo así?
Los brokers reentregan. Las redes reintentan. Si procesar un mensaje dos veces cambia el resultado, tu sistema no falla por casualidad -- falla por diseño.
Ver pregunta - Avanzado
¿Qué es el event sourcing — almacenar eventos en vez de estado — y qué se gana y qué se pierde?
En vez de sobrescribir una fila, el event sourcing agrega lo que ocurrió y reconstruye el estado actual reproduciendo el historial -- el registro de auditoría se convierte en la fuente de verdad.
Ver pregunta - Intermedio
¿Cómo permite el patrón strangler fig migrar un monolito a microservicios de forma incremental?
Llamado así por una enredadera que envuelve un árbol y termina por reemplazarlo, el patrón strangler fig enruta el tráfico a través de una fachada para extraer capacidades del monolito de a una -- nunca una reescritura de una sola vez.
Ver pregunta - Avanzado
¿Cómo funciona el bloqueo distribuido — Redis Redlock vs. ZooKeeper — y qué puede salir mal?
Un mutex solo protege la memoria de un proceso -- coordinar varias máquinas alrededor de una única sección crítica exige un lock que viva fuera de todas ellas, y toda implementación intercambia seguridad por latencia en algún punto.
Ver pregunta - Avanzado
¿Qué es el patrón transactional outbox, y cómo resuelve el problema de la doble escritura entre una base de datos y un message broker?
Escribir en tu base de datos y publicar en un broker son dos sistemas separados sin transacción compartida -- el patrón outbox convierte eso en una única escritura atómica más un relay confiable, de modo que jamás puede fallar justo entre las dos.
Ver pregunta - Intermedio
¿Cómo se autentican los servicios entre sí en una malla de microservicios — mTLS vs. cuentas de servicio/tokens?
Dos servicios que se llaman entre sí por la red necesitan demostrar quiénes son sin que haya un humano de por medio — mTLS y la identidad basada en tokens resuelven eso de formas muy distintas.
Ver pregunta - Intermedio
¿Qué es el backpressure en un sistema distribuido, y cómo se implementa realmente?
Cuando un consumidor no da abasto, alguien tiene que frenar deliberadamente al productor — si no, la JVM o el kernel lo harán por ti, en el peor momento posible.
Ver pregunta - Básico
Consistencia eventual vs. consistencia fuerte — ¿cuál es el tradeoff real y cómo elegir según el caso de uso?
Todo almacén de datos replicado tiene que prometer algo sobre la obsolescencia — la habilidad no es elegir un modelo para siempre, sino ajustarlo a lo que realmente costaría una lectura obsoleta.
Ver pregunta - Avanzado
¿Cuáles son los modos de fallo comunes en sistemas distribuidos — particiones de red, split-brain, desfase de reloj — y cómo defenderse de ellos?
Una sola máquina funciona o se cae; un sistema distribuido puede tener dos nodos comportándose correctamente por separado y aun así producir juntos un resultado corrupto en silencio.
Ver pregunta - Básico
¿Cómo funcionan realmente los health checks y las sondas de readiness/liveness, y por qué son distintas?
"¿Debería reiniciarse este contenedor?" y "¿debería enrutarse tráfico aquí ahora mismo?" son preguntas distintas con remedios distintos, y confundirlas es cómo un bache de base de datos se convierte en un bucle de reinicio de toda la flota.
Ver pregunta - Básico
Despliegues blue-green vs. canary — ¿en qué se diferencian realmente y cómo elijo entre ellos?
Ambas estrategias prometen despliegues más seguros, pero blue-green cambia entornos completos al instante mientras canary desplaza el tráfico poco a poco — la elección cambia qué se rompe y qué tan rápido.
Ver pregunta - Intermedio
¿Cómo te ayudan los bounded contexts de domain-driven design a trazar correctamente los límites de tus microservicios?
Dividir servicios por tabla de base de datos u organigrama produce un monolito distribuido — los bounded contexts dividen según el significado, no la infraestructura.
Ver pregunta - Intermedio
gRPC vs. una cola de mensajes para la comunicación entre servicios — ¿cuándo elijo RPC síncrono vs. mensajería asíncrona?
Ambas mueven datos entre servicios, pero una bloquea a quien llama esperando una respuesta mientras a la otra no le importa si tarda un minuto.
Ver pregunta - Avanzado
¿Cómo ocurren las fallas en cascada en un sistema distribuido, y cómo evitas realmente que una tumbe todo?
Una sola dependencia lenta en el fondo de la cadena de llamadas puede agotar en silencio cada pool de hilos por encima de ella hasta que todo el sistema parece caído.
Ver pregunta - Avanzado
Diseña la arquitectura de backend para el flujo de un pedido de e-commerce entre microservicios — recorre los servicios y cómo se comunican
Un solo pedido toca cinco servicios y dos estilos de comunicación — recorre el flujo y las sagas que lo mantienen correcto sin una transacción distribuida.
Ver pregunta - Concurrencia y Asincronía
- Básico
¿Cómo se dimensiona correctamente un pool de hilos, y qué sale mal si te equivocas?
Dimensionar un pool de hilos parece un simple parámetro de configuración, pero el número equivocado convierte silenciosamente un servicio sano en una cola que nunca se vacía.
Ver pregunta - Básico
Async/await vs. callbacks vs. promises/futures: ¿qué cambia realmente por debajo?
Los tres resuelven el mismo problema (haz esto después de que termine aquello), pero cada uno cambia dónde vuelve el control, cómo se propagan los errores y qué aspecto tiene la pila de llamadas cuando algo falla.
Ver pregunta - Intermedio
¿Qué es una condición de carrera y cuál es tu proceso real para encontrar una en un código?
Las condiciones de carrera casi nunca se anuncian con un stack trace: aparecen como un ticket de soporte que dice "a veces el contador está mal" y desaparecen en cuanto conectas un depurador.
Ver pregunta - Intermedio
¿Qué causa un deadlock y cómo lo previene el orden consistente de locks?
Un deadlock necesita cuatro condiciones a la vez, y el orden de locks rompe exactamente una de ellas: el truco en una entrevista está en mostrar que puedes detectar dónde el código real la viola.
Ver pregunta - Intermedio
¿Cómo implementas correctamente el patrón productor-consumidor con una cola acotada?
La cola acotada es la clave del patrón: convierte "el productor es más rápido que el consumidor" de un eventual crash por falta de memoria en un backpressure deliberado y visible.
Ver pregunta - Avanzado
¿Cómo funciona el backpressure en streams reactivos (especificación Reactive Streams, Project Reactor/RxJava)?
Cuando un productor rápido se cruza con un consumidor lento, algo tiene que ceder — el backpressure es el protocolo que le permite al consumidor decir "todavía no" en vez de ahogarse.
Ver pregunta - Intermedio
¿Cómo maneja realmente la concurrencia el event loop de un solo hilo de Node.js? Recorré sus fases
Node corre tu código en un solo hilo y aun así atiende miles de conexiones a la vez — las seis fases del event loop y su cola de microtasks son todo el truco.
Ver pregunta - Avanzado
¿Qué son los hilos virtuales (Project Loom) y en qué se diferencian de los hilos de SO o los green threads de runtimes más viejos?
Los hilos virtuales se ven exactamente como hilos comunes de Java, cuestan casi nada crearlos por millones, y se desmontan en silencio del hilo de SO debajo cada vez que bloquearían.
Ver pregunta - Intermedio
¿Qué es el modelo de actores (al estilo Akka), y cómo esquiva los problemas de concurrencia de memoria compartida?
Los actores cambian el estado mutable compartido por estado privado y un mailbox — cada uno procesa exactamente un mensaje a la vez, así que las races dentro de un actor se vuelven estructuralmente imposibles.
Ver pregunta - Intermedio
¿Cómo funciona el control de concurrencia optimista (columnas de versión) en el código de la aplicación, y cuándo le gana al locking pesimista?
Una columna de versión convierte un UPDATE común en un compare-and-swap nativo de la base de datos — sin ningún lock sostenido, sólo un reintento cuando alguien más llegó primero.
Ver pregunta - Avanzado
¿Cómo implementas un rate limiting que sea correcto entre múltiples instancias de servidor, no solo en un proceso?
Los contadores en memoria mienten en cuanto escalás horizontalmente — un limitador correcto necesita estado compartido, atómico y un algoritmo de ventana bien elegido.
Ver pregunta - Avanzado
¿Qué es la concurrencia estructurada y cómo se propaga realmente la cancelación a través de un árbol de corrutinas/tareas?
La concurrencia estructurada ata la vida de cada tarea hija al scope del padre, de modo que la cancelación, los errores y la limpieza fluyen de forma predecible en lugar de dejar trabajo huérfano.
Ver pregunta - Avanzado
¿Qué significa 'happens-before' en el Java Memory Model y por qué el código sin sincronización puede ver valores obsoletos entre threads?
El JMM no solo rige el orden de las instrucciones — decide si una escritura de un thread tiene garantizado volverse visible para otro thread.
Ver pregunta - Intermedio
¿Qué pasa cuando muchos procesos worker arrancan a la vez y golpean el mismo recurso (base de datos, caché), y cómo evitás ese thundering herd?
Los arranques sincronizados convierten un escalado o deploy rutinario en una caída autoinfligida, a menos que la demanda sobre el recurso compartido se reparta en el tiempo.
Ver pregunta - Intermedio
¿Cómo orquestás múltiples llamadas asíncronas que necesitan abrirse en abanico (fan-out) y luego converger (fan-in), como `Promise.all`?
El fan-out despacha llamadas asíncronas independientes a la vez; el fan-in las espera y las combina — y la verdadera pregunta de diseño es qué pasa cuando solo algunas tienen éxito.
Ver pregunta - Intermedio
¿Cómo limita realmente la concurrencia el Global Interpreter Lock (GIL) de Python, y cómo se lo evita?
El GIL es la línea más malinterpretada en el perfil de rendimiento de un backend en Python: bloquea el paralelismo de CPU pero apenas afecta la concurrencia de E/S.
Ver pregunta - Avanzado
¿Cómo balancean la carga entre hilos los planificadores work-stealing (como el de Go o ForkJoinPool de Java)?
Una única cola de tareas compartida se vuelve el cuello de botella en cuanto agregas núcleos; work-stealing le da a cada worker su propia cola y solo pide prestado cuando está ocioso.
Ver pregunta - Básico
¿Cómo se implementan debounce y throttle en el backend (no solo en JS de frontend) — por ejemplo, para limitar reintentos o escrituras ruidosas?
Debounce y throttle no son solo trucos para manejadores de clics: en un backend sirven para agrupar ráfagas de escrituras ruidosas y limitar qué tan fuerte puede golpear un cliente a una dependencia downstream.
Ver pregunta - Básico
¿Cómo se implementa un apagado ordenado (graceful shutdown) que drena las solicitudes en curso en lugar de descartarlas?
Un proceso que muere en el instante en que recibe SIGTERM convierte cada despliegue continuo en una pequeña ola de conexiones perdidas y 502 para quien estaba a mitad de una solicitud.
Ver pregunta - Básico
¿Cómo se elige un modelo de concurrencia para una carga de trabajo dada — ligada a CPU vs. ligada a E/S?
Hilo por solicitud, event loop y pool de workers no son 'mejores prácticas' que compiten entre sí: son compromisos distintos, y elegir el equivocado para tu carga se convierte en una caída bajo tráfico.
Ver pregunta - Seguridad
- Básico
¿Cuál es la diferencia real entre autenticación y autorización, y dónde suelen confundirlas los sistemas?
La autenticación demuestra quién eres; la autorización decide qué puedes hacer — confundir ambas es cómo 'estar logueado' se convierte en silencio en 'poder hacer cualquier cosa'.
Ver pregunta - Básico
Autenticación basada en sesiones vs. basada en tokens (JWT) — ¿cuáles son las diferencias reales?
Las sesiones guardan el estado en el servidor y se pueden revocar al instante; los JWT guardan el estado en el cliente y escalan de maravilla hasta que necesitas revocar uno.
Ver pregunta - Intermedio
¿Cuáles son los errores comunes con JWT — confusión de algoritmo (alg:none), falta de revocación, almacenamiento inseguro?
Un JWT es tan seguro como el código que lo verifica — y las tres formas más comunes de verificarlo mal terminan en un bypass total de autenticación.
Ver pregunta - Básico
¿Cómo se deben hashear realmente las contraseñas, y por qué SHA-256 solo no es suficiente?
SHA-256 es un hash rápido y de propósito general pensado para verificar integridad, no para proteger secretos — por eso un atacante puede probar miles de millones de combinaciones por segundo contra él.
Ver pregunta - Básico
¿Cómo funciona realmente la inyección SQL, y cómo la detienen las consultas parametrizadas?
La inyección SQL ocurre en el momento en que una entrada no confiable puede cambiar la forma de una consulta, no solo sus valores — las consultas parametrizadas lo evitan por construcción.
Ver pregunta - Básico
¿En qué se diferencian el XSS almacenado, el reflejado y el basado en DOM, y cómo se previene cada uno desde el backend?
El cross-site scripting no es un solo error, sino tres mecanismos distintos para entregar la misma carga maliciosa, y cada uno exige una solución en una capa diferente de tu stack.
Ver pregunta - Básico
¿Cómo funciona realmente el CSRF, y cómo lo detienen los tokens junto con las cookies SameSite?
El CSRF convierte en arma la confianza que el navegador deposita en una sesión iniciada — el atacante nunca ve tu cookie, simplemente logra que tu navegador la gaste.
Ver pregunta - Básico
Recorre el OWASP Top 10 desde la perspectiva de un ingeniero backend — ¿cuáles ves realmente en revisiones de código reales?
El OWASP Top 10 no es una lista de cumplimiento para hojear una vez — es un ranking de los errores que aparecen una y otra vez en pull requests reales.
Ver pregunta - Intermedio
¿Cómo se deben gestionar realmente los secretos — variables de entorno vs. un vault (HashiCorp Vault/AWS KMS/Secrets Manager)?
Las variables de entorno resuelven el problema de 'no lo hardcodees' y ahí se detienen — un vault resuelve los problemas mucho más difíciles de rotación, auditoría y radio de impacto.
Ver pregunta - Básico
Cifrado en reposo vs. en tránsito — ¿qué protege realmente cada uno, y cuál es el modo de falla si solo tienes uno?
TLS y el cifrado en reposo defienden contra dos atacantes completamente distintos, y tener solo uno deja abierto de par en par el ataque favorito del otro.
Ver pregunta - Intermedio
¿Cómo funciona TLS mutuo (mTLS) y cuándo necesitas autenticación basada en certificados en lugar de solo un token bearer?
En mTLS ambos lados demuestran su identidad con certificados X.509 durante el propio handshake de TLS, cerrando huecos que un token bearer no puede cubrir por sí solo.
Ver pregunta - Intermedio
¿Cómo se previenen realmente los ataques de fuerza bruta y credential stuffing contra un endpoint de login?
Los endpoints de login necesitan rate limiting por capas, bloqueos progresivos y CAPTCHA adaptativo, porque ningún control por sí solo detiene la fuerza bruta y el credential stuffing distribuido.
Ver pregunta - Intermedio
RBAC vs. ABAC: ¿en qué se diferencian estos modelos de control de acceso y cuándo necesitas reglas basadas en atributos?
RBAC otorga acceso según el puesto mientras que ABAC evalúa atributos del usuario, el recurso y el contexto en el momento de la solicitud — casi todo sistema real termina necesitando ambos.
Ver pregunta - Intermedio
¿Cómo implementas autenticación multifactor basada en TOTP desde cero?
TOTP convierte un secreto compartido y la hora actual en un código rotativo de seis dígitos usando HMAC — entender primero HOTP hace obvio cada detalle de diseño.
Ver pregunta - Básico
¿Qué protegen realmente los encabezados de seguridad HTTP importantes (CSP, HSTS, X-Frame-Options, X-Content-Type-Options)?
Cada encabezado de seguridad cierra un ataque específico — clickjacking, MIME sniffing, ataques de downgrade, scripts inyectados — ninguno sustituye arreglar la vulnerabilidad real.
Ver pregunta - Avanzado
¿Qué es la deserialización insegura, y cómo puede deserializar datos no confiables llevar a ejecución remota de código?
Convertir bytes de vuelta en un objeto puede llamar en silencio a constructores y métodos especiales — suficiente, en las manos equivocadas, para entregarle una shell a un atacante.
Ver pregunta - Avanzado
¿Qué es Server-Side Request Forgery (SSRF), y cómo defiendes un endpoint que descarga una URL proporcionada por el usuario?
Un servidor que descarga una URL dada por el usuario puede terminar descargando tus propias credenciales de nube — el SSRF convierte tu posición de red en la del atacante.
Ver pregunta - Intermedio
¿Cómo gestionas la seguridad de la cadena de suministro y de las dependencias — escaneo SCA, lockfiles y SBOMs?
La mayor parte del código que corre en tu servicio la escribieron desconocidos que nunca evaluaste — la seguridad de la cadena de suministro gestiona esa confianza a propósito.
Ver pregunta - Básico
¿Cómo se ve realmente un buen registro de auditoría para acciones sensibles de seguridad?
Un log de depuración ayuda a los ingenieros a entender el sistema; un log de auditoría debe convencer a un humano, después del hecho, de exactamente quién hizo qué.
Ver pregunta - Avanzado
Diseña un sistema de autenticación seguro desde cero — recorre el registro, el login, la emisión de sesión/token y el reseteo de contraseña
La pregunta de entrevista senior de mayor rendimiento aquí — una buena respuesta recorre cada etapa en orden, nombrando la decisión exacta y el modo de falla en cada una.
Ver pregunta - Escalabilidad y Diseño de Sistemas
- Básico
Escalado vertical vs. horizontal — ¿cuáles son los límites reales de cada uno?
Todo sistema eventualmente choca con una pared — la pregunta es si la enfrentas con una máquina más grande o con más máquinas, y qué se rompe primero.
Ver pregunta - Básico
¿Cuáles son los principales algoritmos de balanceo de carga — round robin, least connections, hashing consistente — y cuándo encaja cada uno?
El balanceo de carga no es un solo algoritmo — es una familia de contrapartidas, y elegir mal para tu forma de tráfico causa incidentes reales.
Ver pregunta - Básico
Balanceo L4 vs. L7 — ¿cuál es la diferencia real en lo que pueden ver y hacer?
Ambos responden 'qué backend atiende esto' — pero uno solo lee IP y puerto, y el otro lee toda la petición HTTP. Esa brecha cambia todo lo que pueden hacer.
Ver pregunta - Avanzado
Diseña un acortador de URLs — recorre la arquitectura completa
Un acortador de URLs parece trivial hasta que tienes que generar mil millones de códigos únicos sin que un solo contador se vuelva tu cuello de botella.
Ver pregunta - Avanzado
Diseña un rate limiter como servicio independiente que múltiples APIs puedan invocar
El rate limiting implementado por separado en cada servicio se desincroniza rápido — un limitador compartido, atómico y respaldado por Redis es el patrón que realmente sostiene una cuota en toda una plataforma.
Ver pregunta - Avanzado
Diseña el feed o la línea de tiempo de una red social: ¿cómo se comparan el fan-out en la escritura y el fan-out en la lectura?
Empujar una publicación a millones de seguidores de inmediato, o combinar a todos los que sigues al momento de leer: la elección define tu costo de escritura y cómo fallas con las cuentas famosas.
Ver pregunta - Avanzado
Diseña un planificador de tareas distribuido que ejecute con fiabilidad millones de tareas programadas: ¿cómo lo construirías?
Cron no sobrevive a una segunda réplica ni a un millón de filas: un planificador real necesita almacenamiento particionado por tiempo, elección de líder y una cola que separe lo vencido de lo ejecutado.
Ver pregunta - Intermedio
¿Cómo funciona realmente la arquitectura de una CDN: origen, PoPs de borde, jerarquía de caché e invalidación?
Una CDN es una capa de caché distribuida globalmente que intercepta peticiones antes de que tu origen las vea: sus niveles explican tanto su velocidad como sus dolores de cabeza de invalidación.
Ver pregunta - Intermedio
¿Cómo decide realmente el auto-escalado cuándo añadir o quitar instancias? ¿Qué métricas y políticas importan?
La utilización de CPU es la métrica de escalado por defecto, pero a menudo es la equivocada: la pregunta real es qué señal predice de verdad el dolor del usuario antes de que ocurra.
Ver pregunta - Avanzado
¿Cómo escalas lecturas y escrituras de forma independiente a nivel de infraestructura usando CQRS?
CQRS no es solo una réplica de lectura: permite que tu lado de lectura use un modelo de datos y un motor de almacenamiento completamente distintos, sincronizados mediante eventos y no mediante tablas.
Ver pregunta - Avanzado
Diseña el backend de una app de mensajería — recorre la entrega de mensajes, el orden y la presencia en línea
Una sola funcionalidad — "enviar un mensaje" — esconde tres problemas difíciles distintos: entrega duradera, orden por conversación y presencia a gran escala.
Ver pregunta - Avanzado
Diseña un servicio de almacenamiento de archivos como S3 o Dropbox — recorre la arquitectura
Detrás de "sube un archivo" hay un servicio de metadatos, un pipeline de fragmentación, deduplicación por contenido y una estrategia de replicación que debe sobrevivir a la pérdida de un centro de datos completo.
Ver pregunta - Intermedio
¿Cómo haces la planificación de capacidad y las estimaciones a grosso modo para un sistema nuevo?
El entrevistador no califica tu aritmética — observa si tus suposiciones son explícitas, tus unidades son consistentes, y si tus números realmente cambiarían el diseño.
Ver pregunta - Avanzado
¿Cómo manejas una hot key o partición caliente que está saturando un solo shard?
Un producto viral, una cuenta de celebridad o un contador popular pueden enviar todo tu tráfico a un solo shard sin importar cuántos nodos tenga el resto de tu clúster.
Ver pregunta - Avanzado
Diseña un sistema de notificaciones que distribuya un solo evento a push, correo y SMS
Un solo evento de "pedido enviado" debe convertirse en tres llamadas posteriores muy distintas — cada una con su propio proveedor, su propio modo de falla y su propia idea de un reintento aceptable.
Ver pregunta - Avanzado
¿Cómo se arquitectura un backend multi-región / geo-distribuido, y qué se rompe primero al pasar a multi-región?
La latencia y la disponibilidad empujan hacia arquitecturas distintas; confundirlas es el error más común en esta pregunta de diseño.
Ver pregunta - Avanzado
Recuperación ante desastres activo-activo vs. activo-pasivo: ¿en qué se diferencian y cuál es el verdadero intercambio de RTO/RPO?
El RTO y el RPO, no el nombre de la topología, son lo que realmente debería juzgar un diseño de recuperación ante desastres.
Ver pregunta - Intermedio
Diseña un sistema de leaderboard/ranking en tiempo real para millones de usuarios
Los sorted sets de Redis convierten el rango, el top-N y las actualizaciones de puntaje en operaciones logarítmicas en vez de escaneos completos de tabla.
Ver pregunta - Intermedio
Diseña un servicio de autocompletado/typeahead de búsqueda: ¿cómo devuelves sugerencias en milisegundos?
El truco es precomputar las top-K sugerencias por nodo del trie de forma offline, así una consulta en vivo es solo un recorrido O(L), no una búsqueda rankeada.
Ver pregunta - Intermedio
Diseña un generador de IDs únicos distribuido (como Twitter Snowflake): ¿cómo garantizas unicidad sin coordinación?
Codifica timestamp, identidad de máquina y una secuencia local en un solo entero de 64 bits, y la unicidad surge sin llamadas de red por ID.
Ver pregunta - Intermedio
¿Qué es un filtro de Bloom y qué problemas reales de backend resuelve?
Un conjunto probabilístico que cambia una pequeña tasa de falsos positivos por comprobaciones de pertenencia en tiempo y espacio constantes, ideal para proteger una consulta costosa detrás de una barata.
Ver pregunta - Avanzado
Diseña un web crawler que escale a miles de millones de páginas
Un crawler web es un recorrido de grafo distribuido con una regla dura: cubrir miles de millones de páginas sin parecer nunca un ataque de denegación de servicio contra ningún sitio.
Ver pregunta - Intermedio
¿Cómo manejas de forma confiable la subida de archivos grandes: uploads por partes y reanudables?
Divide el archivo en partes que el cliente puede reintentar por separado, registra cuáles ya tiene el servidor, y reanudar se vuelve una consulta en vez de empezar de cero.
Ver pregunta - Avanzado
Diseña un sistema de procesamiento de pagos: recorre la arquitectura y dónde más importan la idempotencia y la consistencia
El dinero nunca puede cobrarse dos veces ni perderse en silencio, así que cada salto entre tu servicio y el banco necesita una clave de idempotencia y un job de reconciliación como red de seguridad.
Ver pregunta - Avanzado
Capstone: diseña de extremo a extremo un sistema de checkout de e-commerce escalable: inventario, carrito, pago, confirmación de pedido
Lo más difícil del checkout no es cobrar la tarjeta, es garantizar que dos compradores no puedan llevarse la última unidad, y revertir todo con limpieza cuando un paso falla.
Ver pregunta - DevOps y Observabilidad
- Básico
¿Cómo aísla Docker realmente un proceso — qué es en verdad distinto de una VM?
A los contenedores se los llama "VMs livianas", pero comparten el kernel del host — el aislamiento real viene de los namespaces y cgroups de Linux, no de hardware virtualizado.
Ver pregunta - Básico
¿Qué hace Kubernetes realmente por vos que Docker solo no hace?
Docker empaqueta y corre un contenedor; Kubernetes es la capa de orquestación que planifica, repara y conecta en red una flota de ellos a través de muchas máquinas.
Ver pregunta - Básico
Recorré las etapas de un pipeline de CI/CD real, desde el commit hasta producción
Un pipeline ordena sus chequeos del más barato al más costoso, para que un cambio malo muera lo antes posible — commit, build, test, escaneo, empaquetado, despliegue, verificación, y recién ahí el release.
Ver pregunta - Básico
¿Qué es Infrastructure as Code, y por qué importa la infraestructura inmutable?
Definir la infraestructura en configuración versionada en vez de clics manuales vuelve los cambios revisables y reproducibles — la inmutabilidad después elimina el drift de configuración reemplazando instancias en vez de parchearlas.
Ver pregunta - Básico
¿Cuáles son los tres pilares de la observabilidad — logs, métricas y trazas — y cómo se complementan?
Las métricas te dicen que algo anda mal y qué tan grave, las trazas te dicen dónde dentro del sistema, y los logs te dicen exactamente por qué — un único trace_id es lo que permite correlacionar los tres durante un incidente.
Ver pregunta - Básico
¿Cómo es en la práctica un buen structured logging, y por qué le gana a los logs estilo printf a gran escala?
Los logs estilo printf funcionan con un servicio y diez usuarios; con una docena de servicios y un incidente real, solo los logs JSON estructurados y correlacionables permiten reconstruir lo ocurrido.
Ver pregunta - Básico
¿Cuáles son los principales tipos de métricas —counters, gauges, histograms— y cuándo se usa cada uno?
Elegir mal el tipo de métrica es la razón por la que la mitad de los dashboards de producción mienten: un gauge que solo sube, o un counter al que le sacaste un promedio, producen sinsentidos en silencio.
Ver pregunta - Intermedio
¿Cómo diseñás alerting que no provoque fatiga por alertas — cómo es en la práctica el alerting basado en SLO?
Alertar a alguien por cada pico de CPU lo entrena para ignorar las alertas; el alerting basado en SLO y burn-rate solo despierta a alguien cuando los usuarios realmente están siendo afectados, y rápido.
Ver pregunta - Intermedio
¿Cómo funciona en la práctica el sampling en distributed tracing — por qué no se puede trazar el 100% de los requests a gran escala?
A 50.000 requests por segundo, trazar cada uno multiplicaría varias veces tu factura de almacenamiento y red solo para guardar spans que nadie va a mirar jamás.
Ver pregunta - Intermedio
¿Qué son los SLI, SLO, SLA y error budgets — y cómo cambian en la práctica las decisiones de ingeniería?
Estos cuatro términos no son trivia de confiabilidad; un error budget agotado es el mecanismo que convierte un 'deberíamos frenar un poco y arreglar cosas' en una decisión real y exigible.
Ver pregunta - Básico
¿Cómo permiten los feature flags la entrega progresiva, y cómo se implementa uno de forma económica?
Los feature flags separan el despliegue del código de su liberación a los usuarios, y un flag de rollout por porcentaje sólido no es más que un hash determinista y una comparación.
Ver pregunta - Intermedio
¿Qué es el drift de configuración, y cómo lo previene la infraestructura inmutable?
Los servidores que empiezan siendo idénticos dejan de serlo en silencio a medida que se acumulan parches manuales; la infraestructura inmutable resuelve esto haciendo imposible editar una instancia en ejecución.
Ver pregunta - Intermedio
¿Cuáles son las técnicas reales para un despliegue sin tiempo de inactividad?
Los despliegues sin downtime descansan sobre una promesa mecánica precisa —ninguna petición perdida, ninguna conexión cortada— lograda mediante reemplazo rolling, chequeos de salud, drenado de conexiones y compatibilidad de esquema.
Ver pregunta - Avanzado
¿Qué es la ingeniería del caos, y por qué querrías romper deliberadamente sistemas similares a producción?
La ingeniería del caos no es destrucción al azar: es un experimento falsable contra una hipótesis medible de estado estable, ejecutado con un radio de impacto controlado y un interruptor de aborto.
Ver pregunta - Básico
¿Cómo se ve realmente un buen proceso de respuesta a incidentes y un postmortem sin culpa?
Detectar, triage, mitigar, resolver, postmortem — un ciclo de cinco etapas donde 'sin culpa' no significa que nadie sea responsable, sino que el análisis apunta al proceso y no a la persona.
Ver pregunta - Intermedio
¿Cómo funciona de extremo a extremo una arquitectura de agregación de logs como ELK o Grafana Loki?
Sigue el recorrido de una línea de log desde el stdout de un contenedor hasta un dashboard consultable, y entiende por qué cada etapa —envío, buffer, parseo, indexado— se gana su lugar en el pipeline.
Ver pregunta - Intermedio
¿Por qué y cómo se escanean las imágenes de contenedor en busca de vulnerabilidades antes de llegar a producción?
Toda imagen de contenedor es una pila congelada de dependencias ajenas, y cualquier capa puede cargar un CVE conocido y divulgado que nadie en tu equipo ha leído jamás.
Ver pregunta - Básico
Monitoreo de infraestructura vs. monitoreo de rendimiento de aplicaciones (APM) — ¿cuál es la diferencia real en lo que cada uno te dice?
Uno te dice si la máquina está sana, el otro si la petición está sana — confundirlos es un error clásico durante un incidente.
Ver pregunta - Intermedio
¿Qué es GitOps y cómo funciona realmente la gestión declarativa de infraestructura a través de git?
Un commit no es un registro de lo que le pasó a tu infraestructura — es la instrucción de lo que debe existir, impuesta continuamente por un operador que corre dentro del clúster.
Ver pregunta - Avanzado
Estás lanzando un servicio completamente nuevo: diseña su stack de observabilidad desde cero
Logs, métricas y trazas son tres compras separadas hasta que las conectas con un trace_id y un SLO — esta es la pregunta capstone que evalúa si sabes hacerlo.
Ver pregunta - Colas de Mensajes y Arquitectura Orientada a Eventos
- Básico
¿Qué problema real resuelve una cola de mensajes que una llamada síncrona directa no resuelve?
No se trata de velocidad, sino de qué pasa cuando el destino está lento, caído o saturado, y quien llama no puede darse el lujo de bloquearse por eso.
Ver pregunta - Básico
Colas punto a punto vs. topics de pub/sub: ¿cuál es la diferencia real en la semántica de entrega?
Mismo broker, dos contratos opuestos: una cola reparte trabajo entre consumidores que compiten, mientras un topic le da a cada suscriptor su propia copia completa del flujo.
Ver pregunta - Intermedio
Entrega at-most-once vs. at-least-once vs. exactly-once: ¿qué garantiza cada una en realidad, y es posible el exactly-once de verdad?
Cada semántica cambia un tipo de fallo por otro —pérdida, duplicación o ninguno— y resulta que 'exactly-once' es en realidad at-least-once disfrazado de idempotencia.
Ver pregunta - Intermedio
¿Cómo funciona el orden de los mensajes en un sistema particionado como Kafka, y qué rompe esa garantía de orden?
Kafka solo promete orden dentro de una sola partición, así que la clave de particionamiento que elijas es el mecanismo real que decide si los eventos relacionados mantienen su secuencia.
Ver pregunta - Básico
¿Qué es una dead letter queue, y cómo se maneja un 'poison message' que sigue fallando?
Los reintentos infinitos desperdician capacidad del consumidor y los descartes silenciosos pierden datos: una DLQ le da a los mensajes que fallan un número acotado de intentos antes de marcar uno para revisión humana.
Ver pregunta - Intermedio
Explica la arquitectura de Kafka — brokers, particiones y grupos de consumidores — y cómo logran escalar sin perder el orden
Kafka escala dividiendo los topics en particiones repartidas entre brokers, y usa grupos de consumidores para paralelizar la lectura — pero el orden solo está garantizado dentro de una partición, no en todo el topic.
Ver pregunta - Básico
¿Cuáles son los tipos de exchange de RabbitMQ — direct, topic, fanout, headers — y cuándo usar cada uno?
RabbitMQ enruta todo mensaje a través de un exchange, y el tipo de exchange — direct, topic, fanout o headers — decide qué colas lo reciben realmente.
Ver pregunta - Intermedio
Arquitectura orientada a eventos vs. request-response — ¿qué cambia en cómo diseñas un sistema?
El modelo request-response acopla servicios mediante llamadas directas y disponibilidad compartida; la arquitectura orientada a eventos los acopla solo a través de la forma de los eventos, cambiando consistencia inmediata por resiliencia y escalado independiente.
Ver pregunta - Avanzado
¿Cómo se combinan CQRS y event sourcing en un sistema orientado a eventos real?
CQRS separa las escrituras de las lecturas en modelos distintos, y event sourcing convierte la fuente de verdad del modelo de escritura en un log de eventos en vez del estado actual — juntos permiten reconstruir cualquier vista del pasado y escalar las lecturas de forma independiente.
Ver pregunta - Intermedio
¿Qué causa el consumer lag en una cola de mensajes, y cómo manejas el backpressure cuando los consumidores no dan abasto?
El consumer lag es la brecha entre el último offset producido y lo que un consumer group realmente ha procesado — y si no se controla, o explota la memoria del consumidor o retrasa silenciosamente todos los efectos posteriores.
Ver pregunta - Intermedio
Kafka vs. RabbitMQ vs. SQS: ¿cómo eliges realmente para un caso de uso dado?
Tres sistemas de mensajería probados en producción resuelven problemas parecidos pero distintos: elegir mal significa pelear contra la herramienta durante años.
Ver pregunta - Avanzado
¿Cómo diseñas un esquema de eventos y manejas su evolución en el tiempo (Avro/Protobuf + un schema registry)?
El evento que publicas hoy lo leerán consumidores que todavía no has escrito — la evolución de esquemas es la disciplina que lo hace posible sin necesitar un despliegue sincronizado.
Ver pregunta - Avanzado
¿Cómo manejas el procesamiento de eventos en fan-out a escala — un evento que dispara muchos consumidores downstream?
Un solo evento de negocio puede tener diez consecuencias independientes — hacer bien el fan-out significa agregar la undécima sin tocar al productor ni a ningún consumidor hermano.
Ver pregunta - Intermedio
¿Cómo funciona el Change Data Capture (CDC) con algo como Debezium, y qué problema resuelve?
El CDC convierte cada cambio a nivel de fila que ya ocurre en tu base de datos en un stream de eventos, sin tocar el código de la aplicación ni arriesgarse al problema de la doble escritura.
Ver pregunta - Avanzado
Diseña un pipeline de procesamiento de pedidos orientado a eventos, desde que se coloca el pedido hasta su cumplimiento
Un solo pedido toca cuatro servicios desplegados de forma independiente y ninguna transacción distribuida — esta es la pregunta de entrevista que revela si de verdad entiendes las sagas, no solo los brokers de mensajería.
Ver pregunta - Estrategia de Testing
- Básico
¿Qué es la pirámide de testing, y por qué muchos ingenieros senior dicen que la mayoría de los equipos invierte la proporción?
La pirámide de testing es una afirmación sobre costo y velocidad de feedback, no un reglamento, y la mayoría de los equipos con un CI lento e inestable la invirtieron sin darse cuenta.
Ver pregunta - Intermedio
¿Qué es el testing de contratos entre servicios (por ejemplo, con Pact), y cómo evita la necesidad de un entorno de integración completo?
El testing de contratos guiado por el consumidor permite que dos servicios desplegados de forma independiente demuestren que están de acuerdo en una interacción usando solo un archivo compartido, sin entorno compartido ni necesidad de tener ambos servicios corriendo.
Ver pregunta - Básico
Mocks vs. stubs vs. fakes vs. spies: ¿qué es realmente distinto, y cuándo usás cada uno?
Los cuatro tipos de test double se dividen claramente en dos familias — los que controlan la entrada y los que verifican interacciones — y confundirlos es la causa más común de tests frágiles.
Ver pregunta - Intermedio
¿Cómo se testea de forma confiable código asíncrono/concurrente sin sleeps inestables?
Los sleeps fijos en los tests son una moneda al aire que desperdicia tiempo en máquinas rápidas y falla en las lentas — los relojes virtuales y el polling determinístico reemplazan la adivinanza por una garantía real.
Ver pregunta - Intermedio
¿Cómo es una metodología real de testing de carga/performance — qué medís realmente y cómo diseñás el test?
El testing de carga no es 'pegarle mucho a la API y ver qué pasa' — es una rampa diseñada con objetivos explícitos de pass/fail, percentiles de latencia de cola, y un ojo atento al propio modelo de carga.
Ver pregunta - Avanzado
¿Cómo es el testing de caos y resiliencia cuando forma parte del CI en lugar de ser un GameDay puntual?
Los GameDays prueban la resiliencia una vez por trimestre; el chaos testing en CI la prueba en cada commit, con una hipótesis de estado estable, un radio de impacto y un rollback automático.
Ver pregunta - Intermedio
¿Cómo pruebas código que depende de una base de datos — contenedores de prueba reales, mocks, o una base de datos en memoria?
Los mocks son rápidos pero prueban tus suposiciones, las bases de datos en memoria divergen en silencio del motor real, y Testcontainers te da lo real, de forma hermética, en CI.
Ver pregunta - Avanzado
¿Qué significa realmente 'testear en producción' — análisis de canary, feature flags y tráfico en sombra?
No es saltarse las pruebas — es espejar peticiones reales a una nueva versión, comparar señales doradas de forma estadística, y controlar la exposición con un interruptor instantáneo.
Ver pregunta - Intermedio
Tienes un test flaky — camina por tu proceso real de triage para encontrar y arreglar la causa raíz
Los tests flaky son reportes de bugs disfrazados — el triage real aísla orden, paralelismo y timing hasta exponer el estado compartido o la condición de carrera detrás.
Ver pregunta - Avanzado
Estás arrancando un microservicio completamente nuevo — diseña su estrategia de testing desde cero
La pregunta insignia y de cierre de este curso: unitarias, contrato, integración, end-to-end, carga y testing en producción, unidas en un solo pipeline desde el primer commit hasta producción.
Ver pregunta