~/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[x]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 contactos con búsqueda en ComposeQue conozcas los fundamentos de Compose: estado, state hoisting, listas lazy y supervivencia a cambios de configuración.30 min

Tenés una lista de contactos data class Contact(val id: Long, val name: String, val phone: String). Armá una pantalla en Jetpack Compose con un TextField de búsqueda arriba y la lista de contactos abajo, ordenada alfabéticamente.

Al escribir, la lista se filtra por nombre o teléfono. Los datos están hardcodeados en un ViewModel; no hace falta red ni base de datos.

# requisitos

  • -Usá LazyColumn con key = { it.id } en items.
  • -El estado de la búsqueda se eleva (state hoisting): la pantalla recibe el texto y un callback, no lo guarda adentro.
  • -El texto de búsqueda sobrevive a la rotación de pantalla.
  • -El filtro ignora mayúsculas y minúsculas.
  • -Mostrá un mensaje cuando no hay resultados.

# si te sobra tiempo, te van a preguntar

  • -¿Qué diferencia hay entre remember y rememberSaveable?
  • -¿Por qué conviene pasar key en una LazyColumn?
  • -¿Cómo agregarías encabezados por letra inicial con stickyHeader?
02Procesar pedidos con colecciones de KotlinQue escribas Kotlin idiomático con data classes, enums y operaciones funcionales sobre colecciones.30 min

Tenés data class Order(val id: String, val customer: String, val amount: Double, val status: Status) con enum class Status { PAID, PENDING, CANCELLED }. Escribí funciones puras que reciban un List<Order> y devuelvan lo siguiente.

Primero, el total pagado por cliente como Map<String, Double>, ignorando pedidos cancelados y pendientes. Segundo, los 3 clientes que más gastaron, de mayor a menor. Tercero, la cantidad de pedidos por estado. Por ejemplo, con pedidos de ana por 100 y 50 pagados y uno de beto por 80 cancelado, el primer resultado es {ana=150.0}.

# requisitos

  • -Usá la API de colecciones (filter, groupBy, sumOf, sortedByDescending, take) en lugar de loops manuales.
  • -Las funciones no mutan la lista de entrada.
  • -Manejá la lista vacía sin errores.
  • -Escribí al menos un test unitario con JUnit para cada función.

# si te sobra tiempo, te van a preguntar

  • -¿Por qué usar Double para montos puede ser un problema y qué usarías en su lugar?
  • -¿Cuándo convendría usar asSequence()?
  • -¿Qué ventaja tiene un when exhaustivo sobre el enum?
03Formulario de registro con ViewModelQue conectes Compose con un ViewModel usando flujo de datos unidireccional y coroutines, respetando el ciclo de vida.45 min

Armá un formulario de registro en Compose con nombre, email y contraseña, y un botón Crear cuenta. Mockeá el backend con suspend fun register(name: String, email: String, password: String): Result<Unit> que espera 1 segundo y falla si el email ya existe (test@mail.com).

Cada campo muestra su error debajo cuando el usuario sale del campo o intenta enviar. Mientras se envía, el botón muestra un indicador de carga.

# requisitos

  • -El estado del formulario vive en un ViewModel y se expone como StateFlow de un data class de UI state.
  • -La llamada se hace en viewModelScope y la UI se recolecta con collectAsStateWithLifecycle.
  • -Validaciones: nombre no vacío, email con formato válido, contraseña de al menos 8 caracteres.
  • -Teclado adecuado para cada campo y la contraseña oculta con PasswordVisualTransformation.
  • -Si el registro falla se muestra un error general sin perder lo que el usuario escribió.

# si te sobra tiempo, te van a preguntar

  • -¿Qué pasa con el request en curso si el usuario rota el teléfono?
  • -¿Cómo mostrarías un mensaje de éxito una sola vez sin que reaparezca al rotar?
  • -¿Cómo testearías el ViewModel?

# leetcode recomendado (Frontend · Android · Junior)

EasyContains DuplicateUso básico de HashSet para pasar de O(n²) a O(n), un patrón que aparece en todos lados.
EasyValid PalindromeDos punteros sobre strings y manejo de caracteres en Kotlin.
EasyMerge Two Sorted ListsManejo de nulos y referencias en listas enlazadas, ideal para practicar null safety de Kotlin.
EasyMove ZeroesManipular un array in place con dos punteros sin memoria extra.
EasyInvert Binary TreeRecursión simple sobre árboles, la puerta de entrada a problemas de jerarquías.
EasyRoman to IntegerMapas y recorrido de strings con una regla de negocio, típico en primeras rondas de mobile.
$ progreso --live-codingFrontend · Android · 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