enunciados + leetcode
Enunciados como los de una entrevista real para resolver por tu cuenta, con el tiempo que te darían, y problemas de LeetCode recomendados para cada tecnología y seniority. Nada se corrige acá: resolvelo en tu editor, en voz alta, y marcá lo que ya practicaste.
Tomá un proyecto chico (o generalo) con al menos 6 archivos que llamen directamente a console.log y console.error con strings armados a mano, por ejemplo console.log("user " + id + " created"). El objetivo es migrar todo a un logger estructurado logger.info("user_created", { userId }) con niveles, un campo requestId propagado y salida JSON en producción.
Escribí primero el plan del refactor: el orden de los archivos, qué queda compatible durante la migración, cómo verificar en cada paso que no cambió el comportamiento y cuál es el criterio de terminado (por ejemplo, una regla de lint que prohíbe console). Ejecutalo con el agente y revisá cada tanda de cambios.
# requisitos
requestId se propaga sin pasar parámetros por toda la cadena (por ejemplo, con AsyncLocalStorage o equivalente).console en el código de la app.# si te sobra tiempo, te van a preguntar
Tu equipo deja que un agente abra PRs solo. Querés un script verify que el agente tenga que correr antes de dar una tarea por terminada y que también corra en CI. El proyecto tiene typecheck, lint, tests unitarios y un archivo CHANGELOG.md.
Implementá el script para que corra los checks en orden de costo (los más baratos primero), corte en el primer fallo con un mensaje accionable para el agente, detecte si el diff modificó o borró tests existentes y lo marque para revisión humana, y falle si el diff toca archivos de una lista protegida (por ejemplo migraciones o package-lock.json) sin una etiqueta explícita. Después escribí las instrucciones para el agente (en CLAUDE.md, AGENTS.md o equivalente) que lo obliguen a usarlo.
# requisitos
git diff.# si te sobra tiempo, te van a preguntar
verify antes de que se vuelva un problema para el flujo del agente?En un proyecto con varios módulos, todas las llamadas HTTP usan un helper viejo request(url, opts, callback) basado en callbacks. Tenés que migrarlas a httpClient.get(url, { timeoutMs }) y httpClient.post(url, body), que devuelven promesas y lanzan HttpError con status en vez de pasar el error al callback.
Usando el agente, primero hacé un inventario de todos los call sites y clasificalos por patrón (lectura simple, manejo de error por status, reintentos manuales, llamadas en paralelo). Elegí un call site de cada patrón, migralo a mano o con el agente y revisalo en detalle, y usá esos ejemplos como referencia para migrar el resto. Al final, borrá el helper viejo.
# requisitos
grep o un script).Promise.all o equivalente sin serializarse por accidente.# si te sobra tiempo, te van a preguntar