Sobes.tech

O que permitiu aumentar a capacidade do serviço de replicação de cerca de 300 para 700 mensagens por segundo? Como foram utilizados ConcurrentDictionary e SemaphoreSlim?

132

Tarefa: São recebidos eventos de utilizadores, cada um precisa de ser verificado numa fonte externa, mas ela não responde de imediato. Implemente o VerificationService que: - Aceita eventos de utilizadores - Tenta verificar cada um contactando um serviço externo - Se a resposta for PENDING, tenta reenviar este evento não antes de 5 segundos - Máximo de 3 tentativas, após as quais o ID do evento é exibido no stdout com o estado FAILED - Os eventos processados com sucesso são exibidos no stdout com o estado VERIFIED Os modelos e os stubs das dependências externas já estão implementados: 1. VerificationStatus 2. Event 3. VerificationResult 4. IExternalSource public enum VerificationStatus { OK, Pending, Error } public record Event(string Id, string Payload); public record VerificationResult(VerificationStatus Status, string? Message = null); public interface IExternalSource { VerificationResult Verify(string eventId); } public class VerificationService { private readonly IExternalSource _externalSource; private const int MaxAttempts = 3; private static readonly TimeSpan RetryDelay = TimeSpan.FromSeconds(5); public VerificationService(IExternalSource externalSource) { _externalSource = externalSource; } // TODO: implement }

63

public class A { public virtual void Print1() { System.Console.Write("A"); } public void Print2() { System.Console.Write("A"); } } public class B : A { public override void Print1() { System.Console.Write("B"); } } public class C : B { public new void Print2() { System.Console.Write("C"); } } static void Main(string[] args) { var c = new C(); A a = c; a.Print1(); a.Print2(); c.Print2(); } O que será impresso no stdout?

60

Lista<Action> ações = new List<Action>(); for (var count = 0; count < 10; count++) { ações.Add(() => System.Console.WriteLine(count)); } foreach (var ação in ações) { ação(); } O que estará no stdout?

60

public struct S : IDisposable { private bool dispose; public void Dispose() { dispose = true; } public bool GetDispose() { return dispose; } } O que estará no stdout?

48