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.
Implementá POST /payments en FastAPI. El cliente envía el header Idempotency-Key y el body { "amount": "100.00", "currency": "ARS", "customer_id": "c_123" }. El endpoint llama a un proveedor externo que puede tardar o fallar.
Un reintento con la misma key y el mismo body debe devolver la respuesta original sin volver a cobrar; con la misma key y otro body, 422; si el primero sigue en curso, 409. Usá Postgres con SQLAlchemy (podés escribir el schema y las queries).
# requisitos
INSERT ... ON CONFLICT DO NOTHING o constraint único), sin carreras entre dos workers.processing porque el proceso murió.# si te sobra tiempo, te van a preguntar
Implementá un procesador de jobs en Python sin Celery: una clase JobRunner que recibe jobs { "id": str, "type": str, "payload": dict, "attempts": int }, los reparte entre N workers y ejecuta el handler registrado para cada type.
Los jobs que fallan se reintentan con backoff exponencial hasta max_attempts; después van a una dead letter queue. Elegí si lo hacés con asyncio o con threads y justificalo según el tipo de trabajo.
# requisitos
asyncio.Queue o queue.Queue) como cola de trabajo.# si te sobra tiempo, te van a preguntar
SKIP LOCKED?Un e-commerce calcula el precio final de un carrito aplicando promociones: "2x1 en el producto X", "10% off en la categoría Y si el carrito supera $50.000" y "envío gratis para clientes premium". Hoy es un if gigante y cada promo nueva rompe algo.
Diseñá en código un módulo que reciba un carrito { "items": [{ "sku": str, "category": str, "price": Decimal, "qty": int }], "customer_tier": str } y una lista de reglas, y devuelva el total y el detalle de descuentos aplicados.
# requisitos
Protocol o clase abstracta).Decimal y tipado estricto; escribí tests para al menos dos reglas combinadas.# si te sobra tiempo, te van a preguntar
OrderedDict) es una pregunta casi obligada.heapq, útil para razonar sobre propagación en redes y grafos de servicios.DENSE_RANK para obtener el top N por grupo, algo que todo senior debería escribir de memoria.