THE NEXT LEVEL · PREPARE TO EXPLAIN

Know the answer.
Show the reasoning.

88 worked guides. 12 connected topics. From your first Go interview to systems and failure analysis.

Each guide includes a strong answer, a tempting wrong answer, a worked exercise and a follow-up. Eight algorithm labs let you step through 24 input scenarios. The map is a route through the subject, with every level open.

  1. Junior
  2. Middle
  3. Senior
  4. Staff / expert

No finite bank covers every possible interview. Use these guides to practice deriving an answer when the constraints change. Native 1.1.4 adds the same separate Interview area; web and app progress are independent.

88 guides match. Difficulty describes the reasoning expected, not a hiring guarantee.

Junior · Go foundations

Zero values and safe APIs

Is every zero value ready for every operation?

Prepare & explain →

Junior · Go foundations

Slice copies share storage

Why did appending to one slice change another?

Prepare & explain →

Junior · Go foundations

Bytes, runes and text

What does len(s) count, and when does range give the wrong index for a UI?

Prepare & explain →

Middle · Go foundations

Typed nil and method sets

Why can err != nil even though its pointer is nil?

Prepare & explain →

Middle · Go foundations

Errors are part of the API

Should every error be wrapped, logged and retried?

Prepare & explain →

Middle · Go foundations

Generics, interfaces and typed code

When should a reusable function be generic?

Prepare & explain →

Junior · Go foundations

Defer arguments and return values

When are deferred function arguments evaluated?

Prepare & explain →

Middle · Go foundations

Panic, recover and failure boundaries

Can a parent goroutine recover a child goroutine's panic?

Prepare & explain →

Junior · Go foundations

Map order, nil maps and concurrency

Can you rely on iteration order or read a map during a concurrent write?

Prepare & explain →

Middle · Go foundations

Everything is passed by value

If Go passes by value, why can a function modify a caller's slice elements?

Prepare & explain →

Middle · Go foundations

Loop variables and toolchain semantics

Do all goroutines in a range loop still capture the same iteration variable?

Prepare & explain →

Middle · Go foundations

Comparability and map keys

Why can using any as a map key panic?

Prepare & explain →

Middle · Go foundations

io.Reader: data and an error together

Should a read loop discard bytes when Read returns an error?

Prepare & explain →

Senior · Go foundations

Integer width, overflow and representation

Does int always have64 bits, and do integer operations panic on overflow?

Prepare & explain →

Middle · Memory and runtime

Stack, heap and escape analysis

Does returning a pointer always allocate on the heap?

Prepare & explain →

Senior · Memory and runtime

GC budgets under load

Why can a service with little live data still spend substantial CPU in GC?

Prepare & explain →

Senior · Memory and runtime

Retention, pools and ownership

Can a tiny slice retain a very large allocation?

Prepare & explain →

Senior · Memory and runtime

Goroutines, threads and CPU quotas

Why does adding goroutines fail to speed up CPU work?

Prepare & explain →

Staff / expert · Memory and runtime

Memory layout and false sharing

Two independent counters slow down when updated concurrently. Why?

Prepare & explain →

Staff / expert · Memory and runtime

When unsafe and cgo change the contract

Can you keep a C pointer to Go memory after a cgo call?

Prepare & explain →

Junior · Concurrency

Channel closure is a protocol

Who closes a channel used by several workers?

Prepare & explain →

Middle · Concurrency

Cancellation is not joining

Does calling cancel guarantee a goroutine has stopped?

Prepare & explain →

Middle · Concurrency

Data races versus business races

Why is a check-then-insert still wrong with a mutex around each operation?

Prepare & explain →

Senior · Concurrency

Happens-before, not wishful timing

Can another goroutine safely read a value after sleeping?

Prepare & explain →

Senior · Concurrency

Bounded workers and overload

How do you keep one million jobs from becoming one million goroutines?

Prepare & explain →

Senior · Concurrency

Select, timers and fairness

Does select always prefer cancellation over a ready result?

Prepare & explain →

Senior · Concurrency

Concurrent cache and stampedes

How do you avoid 1,000 identical cache misses triggering 1,000 database reads?

Prepare & explain →

Staff / expert · Concurrency

Deadlock and lock ordering

How do you debug a service that is alive but no longer processes requests?

Prepare & explain →

Junior · Algorithms

Binary search as a boundary invariant

Find the first index whose value is at least a target.

Prepare & explain →

Junior · Algorithms

Two sum and index ownership

Find two distinct indexes whose values sum to a target.

Prepare & explain →

Middle · Algorithms

Sliding window without repeated scans

Find the longest byte substring with no repeated byte.

Prepare & explain →

Middle · Algorithms

BFS and shortest unweighted paths

How do you find the fewest edges between two nodes?

Prepare & explain →

Senior · Algorithms

Dijkstra and stale heap entries

How do you find cheapest routes with nonnegative edge weights?

Prepare & explain →

Senior · Algorithms

Top-K with a bounded min-heap

How can a stream keep its largest k values without sorting everything?

Prepare & explain →

Middle · Algorithms

Merge sorted streams

How do you merge two sorted inputs without re-sorting them?

Prepare & explain →

Senior · Algorithms

Dynamic programming: minimum coins

Why does choosing the largest coin first fail for arbitrary denominations?

Prepare & explain →

Junior · Architecture and systems

Why Go for backend systems?

Why choose Go for a network service, and when would you choose something else?

Prepare & explain →

Middle · Architecture and systems

Package boundaries and clean code

What makes a Go package a useful boundary rather than an extra folder?

Prepare & explain →

Senior · Architecture and systems

Layered, hexagonal, vertical or services?

How would you choose an architecture for a growing Go product?

Prepare & explain →

Senior · Architecture and systems

Patterns with a cost

Which design patterns translate naturally into Go?

Prepare & explain →

Senior · Architecture and systems

Idempotency, outbox and retries

How do you keep an accepted order and its published event consistent?

Prepare & explain →

Staff / expert · Architecture and systems

Design a rate-limited job platform

How would you design a multi-tenant Go job service at 100,000 jobs per minute?

Prepare & explain →

Middle · Network services

One request, one time budget

Which timeouts should a production Go HTTP service configure?

Prepare & explain →

Middle · Network services

Authorization and hostile input

What must a Go API validate beyond successful JSON decoding?

Prepare & explain →

Senior · Network services

Idempotent API operations

How should POST /payments behave when the caller retries?

Prepare & explain →

Senior · Network services

Graceful shutdown and probes

What is the correct shutdown order for a Go service?

Prepare & explain →

Senior · Network services

SQL pools, transactions and N+1

What does sql.DB own, and why can increasing its pool hurt?

Prepare & explain →

Staff / expert · Network services

Streaming, backpressure and ordering

How do you stream millions of records without retaining them all?

Prepare & explain →

Junior · Testing and performance

Tests that prove behavior

What makes a good table-driven test?

Prepare & explain →

Middle · Testing and performance

Parallel tests without shared state

Why does a test pass alone but fail with t.Parallel?

Prepare & explain →

Middle · Testing and performance

Fuzzing parsers with useful properties

What property would you fuzz for a custom codec?

Prepare & explain →

Senior · Testing and performance

Benchmark versus load test

Why can a faster microbenchmark still make production slower?

Prepare & explain →

Senior · Testing and performance

CPU, heap, block and trace

Which diagnostic would you collect first for a p99 incident?

Prepare & explain →

Staff / expert · Testing and performance

Fault tests around unknown outcomes

How do you test a retry protocol instead of just a retry loop?

Prepare & explain →

Junior · Modules and tooling

Package, module and repository

Why can a repository contain several packages but only one module path in one go.mod?

Prepare & explain →

Middle · Modules and tooling

Version selection and checksums

Why did changing one dependency upgrade another?

Prepare & explain →

Middle · Modules and tooling

go.work, replace and release consumers

Why can code work in a workspace but fail for users?

Prepare & explain →

Senior · Modules and tooling

Private dependencies and supply chain

How do you keep private module names and credentials out of public services?

Prepare & explain →

Senior · Modules and tooling

Build reproducibility and resource budgets

Why does go test ./... fail only under a small CI container?

Prepare & explain →

Staff / expert · Modules and tooling

API evolution and toolchain changes

How do you upgrade a Go service without silently changing its contract?

Prepare & explain →

Junior · MongoDB with Go

One MongoDB client, many operations

Do you create and disconnect a MongoDB client for every HTTP request?

Prepare & explain →

Middle · MongoDB with Go

Compound indexes and pagination

Which index supports tenant filtering and newest-first pagination?

Prepare & explain →

Middle · MongoDB with Go

Conditional updates and uniqueness

How do two Go replicas safely update the same document?

Prepare & explain →

Senior · MongoDB with Go

Transactions and external side effects

Can a MongoDB transaction callback send a payment or email?

Prepare & explain →

Senior · MongoDB with Go

Cursors, cancellation and partial results

Why can a cursor loop return no error but still lose records?

Prepare & explain →

Staff / expert · MongoDB with Go

MongoDB under contention

Why does increasing maxPoolSize fail to fix p99?

Prepare & explain →

Junior · Redis with Go

Redis client lifetime and missing keys

How do you distinguish a missing Redis key from an outage in Go?

Prepare & explain →

Middle · Redis with Go

Cache invalidation and expiration

How do you prevent stale data from living forever?

Prepare & explain →

Middle · Redis with Go

Pipeline is not a transaction

What does Redis pipelining guarantee?

Prepare & explain →

Senior · Redis with Go

Leases, fencing and stale owners

Does SET key token NX PX make a perfect distributed lock?

Prepare & explain →

Senior · Redis with Go

Streams, pending entries and idempotency

When should a consumer acknowledge a Redis Stream message?

Prepare & explain →

Staff / expert · Redis with Go

Hot keys, eviction and overload

Why does Redis latency rise even when Go CPU is low?

Prepare & explain →

Junior · Docker and Kubernetes

Build an image, not a development machine

What belongs in a production Go container image?

Prepare & explain →

Middle · Docker and Kubernetes

Go, MongoDB and Redis in Compose

Why can a container not reach MongoDB at localhost:27017?

Prepare & explain →

Middle · Docker and Kubernetes

Startup, readiness and liveness probes

Why are three Kubernetes probes different?

Prepare & explain →

Senior · Docker and Kubernetes

Requests, limits and Go runtime budgets

What happens when a Pod exceeds CPU or memory limits?

Prepare & explain →

Senior · Docker and Kubernetes

Rolling updates and compatibility

How do you deploy without dropping accepted work?

Prepare & explain →

Senior · Docker and Kubernetes

Autoscaling without melting storage

Why can adding Go replicas make the system slower?

Prepare & explain →

Senior · Docker and Kubernetes

Secrets, configuration and RBAC

What belongs in an image, a ConfigMap and a Secret?

Prepare & explain →

Staff / expert · Docker and Kubernetes

Stateful databases are not ordinary Pods

Should MongoDB and Redis simply scale like a stateless Go Deployment?

Prepare & explain →

Junior · Go with coding agents

Use an agent without outsourcing understanding

How would you use Claude Code, Codex or Cursor for a Go change?

Prepare & explain →

Middle · Go with coding agents

Codex repository guidance for Go

What should a Go repository put in AGENTS.md for Codex?

Prepare & explain →

Middle · Go with coding agents

Claude Code: context and verification

How do you make Claude Code useful on an unfamiliar Go service?

Prepare & explain →

Middle · Go with coding agents

Cursor rules and scoped edits

How would you guide Cursor while preserving an existing Go API?

Prepare & explain →

Senior · Go with coding agents

Verify generated Go APIs and dependencies

How do you catch a coding agent that invents a driver method?

Prepare & explain →

Senior · Go with coding agents

Agent permissions and prompt injection

Why can repository text be unsafe input for a coding agent?

Prepare & explain →

Senior · Go with coding agents

Review AI-written concurrent Go

What should you inspect first in generated goroutine code?

Prepare & explain →

Staff / expert · Go with coding agents

Demonstrate your own engineering judgment

How do you discuss AI-assisted Go work in an interview?

Prepare & explain →