Pick a focused question that fits your time, stack, and interview goal.
How much time do you have?
Show one-drill sessions you can finish now.
618 drills fit a 20-minute session. Closest fits first.
Page 24 of 26
Explains minimal APIs, endpoint groups, dependency injection, typed results, filters, and when they fit real services.
Identifies useful memory and GC signals for alerting without overwhelming the team with noisy telemetry.
Covers the Large Object Heap, big buffers, fragmentation pressure, and practical ways to avoid loading too much at once.
Explains how middleware order affects authentication, authorization, error handling, routing, CORS, and response behavior.
Explains local filesystem limits, multiple instances, in-memory state, distributed cache, durable storage, and scale-out-safe API design.
Explains how to choose an E2E flow, control test data, avoid brittleness, and cover frontend/API integration risk.
Explains attribute routing, binding-source inference, automatic validation responses, and where explicit domain validation still belongs.
Chooses counters, traces, stack snapshots, GC dumps, full dumps, or a profiler from the production symptom and investigation cost.
Explains Aspire as a code-first application model and developer experience without confusing it with a production runtime or architecture style.
Separates hiding implementation complexity from controlling access to state, with practical examples where both ideas work together.
Uses public, internal, protected, private, and protected internal deliberately to control API surface and inheritance exposure.
Clarify the common misconception that await starts work on a new thread, and explain what actually happens for I/O-bound operations.
Separates identity establishment from permission decisions and applies ASP.NET Core schemes, policies, tenant boundaries, ownership checks, and correct challenge or forbid behavior.
Explains how TTL choices balance freshness, load reduction, user expectations, and operational safety.
Chooses a sequential collection from size, mutation, access pattern, memory locality, and the behavior callers actually need.
Explains how unit, integration, contract, component, and end-to-end tests cover different failure boundaries.
Explains when local process memory is enough and when shared Redis-style caching is worth the extra dependency.
Compares point-to-point queues with publish-subscribe topics and explains when each model fits.
Explains process isolation, shared kernels, image-based deployment, and where containers differ operationally from virtual machines.
Explains controlled inputs, uncontrolled inputs, validation, refs, and when each form approach fits.
Explains what belongs in runbooks, how on-call handoff preserves context, and how operational docs stay useful.
Distinguishes explicit dependency injection from runtime service lookup and identifies the narrow framework boundaries where scoped resolution is legitimate.
Explains dashboard panels that help an API owner see user impact, dependency health, releases, and current incidents.
Explains practical UI states for data fetching, empty results, partial failure, retry, and accessible recovery.