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?
C#
int i = 1; object obj = i; ++i; Console.WriteLine(i); Console.WriteLine(obj); Console.WriteLine((short)obj);
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 }
Quais são os valores de Sum e Count?
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?
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?
O que acontece ao esperar pela primeira tarefa concluída com Task.WhenAny enquanto outras tarefas ainda estão a ser executadas?
Como limitar o grau de paralelismo ao processar um conjunto de tarefas assíncronas?
Como organizar a espera por novos eventos se a fila estiver vazia, e qual é a diferença entre Channel e ConcurrentQueue?
public struct S : IDisposable { private bool dispose; public void Dispose() { dispose = true; } public bool GetDispose() { return dispose; } } O que estará no stdout?
[nome] conte-nos sobre uma tarefa ou solução interessante no seu trabalho atual ou anterior que gostaria de partilhar.