~/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

[ ]Frontend · React.jsweb, hooks, Next.js[ ]Frontend · iOSSwift, SwiftUI, UIKit[ ]Frontend · AndroidKotlin, Jetpack Compose[x]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

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

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

01Feed infinito performanteQue entiendas cómo renderiza listas React Native y puedas construir un feed real sin problemas de performance.45 min

Implementá un feed de posts con scroll infinito. La API mockeada es fetchFeed(cursor?: string): Promise<{ items: Post[], nextCursor: string | null }>, con Post de la forma { id: string, author: string, text: string, imageUrl?: string }. Devuelve 15 posts por página, tarda 800 ms y a veces repite un post que ya vino en la página anterior.

El feed tiene que sentirse fluido en un Android de gama media aunque haya cientos de posts cargados.

# requisitos

  • -Paginación con onEndReached y onEndReachedThreshold, sin pedir la misma página dos veces.
  • -Se descartan posts duplicados por id.
  • -Footer de carga mientras llega la página siguiente y pull to refresh que vuelve a empezar.
  • -Las filas son componentes memoizados y los callbacks son estables.
  • -Ajustá props de performance de FlatList (windowSize, initialNumToRender, removeClippedSubviews) y explicá por qué.

# si te sobra tiempo, te van a preguntar

  • -¿Qué te daría FlashList frente a FlatList?
  • -¿Cómo medirías si el scroll pierde frames?
  • -¿Cómo manejarías las imágenes para que no consuman demasiada memoria?
  • -¿Lo harías con React Query o TanStack Query? ¿Qué te resuelve?
02Formulario con borrador persistenteQue resuelvas formularios en mobile cuidando teclado, persistencia local y diferencias entre plataformas.45 min

Armá un formulario para publicar una reseña con título, texto y puntaje de 1 a 5. Si el usuario cierra la app a mitad de camino, al volver a abrir la pantalla tiene que encontrar su borrador tal como lo dejó.

Al enviar se llama a submitReview(review): Promise<void>, mockeada con 1 segundo de delay y un 20% de fallas. Si el envío sale bien, el borrador se borra.

# requisitos

  • -El borrador se guarda en AsyncStorage (o MMKV) con debounce, no en cada tecla.
  • -Al abrir la pantalla se restaura el borrador antes de mostrar el formulario, sin parpadeos.
  • -El teclado no tapa los campos: usá KeyboardAvoidingView con el comportamiento correcto en iOS y Android.
  • -Validaciones: título de al menos 3 caracteres, texto de al menos 20, puntaje obligatorio.
  • -El botón de enviar muestra carga y queda deshabilitado mientras se envía.

# si te sobra tiempo, te van a preguntar

  • -¿Qué diferencias hay entre AsyncStorage, MMKV y SecureStore?
  • -¿Cómo manejarías un borrador por cada producto reseñado?
  • -¿Usarías React Hook Form acá? ¿Qué te ahorra?
03Fetch con timeout y reintentosQue manejes promesas, cancelación y errores de red con criterio, algo crítico en apps que viven con conexiones inestables.30 min

Implementá fetchJson(url, { timeoutMs = 5000, retries = 2 }) sobre fetch. Si la respuesta tarda más de timeoutMs, se aborta. Si falla por red, timeout o un status 5xx, se reintenta con backoff exponencial (500 ms, 1 s). Si responde 4xx, no se reintenta.

Devuelve el body parseado como JSON o tira un error que permita distinguir si fue timeout, red o HTTP (incluyendo el status).

# requisitos

  • -El timeout usa AbortController, no solo un Promise.race que deja el request vivo.
  • -Los errores son clases propias o tienen un campo type para distinguirlos.
  • -Los 4xx no se reintentan.
  • -La función acepta un signal externo para que el llamador pueda cancelar todo.
  • -Está tipada con un genérico: fetchJson<User>(url) devuelve Promise<User>.

# si te sobra tiempo, te van a preguntar

  • -¿Para qué sirve agregar jitter al backoff?
  • -¿Qué pasa con reintentar un POST que no es idempotente?
  • -¿Cómo lo testearías sin esperar tiempos reales?

# leetcode recomendado (Frontend · React Native · Semi-senior)

EasyInterval CancellationDel plan 30 Days of JavaScript: crear y limpiar intervalos, lo mismo que hacés en el cleanup de un efecto con polling.
EasySort ByDel plan 30 Days of JavaScript: ordenar con una función de clave, frecuente al preparar datos para una lista.
MediumMemoizeDel plan 30 Days of JavaScript: memoización con closures, la base para entender useMemo y evitar trabajo repetido.
MediumDebounceDel plan 30 Days of JavaScript: imprescindible para búsquedas y guardados automáticos, y muy preguntado.
MediumCompact ObjectDel plan 30 Days of JavaScript: recorrer objetos anidados de forma recursiva, como al limpiar payloads de una API.
MediumGroup AnagramsAgrupar con claves derivadas en un Map, la misma lógica que armar secciones para una SectionList.
MediumTop K Frequent ElementsConteo más bucket sort o heap; un Medium clásico de entrevistas de nivel medio.
$ progreso --live-codingFrontend · React Native · Semi-senior

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