
Dependency Injection
Lifetimes de serviços (singleton, scoped, transient), registro de serviços, IServiceProvider, boas práticas
1Qual é a principal diferença entre os lifetimes Singleton, Scoped e Transient?
Qual é a principal diferença entre os lifetimes Singleton, Scoped e Transient?
Resposta
Singleton cria uma única instância durante toda a vida da aplicação, Scoped cria uma instância por requisição HTTP (ou scope), e Transient cria uma nova instância sempre que é injetado. Esses lifetimes determinam quando e quantas vezes o contêiner DI instancia um serviço. Use Singleton para serviços sem estado compartilhados, Scoped para serviços ligados a uma requisição (como DbContext), e Transient para serviços leves sem estado.
2Qual lifetime deve ser usado para registrar um DbContext do Entity Framework Core?
Qual lifetime deve ser usado para registrar um DbContext do Entity Framework Core?
Resposta
O DbContext deve ser registrado com lifetime Scoped porque não é thread-safe e mantém um estado de tracking das entidades. Cada requisição HTTP deve ter sua própria instância de DbContext para evitar problemas de concorrência. O registro é feito com AddDbContext, que configura automaticamente o lifetime Scoped. Usar Singleton causaria erros de concorrência e Transient desperdiçaria recursos ao criar instâncias demais.
3Como registrar um serviço com uma interface e sua implementação?
Como registrar um serviço com uma interface e sua implementação?
Resposta
O registro de um serviço é feito com os métodos AddSingleton, AddScoped ou AddTransient, especificando a interface como tipo de serviço e a classe concreta como implementação. A sintaxe é services.Add{Lifetime}<IInterface, Implementation>(). Essa abordagem respeita o princípio de inversão de dependência e facilita os testes ao permitir a substituição de implementações. O contêiner DI resolverá automaticamente a implementação concreta ao injetar a interface.
Em qual caso deve-se preferir AddSingleton em vez de AddScoped?
Qual é o papel de IServiceProvider no sistema de DI?
+21 perguntas de entrevista
Outros temas de entrevista .NET
Fundamentos de C#
LINQ & Delegates
Fundamentos da linguagem C#
Fundamentos do ASP.NET Core
Ciclo de vida das requisições no ASP.NET Core
Configuration & Settings
Ciclo de vida da aplicação
Entity Framework Core
Minimal APIs
Desenvolvimento de Web API
Async no ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Serialização JSON
Entity Framework Core avançado
Recursos avançados do C#
Clean Architecture
Logging, Monitoring & Observability
Testes unitários e xUnit
Testes de integração
Docker & Containerization
NuGet Package Management
Memory Management & GC
Programação reativa
Async/await & Patterns
.NET Design Patterns
Otimização de desempenho
Segurança e Best Practices
SignalR e tempo real
Arquitetura de Microsserviços
Domine .NET para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis