THE NEXT LEVEL · PREPARE TO EXPLAIN
Your Go interview map.
Choose a direction, open a topic, and work through the guides — from your first Go interview to systems and failure analysis.
Explain the question, compare a strong answer, then try the worked exercise. Junior through Staff / expert. No finite bank covers every possible interview.
Your study marks and last opened section are saved on this browser. Web and app progress are independent; clearing browser data removes local progress.
Your place and study marks stay in this browser. No account needed.
88 guides in your interview map
Language & reasoning
Explain values, memory and concurrency. Trace an algorithm before choosing an implementation.
Go foundationsValues → interfaces → explicit contracts0/14understood
- Zero values and safe APIsIs every zero value ready for every operation?
- Slice copies share storageWhy did appending to one slice change another?
- Bytes, runes and textWhat does len(s) count, and when does range give the wrong index for a UI?
- Typed nil and method setsWhy can err != nil even though its pointer is nil?
- Errors are part of the APIShould every error be wrapped, logged and retried?
- Generics, interfaces and typed codeWhen should a reusable function be generic?
- Defer arguments and return valuesWhen are deferred function arguments evaluated?
- Panic, recover and failure boundariesCan a parent goroutine recover a child goroutine's panic?
- Map order, nil maps and concurrencyCan you rely on iteration order or read a map during a concurrent write?
- Everything is passed by valueIf Go passes by value, why can a function modify a caller's slice elements?
- Loop variables and toolchain semanticsDo all goroutines in a range loop still capture the same iteration variable?
- Comparability and map keysWhy can using any as a map key panic?
- io.Reader: data and an error togetherShould a read loop discard bytes when Read returns an error?
- Integer width, overflow and representationDoes int always have64 bits, and do integer operations panic on overflow?
Memory and runtimeAllocation → scheduling → measured latency0/6understood
- Stack, heap and escape analysisDoes returning a pointer always allocate on the heap?
- GC budgets under loadWhy can a service with little live data still spend substantial CPU in GC?
- Retention, pools and ownershipCan a tiny slice retain a very large allocation?
- Goroutines, threads and CPU quotasWhy does adding goroutines fail to speed up CPU work?
- Memory layout and false sharingTwo independent counters slow down when updated concurrently. Why?
- When unsafe and cgo change the contractCan you keep a C pointer to Go memory after a cgo call?
ConcurrencyOwnership → cancellation → bounded work0/8understood
- Channel closure is a protocolWho closes a channel used by several workers?
- Cancellation is not joiningDoes calling cancel guarantee a goroutine has stopped?
- Data races versus business racesWhy is a check-then-insert still wrong with a mutex around each operation?
- Happens-before, not wishful timingCan another goroutine safely read a value after sleeping?
- Bounded workers and overloadHow do you keep one million jobs from becoming one million goroutines?
- Select, timers and fairnessDoes select always prefer cancellation over a ready result?
- Concurrent cache and stampedesHow do you avoid 1,000 identical cache misses triggering 1,000 database reads?
- Deadlock and lock orderingHow do you debug a service that is alive but no longer processes requests?
AlgorithmsInvariant → trace → complexity → tests0/8understood
- Binary search as a boundary invariantFind the first index whose value is at least a target.
- Two sum and index ownershipFind two distinct indexes whose values sum to a target.
- Sliding window without repeated scansFind the longest byte substring with no repeated byte.
- BFS and shortest unweighted pathsHow do you find the fewest edges between two nodes?
- Dijkstra and stale heap entriesHow do you find cheapest routes with nonnegative edge weights?
- Top-K with a bounded min-heapHow can a stream keep its largest k values without sorting everything?
- Merge sorted streamsHow do you merge two sorted inputs without re-sorting them?
- Dynamic programming: minimum coinsWhy does choosing the largest coin first fail for arbitrary denominations?
Design & production
Connect architecture, network budgets, testing and repeatable builds.
Architecture and systemsBoundaries → consistency → failure recovery0/6understood
- Why Go for backend systems?Why choose Go for a network service, and when would you choose something else?
- Package boundaries and clean codeWhat makes a Go package a useful boundary rather than an extra folder?
- Layered, hexagonal, vertical or services?How would you choose an architecture for a growing Go product?
- Patterns with a costWhich design patterns translate naturally into Go?
- Idempotency, outbox and retriesHow do you keep an accepted order and its published event consistent?
- Design a rate-limited job platformHow would you design a multi-tenant Go job service at 100,000 jobs per minute?
Network servicesRequest → budget → storage → response0/6understood
- One request, one time budgetWhich timeouts should a production Go HTTP service configure?
- Authorization and hostile inputWhat must a Go API validate beyond successful JSON decoding?
- Idempotent API operationsHow should POST /payments behave when the caller retries?
- Graceful shutdown and probesWhat is the correct shutdown order for a Go service?
- SQL pools, transactions and N+1What does sql.DB own, and why can increasing its pool hurt?
- Streaming, backpressure and orderingHow do you stream millions of records without retaining them all?
Testing and performanceReproduce → assert → measure → diagnose0/6understood
- Tests that prove behaviorWhat makes a good table-driven test?
- Parallel tests without shared stateWhy does a test pass alone but fail with t.Parallel?
- Fuzzing parsers with useful propertiesWhat property would you fuzz for a custom codec?
- Benchmark versus load testWhy can a faster microbenchmark still make production slower?
- CPU, heap, block and traceWhich diagnostic would you collect first for a p99 incident?
- Fault tests around unknown outcomesHow do you test a retry protocol instead of just a retry loop?
Modules and toolingGraph → verified bytes → repeatable build0/6understood
- Package, module and repositoryWhy can a repository contain several packages but only one module path in one go.mod?
- Version selection and checksumsWhy did changing one dependency upgrade another?
- go.work, replace and release consumersWhy can code work in a workspace but fail for users?
- Private dependencies and supply chainHow do you keep private module names and credentials out of public services?
- Build reproducibility and resource budgetsWhy does go test ./... fail only under a small CI container?
- API evolution and toolchain changesHow do you upgrade a Go service without silently changing its contract?
The Go ecosystem
Work with databases, containers and coding agents. Reason about their failure modes.
MongoDB with GoModel → index → atomic write → bounded cursor0/6understood
- One MongoDB client, many operationsDo you create and disconnect a MongoDB client for every HTTP request?
- Compound indexes and paginationWhich index supports tenant filtering and newest-first pagination?
- Conditional updates and uniquenessHow do two Go replicas safely update the same document?
- Transactions and external side effectsCan a MongoDB transaction callback send a payment or email?
- Cursors, cancellation and partial resultsWhy can a cursor loop return no error but still lose records?
- MongoDB under contentionWhy does increasing maxPoolSize fail to fix p99?
Redis with GoShared client → bounded command → expiration → recovery0/6understood
- Redis client lifetime and missing keysHow do you distinguish a missing Redis key from an outage in Go?
- Cache invalidation and expirationHow do you prevent stale data from living forever?
- Pipeline is not a transactionWhat does Redis pipelining guarantee?
- Leases, fencing and stale ownersDoes SET key token NX PX make a perfect distributed lock?
- Streams, pending entries and idempotencyWhen should a consumer acknowledge a Redis Stream message?
- Hot keys, eviction and overloadWhy does Redis latency rise even when Go CPU is low?
Docker and KubernetesImage → Pod → traffic → drain0/8understood
- Build an image, not a development machineWhat belongs in a production Go container image?
- Go, MongoDB and Redis in ComposeWhy can a container not reach MongoDB at localhost:27017?
- Startup, readiness and liveness probesWhy are three Kubernetes probes different?
- Requests, limits and Go runtime budgetsWhat happens when a Pod exceeds CPU or memory limits?
- Rolling updates and compatibilityHow do you deploy without dropping accepted work?
- Autoscaling without melting storageWhy can adding Go replicas make the system slower?
- Secrets, configuration and RBACWhat belongs in an image, a ConfigMap and a Secret?
- Stateful databases are not ordinary PodsShould MongoDB and Redis simply scale like a stateless Go Deployment?
Go with coding agentsContext → small change → evidence → review0/8understood
- Use an agent without outsourcing understandingHow would you use Claude Code, Codex or Cursor for a Go change?
- Codex repository guidance for GoWhat should a Go repository put in AGENTS.md for Codex?
- Claude Code: context and verificationHow do you make Claude Code useful on an unfamiliar Go service?
- Cursor rules and scoped editsHow would you guide Cursor while preserving an existing Go API?
- Verify generated Go APIs and dependenciesHow do you catch a coding agent that invents a driver method?
- Agent permissions and prompt injectionWhy can repository text be unsafe input for a coding agent?
- Review AI-written concurrent GoWhat should you inspect first in generated goroutine code?
- Demonstrate your own engineering judgmentHow do you discuss AI-assisted Go work in an interview?
Every guide is open. Difficulty describes the reasoning expected, not a hiring guarantee. Study marks are separate from course completion.