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 ASP.NET Core con header Idempotency-Key y body { "amount": 2500.00, "currency": "ARS", "customerId": "c_42" }. El endpoint llama a un IPaymentGateway externo que puede tardar varios segundos o hacer timeout.
Un reintento con la misma key y el mismo body devuelve la respuesta original sin volver a cobrar; con otro body, 422; si el original sigue en curso, 409. Las keys se guardan en SQL Server o Postgres con EF Core.
# requisitos
DbUpdateException por duplicado.Processing porque el proceso murió.WebApplicationFactory que envíe requests concurrentes con la misma key.# si te sobra tiempo, te van a preguntar
Implementá desde cero un rate limiter con token bucket: cada API key tiene una capacidad de N tokens que se recargan a R tokens por segundo. Exponelo como middleware que responde 429 con Retry-After cuando no hay tokens.
Después comparalo con el middleware de rate limiting que trae ASP.NET Core (AddRateLimiter) y explicá cómo lo llevarías a varias instancias con Redis.
# requisitos
TimeProvider) para poder testear sin esperar.# si te sobra tiempo, te van a preguntar
Una orden pasa por los estados Created, Paid, Shipped, Delivered y Cancelled. Solo se puede cancelar antes del envío, solo se puede enviar si está pagada, y cada cambio de estado tiene que disparar efectos: emails, liberar stock, avisar a logística.
Diseñá en C# el modelo de dominio y el servicio de aplicación para estas transiciones, de forma que las reglas no queden repartidas en controllers ni en if sueltos.
# requisitos
Order encapsula sus transiciones con métodos como Pay(), Ship() y Cancel(); el estado no tiene setter público.Result, justificá la elección).# si te sobra tiempo, te van a preguntar
Ship() y Cancel() sobre la misma orden?PriorityQueue para una métrica en streaming, la idea detrás de percentiles en vivo.SemaphoreSlim y Monitor.DENSE_RANK para el top N por grupo, una consulta que un senior debería dominar.