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.
En una app de pedidos para vendedores en la calle, la conexión se corta todo el tiempo. Diseñá e implementá una cola que guarda las acciones del usuario (createOrder, updateOrder, cancelOrder) cuando no hay conexión y las envía en orden cuando vuelve.
Usá @react-native-community/netinfo para detectar la conexión (podés mockearlo) y una API mockeada que falla un 20% de las veces. La UI muestra cada pedido con su estado: sincronizado, pendiente o con error.
# requisitos
# si te sobra tiempo, te van a preguntar
Tenés que mostrar una galería en grilla de 3 columnas con 5.000 fotos { id: string, thumbUrl: string, fullUrl: string, width: number, height: number }. Al tocar una foto se abre en pantalla completa con swipe horizontal para pasar a la siguiente y pinch to zoom.
Hoy la versión existente usa ScrollView con map, tarda 4 segundos en abrir y se cierra por memoria en Android. Reescribila para que abra al instante y scrollee fluido.
# requisitos
FlatList con numColumns y getItemLayout, o FlashList con estimatedItemSize).expo-image) y tamaño acotado.# si te sobra tiempo, te van a preguntar
Implementá en TypeScript createCache<K, V>({ max, ttlMs }), que devuelve un objeto con get(key), set(key, value), has(key), delete(key) y size. Cuando se supera max se desaloja la entrada usada hace más tiempo, y una entrada vencida se comporta como si no existiera.
Después, usalo para envolver una función async: cachedFetch = withCache(fetchUser, { max: 100, ttlMs: 60_000 }), donde dos llamadas simultáneas con el mismo id comparten la misma promesa.
# requisitos
get y set son O(1), aprovechando el orden de inserción de Map.now = Date.now) para poder testear sin esperar.withCache.# si te sobra tiempo, te van a preguntar
Promise.all a mano, una pregunta asíncrona clásica de nivel senior.Map en O(1); muy frecuente en senior y directamente aplicable a caches de imágenes y datos.