Skip to content
tezvyn:

⚙️Backend Dev

Backend engineering, APIs, and databases

261 bites

Test yourself: Top 30 intermediate Backend Dev interview questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Intermediate interview questions in Backend Dev, page 11

intermediate2 min read

The buffer pool's role in database IO

Caches pages, serves reads from RAM, buffers dirty writes flushed later, uses eviction like LRU.

intermediate1 min read

Structural Go interfaces versus nominal Rust traits

Go interfaces are satisfied implicitly by method shape (structural); Rust traits must be explicitly implemented (nominal).

intermediate2 min read

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.

intermediate2 min read

PM2 cluster mode and multi-core utilization?

Cluster mode forks multiple worker processes using Node.js cluster module, distributes load, uses all CPU cores.

intermediate1 min read

Vectorized query execution and its speedups

Process column batches per operator call, amortize per-tuple overhead, use cache locality and SIMD.

intermediate1 min read

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.

intermediate2 min read

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.

intermediate1 min read

Sessionizing clickstream events into sessions

Order events per user, split on inactivity gap, assign session ids, pick event or session grain.

intermediate2 min read

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.

intermediate1 min read

Diagnosing database latency layer by layer

Split total time into pool-wait, query execution, and ORM-generated query patterns; use metrics at each layer.

intermediate1 min read

Go interface-constraint generics versus Rust trait bounds

Go constrains type parameters with interfaces and may use dictionaries/shape stenciling; Rust uses trait bounds with full monomorphization for zero-cost specialization.

intermediate1 min read

Choosing a time-series database for metrics

High-ingest timestamped writes, time-window queries, retention and downsampling, time-optimized compression.

intermediate2 min read

Go's mandatory runtime versus Rust's minimal runtime

Go ships a GC and goroutine scheduler in every binary, ideal for services; Rust has only a tiny runtime and no GC, enabling embedded, kernels, and WASM.

intermediate1 min read

Secure refresh token flow for access renewal

Short-lived access token, longer-lived refresh token stored server-side, a refresh endpoint that validates and rotates the refresh token issuing a new pair.

intermediate1 min read

Role of libuv in the Node.js runtime

Libuv provides the event loop, a thread pool for blocking work, and OS async I/O abstractions.

intermediate1 min read

Phantom reads and how serializable prevents them

New rows matching a predicate appear between reads; classic Repeatable Read locks existing rows not ranges; Serializable uses range or predicate locks.

intermediate1 min read

Go interfaces versus Rust traits and macros at scale

Go uses reflection over interface{} (e.g. encoding/json) for runtime flexibility; Rust uses traits plus derive/proc macros (e.g. serde) for compile-time, zero-cost code generation.

intermediate1 min read

Testing a DB endpoint via dependency override

Use app.dependency_overrides to swap the real get_db for one yielding a test database session, run against a disposable SQLite or test Postgres, and assert through TestClient.

intermediate1 min read

Microtask versus macrotask execution order in Node

NextTick drains before promises, both microtask queues flush fully between each macrotask, timers and setImmediate are macrotasks.

intermediate1 min read

The Volcano iterator model of query execution

Each operator exposes open/next/close, parents pull tuples from children, uniform composable interface, pipelined low memory.

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