Simulacro · pair coding de 1 hora

El repo que falla

Un proyecto Node + TypeScript con una API falsa, un dominio incompleto y 36 pruebas en rojo. Es el escenario más probable del viernes: llegar a un repositorio ajeno, entender qué falta y completarlo conversando.

Descargar el repo (30 KB) Repasar Node El entrenador

Sin dependencias externas: el cliente de API es falso y determinista.

ARRANQUETres comandos

tar -xzf simulacro-smartly.tar.gz
cd simulacro-smartly
pnpm install && pnpm test      # 36 en rojo. Eso es el punto de partida.

Y cuando ya lo tengas, para comparar con la referencia:

pnpm test:solucion             # 36 en verde, sin tocar tu código
pnpm test:caos:10              # 10 semillas distintas, todo verde

LOS 10 PRIMEROS MINUTOSEl protocolo

En la entrevista real esto decide si llegas con tiempo al código. Practícalo tal cual:

  1. README (2 min). Qué pide, dicho en tus palabras.
  2. package.json y tsconfig (1 min). Cómo se corre y qué tan estricto es. Aquí está activo strict con noUncheckedIndexedAccess y exactOptionalPropertyTypes.
  3. La suite en rojo (4 min). pnpm test y lee los nombres de las pruebas, no el código.
  4. El test más pequeño (3 min). Léelo entero: ahí está el contrato exacto.
  5. Dilo en voz alta. "So I take this shape and return that shape, and throw when the provider is unknown."

Los nombres de las pruebas son el enunciado

Si una prueba se llama lanza error con formato de gasto desconocido, ya sabes que hay que validar y lanzar. Eso te ahorra veinte minutos de adivinar y es exactamente lo que un senior hace primero en un repo ajeno.

LAS TRES FASESCómo se reparte la hora

FaseMinutosQué haces
1 · Lectura10–12README, estructura, suite en rojo, el test más pequeño. Sin escribir código.
2 · Iteración35–38Una prueba a la vez. Ejecutar. La siguiente. Hablando.
3 · Refactor10Bordes, errores de la API, qué se rompe a 10×, qué cambiarías.

LAS CUATRO FUNCIONESQué hay que completar

FunciónPruebasQué enseña
normalizarMetrica12Unión discriminada, type guards, formato desconocido, campos opcionales con strict
agregarPorMercado4Agrupar y sumar con Record, caso vacío
procesarLotes6Lotes en orden, tamaño inválido, que nunca haya dos en vuelo
normalizarSeguro3Unión de resultado en vez de excepción: el flujo no se cae por un registro malo
consolidarCampanas5Recorrer páginas, deduplicar y separar descartes sin lanzar
reintentar6Backoff con jitter, tope, y respetar retryAfterMs de un 429

La API falsa pagina y falla de forma determinista cada tres llamadas, así que reintentar tiene algo real que reintentar.

MODO CAOSCuando la API cambia entre corridas

Un candidato reportó que "each test run triggered API rule changes with no prior warning". Ese escenario está aquí, y es el que más se parece al viernes:

pnpm test:caos        # una semilla
pnpm test:caos:10     # diez semillas; falla si alguna no pasa

En modo caos, el cliente falso cambia de forma determinista según la semilla:

La regla que lo hace útil

La solución de referencia pasa en las diez semillas — y en las cuarenta. Si tu código solo pasa en la semilla por defecto, es que asume un orden, un tamaño de página o una forma fija. Eso es exactamente lo que el entrevistador te va a romper con una pregunta.

EVALUACIÓNQué miran mientras trabajas

Suma

Resta

DESPUÉSEl simulacro completo

Cuando ya lo hayas resuelto una vez, hazlo de nuevo así: pon un cronómetro de 60 minutos, abre voz.ened.online para grabarte y nárralo todo. Al terminar, escucha la grabación y responde: ¿se entiende lo que haces sin ver la pantalla? Si no, ese es el trabajo del jueves.