Interview questions in Backend Dev, page 24
Why use an ASGI server like Uvicorn instead of the dev server?
Tests: dev vs prod environment distinction. Answer: Uvicorn is a prod server program; contrast dev server's constant restart/break/fix cycle with prod needs for performance, stability, and uninterrupted access.
What are key Dockerfile steps for Node.js Express apps?
Use lightweight base image, copy app, install deps, expose port, set NODE_ENV, run.
Predicate pushdown and why it speeds queries
Apply WHERE conditions at the scan or remote source, prune partitions and rows early, shrink data movement.
Criterion: the standard Rust benchmarking library
Criterion runs on stable Rust, collects many samples, applies statistical analysis with confidence intervals, and compares against saved baselines to detect regressions.

What are the key responsibilities for Nginx versus Uvicorn?
This tests the reverse-proxy versus ASGI-server boundary. A strong answer gives Nginx TLS termination, static files, buffering, and load balancing, while Uvicorn runs the Python app and async workers.
dependencies vs devDependencies in production?
Dependencies are needed at runtime, devDependencies only for development. npm install includes both, npm ci --only=production excludes dev.
The buffer pool's role in database IO
Caches pages, serves reads from RAM, buffers dirty writes flushed later, uses eviction like LRU.
Structural Go interfaces versus nominal Rust traits
Go interfaces are satisfied implicitly by method shape (structural); Rust traits must be explicitly implemented (nominal).
How do you manage configuration and secrets for a containerized FastAPI app?
Tests 12-factor config separation and Docker secret hygiene. A strong answer uses pydantic-settings with runtime env vars, lru_cache, and keeps .env out of the image. Red flag: baking credentials into Dockerfile layers or committing .env files.
PM2 cluster mode and multi-core utilization?
Cluster mode forks multiple worker processes using Node.js cluster module, distributes load, uses all CPU cores.
Vectorized query execution and its speedups
Process column batches per operator call, amortize per-tuple overhead, use cache locality and SIMD.
Goroutines and channels versus ownership-based concurrency
Go uses cheap goroutines and CSP-style channels to coordinate by communication; Rust uses ownership plus Send/Sync to make data races a compile error.
Explain multi-stage Docker builds for Python and builder vs runtime
Tests separation of build-time and runtime concerns. A strong answer contrasts the builder stage (gcc, headers, wheels) with the runtime stage (slim base, copied artifacts, no compiler). Red flag: citing size alone while ignoring security and caching.
Graceful shutdown implementation and zero-downtime deployments?
Listen for SIGTERM, stop accepting new connections, drain in-flight requests, close resources, exit.
Diagnosing a slow FastAPI endpoint under load
Add timing and tracing to isolate the slow span, watch CPU vs wait time and event-loop lag, then use profilers like py-spy or cProfile and DB EXPLAIN.
Sessionizing clickstream events into sessions
Order events per user, split on inactivity gap, assign session ids, pick event or session grain.
Go (T, error) versus Rust Result for error handling
Go returns a separate error value you may ignore; Rust wraps success or error in one Result enum the compiler forces you to handle. Go favors simplicity, Rust favors compile-enforced safety.
Multi-stage Docker builds for lean production images?
Build stage compiles/installs, runtime stage copies artifacts only, discards build tools.
Limits of BackgroundTasks vs Celery or ARQ
BackgroundTasks run in the same worker with no persistence, retries, or visibility, and die with the process; Celery or ARQ add durability, retries, scheduling, and separate workers.
Diagnosing database latency layer by layer
Split total time into pool-wait, query execution, and ORM-generated query patterns; use metrics at each layer.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles