TRT
Sign in
mediumAdvancedconcept

Describe the reactor pattern for event-driven servers.

Explain demultiplexing ready events, dispatching to registered handlers, and single-threaded concurrency.

TRT practice prompt — not a verified question from a named employer.

The Runtime Theory Team2 min read
Learn it firstEvent-Driven Server Architectures: Reactor Patterns and Production Event LoopsPro — members onlyArchitect non-blocking event-driven network services using the Reactor pattern, manage connection state machines and outbound write buffers, and integrate timerfd and signalfd into unified epoll loops.

A strong answer

A strong candidate frames Describe the reactor pattern for event-driven servers. around the exact memory layout, compiler semantics, and hardware execution model covered in Event-Driven Server Architectures: Reactor Patterns and Production Event Loops. Explain demultiplexing ready events, dispatching to registered handlers, and single-threaded concurrency.

Throughout this module, we examined the foundational pieces of low-level networking:

  • Non-blocking socket descriptors (O_NONBLOCK).
  • Asynchronous kernel demultiplexing (epoll).
  • Socket configuration flags (SO_REUSEADDR, TCP_NODELAY).
  • Zero-copy transfer primitives (sendfile, writev).

However, real-world servers do not read from a socket and immediately write a response. Production network software must coordinate complex, concurrent workflows:

  1. Partial Reads and Writes: A client sends a 4 KB request in three fragmented TCP packets. The server cannot parse the command until the entire frame arrives, but it cannot block waiting for the remaining bytes.
  2. Outbound Backpressure: When transmitting a 10 MB payload, the socket send buffer fills after 64 KB. The server must buffer the remaining bytes in application memory, register for write readiness, and flush data incrementally without starving other clients.
  3. Idle Timeouts and Heartbeats: Clients that disconnect ungracefully or halt midway through a transaction must be reaped before they exhaust file descriptors.
  4. Signal Coordination: The server must reload configuration on SIGHUP and shut down gracefully on SIGTERM without interrupting active transactions.

In a production interview, always connect the specification rule to its concrete runtime consequence: state what lives on the stack versus the heap or static storage segment, how the compiler or operating system validates alignments, lifetimes, and error codes, and what happens under adversarial or boundary inputs (such as zero-length buffers, integer overflow, concurrent mutation, or partial I/O). Backing your explanation with a small trace of register/memory state transitions immediately separates senior systems engineers from candidates who only memorized syntax.

What the interviewer is listening for

  • Mastery of core invariant: Construct a single-threaded Reactor pattern comprising an Event Demultiplexer, Dispatcher, and Event Handlers.
  • Mastery of core invariant: Manage connection lifecycles via non-blocking state machines with dedicated input and output ring buffers.
  • Mastery of core invariant: Handle partial writes and output backpressure by dynamically arming and disarming EPOLLOUT.
  • Hardware and ABI awareness: Explaining how sizes, alignments, calling conventions, or kernel boundaries behave on real 64-bit targets rather than relying on implementation-defined assumptions.
  • Defensive engineering: Naming the exact compiler flags (-Wall -Wextra -Werror), static analyzers, or runtime sanitizers (-fsanitize=address,undefined,thread) that verify correctness in CI.

Common mistakes

  • Explaining only surface syntax without tracing the underlying memory addresses, ownership lifetime, or kernel/user-space state transitions.
  • Assuming undefined behavior (such as signed overflow, uninitialized reads, strict-aliasing violations, or dangling pointers) will "just work" because it passed an unoptimized -O0 debug build.
  • Ignoring return codes, partial reads/writes, alignment padding, or cleanup paths when an allocation or syscall fails midway through a function.

This answer walks

Practice follow-ups

  1. 01How does the compiler, OS kernel, or hardware memory model enforce the invariants of Event-Driven Server Architectures: Reactor Patterns and Production Event Loops under optimization (`-O2`/`-O3`)?
  2. 02What production bug or undefined behavior occurs when Event-Driven Server Architectures: Reactor Patterns and Production Event Loops is misused across module or thread boundaries, and which sanitizer (`ASan`, `UBSan`, `TSan`) catches it?

Not started

Sign in to save your learning progress.

Sign in to save