~/pcn $ iniciando_

programaConNosotros

Iniciar sesiónCrear cuenta
  • programaConNosotrosprogramaConNosotrosComunidad · desde 2020
  • Inicio
  • Feed
Actividades
  • Eventos
  • Conversaciones
  • Charlas
  • Podcast
  • Desarrollo
Recursos
  • Cursos
  • Lectura
  • Videos
  • Especialidades
  • Herramientas
  • Proyectos
  • Entrevistas
Comunidad
  • Historia
  • Miembros
  • Logros
  • Galería
  • Setups
  • Partners
  • Changelog
SoporteFeedback

~/entrevistas/live-coding

enunciados + leetcode

[simulador][guías][live coding]

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.

# 1. tecnología

[x]Frontend · React.jsweb, hooks, Next.js[ ]Frontend · iOSSwift, SwiftUI, UIKit[ ]Frontend · AndroidKotlin, Jetpack Compose[ ]Frontend · React NativeExpo, iOS y Android[ ]Backend · Node.jsExpress, NestJS[ ]Backend · PythonDjango, FastAPI[ ]Backend · JavaSpring Boot[ ]Backend · .NETC#, ASP.NET Core[ ]AI engineeringconstruir agentes de IA[ ]Agentic engineeringdesarrollar con agentes[ ]Quality engineeringtesting manual y automatizado

# 2. seniority

[x]Junior[ ]Semi-senior[ ]Senior

# ejercicios (resolvelos por tu cuenta, con el tiempo que darían en la entrevista)

01Lista de usuarios filtrableQue manejes inputs controlados, state derivado y renderizado de listas con keys correctas sin duplicar estado.30 min

Tenés un array users con objetos { id: number, name: string, email: string, role: "admin" | "member" }. Armá un componente UserList que reciba ese array por props y lo muestre como lista, con un input de búsqueda arriba.

Al escribir en el input, la lista se filtra por nombre o email sin distinguir mayúsculas de minúsculas. Por ejemplo, con "ana" deberían aparecer tanto Ana Pérez como mariana@mail.com. No hace falta pegarle a ninguna API: los datos llegan por props.

# requisitos

  • -El input es controlado: su valor vive en el state del componente.
  • -El filtro ignora mayúsculas, minúsculas y espacios al principio y al final.
  • -Cada ítem usa una key estable (el id, no el índice).
  • -Mostrá cuántos resultados hay y un mensaje claro cuando no hay ninguno.
  • -Agregá un botón para limpiar la búsqueda que devuelva el foco al input.

# si te sobra tiempo, te van a preguntar

  • -¿Guardarías la lista filtrada en el state o la calcularías en cada render? ¿Por qué?
  • -¿Cómo agregarías un filtro por role que se combine con la búsqueda?
  • -Si la lista tuviera 50.000 usuarios y se sintiera lenta al tipear, ¿qué probarías?
02Lista de tareas con filtrosQue sepas modelar estado de una UI pequeña, comunicar hijo y padre con callbacks y actualizar arrays de forma inmutable.45 min

Construí una lista de tareas. Cada tarea tiene la forma { id: string, text: string, done: boolean }. Arriba hay un formulario para agregar tareas y abajo tres botones para filtrar: Todas, Pendientes y Completadas.

Cada tarea se puede marcar como completada con un checkbox y eliminar con un botón. Al pie mostrá cuántas tareas pendientes quedan, por ejemplo 2 pendientes.

# requisitos

  • -No se pueden agregar tareas vacías o con solo espacios; el input se limpia después de agregar.
  • -El formulario se envía tanto con el botón como con Enter (usá un <form> con onSubmit).
  • -Las actualizaciones de state son inmutables: nada de push o mutar la tarea directamente.
  • -El filtro activo se distingue visualmente del resto.
  • -Separá al menos un componente hijo (por ejemplo TodoItem) que reciba callbacks por props.

# si te sobra tiempo, te van a preguntar

  • -¿Cómo persistirías las tareas para que sobrevivan a un refresh?
  • -¿Usarías useReducer en lugar de useState acá? ¿Qué ganarías?
  • -¿Cómo harías para editar el texto de una tarea con doble click?
  • -¿Qué tests escribirías para este componente?
03Implementá debounceQue entiendas closures, timers y el contexto de ejecución en JavaScript, la base de muchas optimizaciones de UI.30 min

Implementá una función debounce(fn, ms) que devuelva una nueva función. Cuando la nueva función se llama varias veces seguidas, fn se ejecuta una sola vez, ms milisegundos después de la última llamada, con los argumentos de esa última llamada.

Ejemplo: con const log = debounce(console.log, 300), si llamás log("a"), log("b") y log("c") dentro de 100 ms, después de 300 ms se imprime solo c. No uses librerías.

# requisitos

  • -Cada llamada nueva cancela el timer pendiente y arranca uno nuevo.
  • -fn recibe los argumentos de la última llamada.
  • -Se respeta el this con el que se llamó a la función devuelta.
  • -Escribí un ejemplo de uso con un input de búsqueda que muestre por qué sirve.

# si te sobra tiempo, te van a preguntar

  • -¿Cuál es la diferencia entre debounce y throttle? Dame un caso de uso de cada uno.
  • -Agregale un método cancel() a la función devuelta.
  • -¿Qué pasa si usás debounce dentro de un componente de React sin useMemo o useRef?

# leetcode recomendado (Frontend · React.js · Junior)

EasyCounterDel plan 30 Days of JavaScript: practica closures, la base de hooks, handlers y funciones como debounce.
EasyFilter Elements from ArrayDel plan 30 Days of JavaScript: reimplementar filter te obliga a entender callbacks y funciones de orden superior.
EasyArray Reduce TransformationDel plan 30 Days of JavaScript: reduce aparece todo el tiempo para derivar datos antes de renderizar.
EasyAllow One Function CallDel plan 30 Days of JavaScript: envolver funciones y guardar estado en un closure, un patrón clásico de entrevistas de frontend.
EasyChunk ArrayDel plan 30 Days of JavaScript: manipulación de arrays típica para paginar o armar grillas en la UI.
EasyTwo SumEl ejercicio clásico para usar un hash map y pasar de O(n²) a O(n).
EasyValid ParenthesesPractica el uso de una pila, útil para parsers y validaciones que aparecen en entrevistas de cualquier nivel.
$ progreso --live-codingFrontend · React.js · Junior

ejercicios0/3

leetcode0/7

$ cat guias/live-coding

Cómo encarar un live coding: el método para resolver en voz alta, complejidad, los patrones más frecuentes y cómo practicar.

leer la guía de live coding