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.
878 drills fit a 10-minute session. Closest fits first.
Page 31 of 37
Uses bounds to express capabilities required by generic code and distinguishes them from wildcard flexibility at call sites.
Chooses stereotype scanning for owned application components and explicit factory methods for third-party types, construction policy, and visible composition.
Uses typed grouped binding and validation for application configuration while reserving @Value for small isolated expressions.
Prefers constructor injection for required dependencies while explaining the limited roles and costs of setter and field injection.
Distinguishes deterministic cleanup from finalization and explains resource ownership in normal application code.
Uses profiles for named environment or deployment groups and focused conditions for feature or capability selection.
Chooses a focused MVC slice or full application context based on whether the risk is the web contract or complete wiring.
Chooses dataclasses for transparent data-oriented types while preserving invariants, safe defaults, and honest immutability claims.
Positions records as transparent, shallowly immutable data carriers with generated value-oriented members and clear modeling limits.
Explains asynchronous cleanup for resources whose shutdown path needs async work, such as flushing or closing remote connections.
Frames inheritance as a behavioral is-a relationship whose subtypes must remain valid substitutes, not merely a code-reuse shortcut.
Chooses between FastAPI-managed response processing and direct control over the HTTP response.
Chooses between synchronous and asynchronous FastAPI handlers based on the libraries and work they execute.
Separates source state, derived state, and synchronization with external systems to prevent reactive loops.
Connects static ownership to constants and stateless operations while exposing the risks of global mutable state and initialization.
Rejects agent complexity when rules, APIs, search, ordinary automation, or a bounded model call solve the task more safely.
Identifies tasks better served by deterministic code, search, rules, or conventional models because of correctness, latency, cost, or control.
Overrides unstable external boundaries intentionally while keeping the framework behavior and real collaborators the test claims to prove.
Separates declared variable types, unchecked developer assertions, and compatibility checking that preserves useful inferred types.
Chooses Java time types by business meaning and handles time zones, daylight-saving transitions, persistence, and testable clocks.
Distinguishes a typed final answer from a model request for the application to execute an external capability.
Compares eager collections with lazy one-pass generation through memory, timing, reuse, readability, and resource ownership.
Compares Java interfaces and abstract classes through contract, shared state, implementation reuse, and evolution trade-offs.
Compares Java list implementations using actual access patterns, traversal cost, memory locality, and insertion location.