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

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

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

01Lista de contactos con FlatListQue conozcas los componentes básicos de React Native y cómo renderizar listas de forma eficiente.30 min

Tenés un array contacts con objetos { id: string, name: string, phone: string, avatarUrl: string }. Armá una pantalla en React Native que los muestre en una FlatList con avatar, nombre y teléfono, y un TextInput arriba para buscar por nombre.

Los datos están hardcodeados. Simulá un pull to refresh que espera 1 segundo y vuelve a cargar la misma lista.

# requisitos

  • -Usá FlatList con keyExtractor basado en el id, no ScrollView con map.
  • -El TextInput es controlado y el filtro ignora mayúsculas y minúsculas.
  • -Mostrá un componente vacío con ListEmptyComponent cuando no hay resultados.
  • -Pull to refresh con refreshing y onRefresh.
  • -Estilos con StyleSheet.create, respetando el safe area.

# si te sobra tiempo, te van a preguntar

  • -¿Por qué FlatList y no un ScrollView con map?
  • -¿Cómo harías que al tocar un contacto se abra la app de teléfono?
  • -¿Qué cambiarías si cada fila tuviera un botón de favorito?
02Lista y detalle con navegaciónQue sepas estructurar navegación entre pantallas, manejar parámetros y cuidar los estados de carga en mobile.45 min

Armá dos pantallas con Expo Router o React Navigation. La primera lista productos que trae fetchProducts(): Promise<{ id: string, name: string, price: number }[]> y la segunda muestra el detalle de uno con fetchProduct(id): Promise<{ id: string, name: string, price: number, description: string }>. Mockeá las dos funciones con un delay de 600 ms.

Al tocar un producto se navega al detalle pasando solo el id como parámetro. El título del header del detalle es el nombre del producto.

# requisitos

  • -El detalle recibe el id por parámetro de ruta y pide sus datos; no recibe el objeto entero.
  • -Ambas pantallas muestran estados de carga y error con opción de reintentar.
  • -El precio se formatea como moneda con Intl.NumberFormat o equivalente.
  • -Si la pantalla se cierra antes de que termine el request, no se actualiza el state.
  • -Los tipos de las rutas y parámetros están definidos en TypeScript.

# si te sobra tiempo, te van a preguntar

  • -¿Por qué pasar el id y no el objeto completo como parámetro?
  • -¿Cómo harías para que un deep link abra directamente el detalle?
  • -¿Cómo evitarías volver a pedir el producto si ya lo tenías de la lista?
03Agrupar transacciones para una SectionListQue manejes transformaciones de datos en JavaScript con métodos de array y las conectes con componentes de lista de React Native.30 min

Recibís transacciones con la forma { id: string, description: string, amount: number, date: string }, donde date es ISO (2024-06-03T10:15:00Z) y amount es negativo para gastos. Escribí una función pura toSections(transactions) que devuelva el formato que espera SectionList: { title: string, total: number, data: Transaction[] }[].

Las secciones se agrupan por día, van del día más reciente al más viejo y dentro de cada día las transacciones también van de la más reciente a la más vieja. total es la suma del día. Después usá la función para renderizar la SectionList con el total en cada encabezado.

# requisitos

  • -La función no muta el array de entrada.
  • -El agrupamiento es O(n) más el costo del ordenamiento.
  • -Los títulos de sección son legibles, por ejemplo Hoy, Ayer o 3 de junio.
  • -Los montos negativos y positivos se distinguen visualmente.
  • -Escribí un par de tests para toSections.

# si te sobra tiempo, te van a preguntar

  • -¿Qué problemas de zona horaria puede tener agrupar por día?
  • -¿Por qué conviene que esta transformación sea una función pura separada del componente?
  • -¿Cómo evitarías recalcular las secciones en cada render?

# leetcode recomendado (Frontend · React Native · Junior)

EasyCounter IIDel plan 30 Days of JavaScript: closures que devuelven varios métodos, la idea detrás de hooks y stores simples.
EasyApply Transform Over Each Element in ArrayDel plan 30 Days of JavaScript: reimplementar map para entender callbacks, la base de renderizar listas.
EasyIs Object EmptyDel plan 30 Days of JavaScript: diferencias entre objetos y arrays, útil al validar respuestas de una API.
EasySleepDel plan 30 Days of JavaScript: primera promesa construida a mano, ideal para entender async y await.
EasyValid AnagramConteo de frecuencias con objetos o Map, un patrón de algoritmos muy básico y muy pedido.
EasyContains DuplicateUso de Set para bajar de O(n²) a O(n), algo que también usás para deduplicar datos en una lista.
$ progreso --live-codingFrontend · React Native · Junior

ejercicios0/3

leetcode0/6

$ 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