Skip to content

Repository files navigation

Interview Refresher

Topic briefs on what engineers forget before technical interviews:

Read the briefs online.

Each topic in docs/topics/ is a brief grouped by subtopic, covering what an experienced engineer tends to forget before an interview. Skim them to memorize.

Topics

Fundamentals

  • Algorithms — complexity, arrays and sequences, strings, sorting, data structures, graphs, dynamic programming, greedy and backtracking, NP-hardness
  • Distributed Systems — theory, consistency models, replication, partitioning, consensus, clocks and IDs, transactions, conflict resolution, failure handling, Kafka and stream processing
  • Networking — TCP, keepalive and congestion control, HTTP/1.1 vs 2 vs 3, QUIC, DNS, IP addressing, NAT, MTU, BGP and anycast
  • Operating Systems — processes and signals, scheduling and cgroup throttling, virtual memory, OOM and cgroup limits, NUMA, file descriptors, epoll and io_uring, fsync, synchronization, perf tools
  • System Design — interview framework, load balancing, caching and consistency, storage choices, queues, rate limiting, reliability, architecture, probabilistic and geospatial structures, classic designs

Languages

  • Go — concurrency, memory management, slices/maps/strings, types and interfaces, errors, standard library gotchas, modules and GODEBUG, testing, profiling and PGO
  • JavaScript — event loop, scope and closures, this and prototypes, numbers, async, modules, memory, metaprogramming, Node.js runtime, DOM events, recent additions
  • Python — runtime and the GIL, memory management, data structures, concurrency, gotchas, object model, functions, recent features, typing, tooling
  • Rust — ownership and borrowing, lifetimes, traits, closures and iterators, smart pointers, error handling, concurrency, async, unsafe, macros and Cargo
  • Solidity — language semantics, storage layout, calls and ABI, contract security, gas optimization, upgradeability, errors, compiler and Foundry testing, inline assembly
  • TypeScript — type system semantics, narrowing, type-level programming, compilation and TypeScript 6/7, strictness, declarations, typing patterns

Web

  • Backend — API design, idempotency and concurrency, service calls and webhooks, async work, data access, lifecycle and health, security, testing
  • Frontend — rendering strategies, browser pipeline, CSS, performance, caching, accessibility
  • Next.js — rendering and Cache Components, caching layers and invalidation, routing conventions, Server Actions, proxy and auth, build and deployment, built-in components, Pages Router
  • React — rendering model, hooks, state management, performance, Server Components, Suspense and transitions, forms and Actions, hydration, error boundaries, events and refs, version changes
  • Security — server-side and browser-side attacks, auth and sessions, tokens and OAuth, authorization, cryptography, TLS, supply chain, threat modeling

Infrastructure

  • AWS — IAM and KMS, VPC networking, compute, storage and databases, events, operations
  • DevOps — deployment strategies, containers, Kubernetes workloads/storage/networking/operations, Terraform, CI/CD and GitOps
  • PostgreSQL — indexes, isolation, MVCC and VACUUM, locking and schema changes, query tuning, SQL gotchas, WAL and backups, replication, pooling and partitioning, schema design
  • Redis — execution model, transactions and scripts, data structures, expiration and eviction, persistence, replication and Sentinel, Cluster, pub/sub and streams, locks and counters

Domains

  • AI Engineering — LLM fundamentals, attention and MoE, reasoning models, inference and serving, RAG, fine-tuning, agents, tools and MCP, evaluation, cost, security
  • Ethereum — accounts and transactions, gas, EVM, signatures and standards, PoS consensus, scaling, DeFi and MEV

Quiz

The quiz skill (.agents/skills/quiz/, linked into .claude/skills/ for Claude Code) generates questions from random brief concepts, asks them one at a time, and reports your score at the end. Run it from the repository root with /quiz in Claude Code or $quiz in Codex:

/quiz golang            # 10 random concepts from one topic
/quiz golang ethereum   # concepts mixed from several topics
/quiz all 20            # 20 concepts from every topic

Renovate

The renovate skill (.agents/skills/renovate/) checks briefs against the latest released versions of the languages, tools, and specs they cover. It reads the release notes, fixes stale claims, adds changes worth knowing for an interview, and reports each change with its source. With several topics it runs one subagent per topic. It edits the briefs in place and doesn't commit. Run it from the repository root with /renovate in Claude Code or $renovate in Codex:

/renovate golang        # one brief
/renovate react nextjs  # several briefs
/renovate all           # every brief

Local site preview

Install the site builder, then serve the site:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-docs.txt
zensical serve

To produce the same files as the Pages workflow, run zensical build --clean --strict. Zensical reads the Markdown directly from docs/ and reloads edits while serving. The generated site/ directory is ignored by Git.

GitHub Pages must be configured to use GitHub Actions as its build and deployment source. Once this workflow is on main, each push builds and publishes the site.