enunciados + leetcode
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.
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
LazyColumn con key = { it.id } en items.# si te sobra tiempo, te van a preguntar
remember y rememberSaveable?key en una LazyColumn?stickyHeader?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
filter, groupBy, sumOf, sortedByDescending, take) en lugar de loops manuales.# si te sobra tiempo, te van a preguntar
Double para montos puede ser un problema y qué usarías en su lugar?asSequence()?when exhaustivo sobre el enum?ViewModel usando flujo de datos unidireccional y coroutines, respetando el ciclo de vida.45 minArmá 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
ViewModel y se expone como StateFlow de un data class de UI state.viewModelScope y la UI se recolecta con collectAsStateWithLifecycle.PasswordVisualTransformation.# si te sobra tiempo, te van a preguntar
ViewModel?HashSet para pasar de O(n²) a O(n), un patrón que aparece en todos lados.