AND

Resolución activa de problemas

Prompts de Práctica

Inténtalo antes de revelar. Cada prompt de código y diseño de sistema se desarrolla por etapas — enfoque, luego solución — para que practiques recuperación, no reconocimiento. Marca lo que resolviste; revisita el resto.

Resueltos 0 / 13
Nivel
  1. CódigoMid

    Debounce de un Flow (entrada de búsqueda)

    flowcoroutinesoperators

    Dado un Flow<String> de texto de caja de búsqueda, produce un stream que solo emite después de que el usuario pausa la escritura por 300ms y omite consultas consecutivas duplicadas. Luego explica por qué flatMapLatest es la forma correcta de ejecutar la búsqueda real.

    próximo: nuevo
  2. CódigoSenior

    Retry de coroutine con backoff exponencial

    coroutinesresilience

    Escribe un suspend fun <T> retry(times, initialDelay, maxDelay, factor, block) genérico que reintente un block suspend en fallo con backoff exponencial, se rinda después de times intentos, y nunca trague cancelación.

    próximo: nuevo
  3. CódigoSenior

    LRU cache thread-safe en Kotlin

    kotlindata-structuresconcurrency

    Implementa un LRU cache de capacidad fija con get/put O(1). Hazlo seguro para acceso concurrente de coroutines. ¿Qué evita, y cómo mantienes O(1)?

    próximo: nuevo
  4. CódigoSenior

    Reducer MVI con un Intent sealed

    mvistatekotlin

    Modela una pantalla de contador con MVI: un UiState inmutable, un Intent sealed, y un reduce(state, intent): state puro. Muestra por qué la pureza e inmutabilidad ayudan al testing.

    próximo: nuevo
  5. CódigoMid

    ViewModel con StateFlow que sobrevive muerte del proceso

    viewmodelsavedstatehandlestate

    Escribe un ViewModel que exponga un contador como StateFlow<Int> que sobreviva tanto rotación como muerte del proceso, con increment/decrement. ¿Qué APIs garantizan cada uno?

    próximo: nuevo
  6. CódigoSenior

    Repository offline-first (Room + red)

    architectureroomflow

    Implementa un repository donde la UI observa Room (fuente de verdad) y un refresh() lo actualiza desde la red. ¿Por qué esto da stale-while-revalidate gratis?

    próximo: nuevo
  7. CódigoMid

    Parsing seguro de JSON con kotlinx.serialization

    kotlinserializationerror-handling

    Parsea una respuesta de API en un modelo tipado con kotlinx.serialization, tolerando campos desconocidos/extras, y retorna un Result en lugar de lanzar a la UI. ¿Por qué validar en el límite?

    próximo: nuevo
  8. CódigoSenior

    Modifier Compose personalizado: offset de lectura diferida

    composeperformancemodifier

    Animas la posición horizontal de un elemento desde un estado que cambia rápido. Muestra la versión que se recomposición cada frame y la que no, y explica por qué.

    próximo: nuevo
  9. DiseñoSenior

    Diseña una funcionalidad de chat en tiempo real

    architecturereal-timeoffline-first

    Diseña chat 1:1: entrega en tiempo real, historial de mensajes, envío offline, y acuses de lectura. Cubre transporte, capa de datos, ordenamiento, y compensaciones.

    próximo: nuevo
  10. DiseñoSenior

    Diseña subida de imágenes confiable con una cola offline

    workmanagerofflineresilience

    Los usuarios seleccionan fotos que deben subirse de forma confiable incluso si la app se mata o está offline. Diseña la cola, reintentos, progreso, y restricciones.

    próximo: nuevo
  11. DiseñoArquitecto

    Diseña un sistema de feature flags / experimentos

    architectureexperimentationrelease

    Diseña feature flags de lado cliente y experimentos A/B: cómo se obtienen, cachean, evalúan, y mantienen consistentes — además de kill switches y analíticas. ¿Compensaciones?

    próximo: nuevo
  12. DiseñoSenior

    Diseña analíticas / seguimiento de eventos en el cliente

    architectureanalyticsbatching

    Diseña un pipeline de analíticas del cliente: capturar eventos, agruparlos, sobrevivir offline y muerte del proceso, y evitar bloquear la UI o agotar la batería. ¿Compensaciones?

    próximo: nuevo
  13. DiseñoMid

    Diseña un limitador de tasa de token-bucket para llamadas API

    concurrencyresiliencekotlin

    Debes limitar las solicitudes salientes a N por segundo en toda la app, seguro para coroutines. Diseña un token-bucket y cómo se integra con OkHttp/coroutines. ¿Compensaciones vs limitación del lado del servidor?

    próximo: nuevo