← All topics
🧰 Core Tech Refresher

.NET 8 / 9 / 10 Highlights

What's new since .NET 6 — keyed DI, Native AOT, params collections.

You don't need encyclopedic release-note knowledge, but naming one or two concrete features per version signals you've actually been keeping up, not just shipping whatever the template gave you.

.NET 8 (LTS)Keyed DI services (AddKeyedSingleton/Scoped/Transient + [FromKeyedServices]) is the standout for this interview specifically: it's the idiomatic modern replacement for "factory-with-a-dictionary" when you have multiple implementations of one interface — directly relevant to the Strategy pattern exercise. Also: Native AOT for ASP.NET Core, TimeProvider for testable time.

.NET 9 — Hybrid Cache API (in-process + distributed cache in one abstraction), further AOT/trimming improvements, params supporting any collection type (not just arrays).

.NET 10 (LTS) — continues the yearly cadence; expect further AOT maturity and incremental performance work. Don't overclaim specifics you haven't verified — it's fine to say "I know the LTS cadence and track release notes, I'd want to confirm specifics against the docs before betting a migration decision on them."

Flashcards (3)

What's the .NET LTS release cadence?
tap to reveal answer
A new major version every November; even-numbered versions (.NET 8, 10, ...) are Long Term Support (3 years), odd-numbered (.NET 9, 11, ...) are Standard Term Support (18 months).
What problem do .NET 8 Keyed DI Services solve, and what's the old way of solving it?
tap to reveal answer
Registering multiple implementations of the same interface and resolving a specific one by a key (e.g. a string) at the injection site — via AddKeyedSingleton<T> + [FromKeyedServices("key")]. Previously you'd hand-roll a factory or Dictionary<string, T> and resolve manually.
Why might Native AOT matter for a client with distributed/event-driven services?
tap to reveal answer
Faster cold start and lower memory footprint — valuable for services that scale out/in frequently (e.g. containerized message consumers), at the cost of some reflection-heavy library compatibility.