Software Engineer Interview Prep
Prep for Discord's engineering loop - real-time voice/video infrastructure, Elixir/Erlang depth, low-latency systems, and the unusual scaling challenges of large guilds.
About this loop
Discord's interview reflects what the company actually operates: a real-time chat, voice, and video platform serving hundreds of millions of users across guilds (servers) that range from a handful of friends to 1M+ members. The level ladder runs SWE (mid-level, 2-5 YOE) through Senior, Staff, and Principal Engineer. The technical loop is anchored by the unusual stack and operational shape - Discord runs heavily on Elixir/Erlang for the realtime gateway and voice layer (the BEAM VM's actor model and supervision trees fit chat/voice naturally), Rust for the read-heavy paths and the storage layer (ScyllaDB, custom message store), and Python for backend services and ML. Coding rounds skew Medium-to-Hard with strong emphasis on code that handles concurrency, partial failures, and the long-tail latency regimes that matter for voice/video. System design rounds frequently center on real-time problems Discord engineers actually solve: a chat gateway that fans out to millions of WebSocket connections, voice/video routing through SFU clusters with sub-100ms tolerances, presence at the scale of 'show me who is online in a 1M-member guild,' message delivery with at-least-once semantics. Behavioral signal screens for craft, comfort with operational ownership (Discord engineers carry pagers and own their services end-to-end), and pragmatism about shipping in a product that can't take downtime gracefully. The cultural anchor is a small-team, high-autonomy engineering shop - ~600 engineers running infrastructure that compares to mid-size FAANG product teams in scale.
The interview loop
- 1Recruiter screen30 minutes. Background, level calibration (Senior vs Staff is the most contested call), team alignment - Discord recruits across realtime (gateway, voice, video, presence), platform (storage, message infrastructure, search), product surfaces (mobile, desktop, web), trust & safety, and infrastructure (data, observability, networking).
- 2Technical phone screen60 minutes. One coding problem at Medium difficulty. Most teams accept any modern language - Python, TypeScript, Go, Rust, Elixir all common. Some interviewers include a domain probe (concurrency primitives, message ordering) if you've been matched to a realtime team.
- 3Onsite: Coding round 160 minutes. Algorithmic problem with attention to concurrency and partial-failure handling - Discord weights solutions that reason about race conditions and edge cases without prompting. Trees, graphs, hash maps, and queue-based problems all common.
- 4Onsite: Coding round 260 minutes. Often more applied - debug a snippet with a subtle concurrency bug, extend a working actor-model system, implement a small piece of a chat protocol. For realtime-team candidates, may involve Elixir/OTP patterns or Rust async reasoning.
- 5Onsite: System design60-75 minutes. Realtime-flavored. Common prompts: design a chat gateway that fans out to millions of WebSocket connections, design voice/video routing for a 100-person stage channel, design presence for 1M-member guilds, design message delivery with at-least-once semantics and 100ms p99 latency. Depth on connection management, fanout strategies, and the BEAM/actor-model fit expected.
- 6Onsite: Domain depth (realtime / infra teams)60-75 minutes. Team-specific. Realtime: WebSocket lifecycle, reconnect handling, message ordering across reconnects, presence consistency tradeoffs. Voice/video: WebRTC, SFU vs MCU architectures, jitter buffers, network adaptive bitrate. Storage: ScyllaDB partition strategy, the custom message store, hot-partition mitigation for celebrity-style channels.
- 7Onsite: Hiring manager / behavioral45-60 minutes. Operational-ownership focused. Stories about carrying pagers, owning services end-to-end, recovering from production incidents at user-facing scale, navigating tradeoffs between shipping fast and operating safely. Discord's small-team / high-autonomy culture means engineers are expected to make real architectural calls without committee.
What Discord actually evaluates
- →Real-time systems intuition - latency budgets, jitter, fanout strategies, connection lifecycle
- →Operational ownership - comfort carrying pagers and owning services end-to-end
- →Concurrency reasoning - race conditions, message ordering, partial-failure handling without being prompted
- →Pragmatism over perfection - Discord ships fast and iterates, the bar is on operating safely while doing so
- →Polyglot fluency - Elixir/Erlang for realtime, Rust for performance paths, Python for backend, TypeScript for frontend
- →User-facing craft - chat and voice are deeply emotional products, small UX details matter to retention
Topics tested
System Design
Realtime-flavored. Practice WebSocket gateway fanout, voice/video routing, presence at guild scale, message delivery semantics, and the specific tradeoffs of running on the BEAM VM. Knowing how Discord's gateway and voice infrastructure actually work (Elixir gateway clusters, Rust services for hot paths, ScyllaDB for messages) gives concrete vocabulary.
Algorithms
Medium-to-Hard difficulty. Discord weights solutions that handle concurrency and partial failures without being prompted. Trees, graphs, queues, hash maps, and interval problems all common.
Networking
Deeply tested for realtime and voice teams. WebSocket lifecycle, TCP vs UDP tradeoffs for voice, WebRTC mechanics, NAT traversal, packet loss and jitter handling. This is where realtime candidates differentiate from generic backend candidates.
Operating Systems
Concurrency primitives, scheduling, lock contention, the BEAM VM's preemptive scheduler. Important background for realtime and voice work.
Data Structures
Queues, ring buffers, hash maps, tries. The right structure under realtime constraints (millions of concurrent connections, message ordering across reconnects) is the insight Discord cares about.
Behavioral
Operational-ownership focused. Stories about pager incidents, end-to-end service ownership, navigating fast-shipping vs safe-operating tradeoffs. Generic 'I'm a team player' answers don't pass.
Databases
Comes up in system design at depth. Discord runs heavily on ScyllaDB for messages and Postgres for metadata; partition strategy, hot-partition mitigation for celebrity channels, and the message-store sharding model all surface.
System design topics tested in this loop
Curated walkthroughs for the bounded designs that show up in Discord's system design rounds. Capacity estimation, architecture, deep-dives, and trade-offs.
Chat
HardLong-lived connections, ordering guarantees, presence, and the difference between 1:1 chat and a 50K-member group.
Notifications
HardFan-out at write vs read, at-least-once vs exactly-once, dead-letter queues, and the multi-channel delivery problem - one message, ten failure modes.
Rate Limiter
MediumFive algorithms, three sharding strategies, one fail-open vs fail-closed decision. The bounded design that surfaces in every backend interview loop.
Distributed Cache
HardConsistent hashing, eviction, replication, and what really happens when a single hot key takes down the cluster.
Behavioral themes tested in this loop
Sample STAR answers, common prompts, pitfalls, and follow-up strategies for the behavioral themes that decide Discord's loop.
Ownership
Amazon LPTested at every level, scored harder at senior. Did you take responsibility for outcomes - or just for tasks?
Bias for Action
Amazon LPSpeed matters. But the principle is reversible-vs-irreversible reasoning, not 'I work fast.' Get this distinction wrong and the answer reads as reckless.
Dive Deep
Amazon LPLeaders operate at all levels. The interviewer is testing whether you actually understand your own systems - or whether you summarize what your team built.
Missed Deadline / Incident
GeneralThe honesty test. Can you own a missed commitment or production incident specifically and without flinching - or do you blame the team, the requirements, or the on-call rotation?
Curated practice questions
394 MCQs and 142 coding challenges, grouped by topic. Free preview shows question titles - premium unlocks full content.
System Design · 68 MCQs
Browse all in System Design →Algorithms · 77 MCQs
Browse all in Algorithms →Networking · 48 MCQs
Browse all in Networking →Operating Systems · 45 MCQs
Browse all in Operating Systems →Data Structures · 44 MCQs
Browse all in Data Structures →Behavioral · 63 MCQs
Browse all in Behavioral →Databases · 49 MCQs
Browse all in Databases →System Design - Coding challenges · 2 challenges
Browse all coding challenges →Algorithms - Coding challenges · 80 challenges
Browse all coding challenges →Operating Systems - Coding challenges · 5 challenges
Browse all coding challenges →Data Structures - Coding challenges · 30 challenges
Browse all coding challenges →Databases - Coding challenges · 25 challenges
Browse all coding challenges →Practice in mock interview format
Behavioral and system design rounds reward practice with a live AI interviewer that probes follow-ups, not silent reading.
Start an AI mock interview →Frequently asked questions
Do I need to know Elixir/Erlang to interview at Discord?
Depends on the team. Realtime gateway, voice infrastructure, and presence teams are heavily Elixir/Erlang - knowing OTP patterns (GenServer, supervision trees, the actor model), the BEAM VM's preemptive scheduler, and pattern matching is a real differentiator. Storage, infrastructure, and Rust-heavy teams expect general awareness but don't require Elixir fluency. Mobile, desktop, and web teams use TypeScript and Swift/Kotlin and don't touch Elixir at all. Ask your recruiter what the team's stack is - they'll tell you honestly which language(s) matter for the specific loop.
What does the realtime system design round actually look like?
Concrete prompts: 'design a chat gateway that maintains millions of concurrent WebSocket connections and fans out messages to all members of a guild within 100ms.' Or: 'a celebrity user joins a 1M-member guild - how do you handle the fanout without melting the gateway.' Or: 'design voice routing for a 100-person stage channel where the speaker order can change every few seconds.' Discord engineers solve these problems daily, and interviewers want to see you reason about connection lifecycle, fanout strategies, hot-partition mitigation, and the BEAM's fit for this shape of workload.
How does Discord scale chat for 1M-member guilds?
The high-level shape: messages persist in ScyllaDB sharded by channel ID, with custom partitioning to avoid hot partitions on celebrity channels. The Elixir gateway maintains WebSocket connections to clients and uses an actor-per-connection model on the BEAM. Fanout is layered - within a single gateway node, messages route via local ETS tables; across nodes, via a custom internal pubsub. Read-heavy paths (message history, search) use Rust services for performance. Knowing this shape isn't required for interviews but gives you concrete vocabulary, and Discord engineers have published detailed blog posts on the architecture.
How real is the operational-ownership culture?
Real. Engineers carry pagers and own their services end-to-end - there's no separate ops team that catches your incidents. The behavioral round explicitly probes whether you've operated services in production, recovered from incidents, and navigated the tradeoffs between shipping fast and operating safely. Candidates from environments where SRE teams own incidents sometimes underestimate this; engineers who've owned services at high-pressure shops (FAANG product infrastructure, Stripe, Cloudflare) tend to fit naturally.
How does Discord compare to Slack, Twitch, or WhatsApp as an interview target?
Slack is the closest analog (chat at scale, similar workspace/guild model) but with enterprise-flavored sensibility and a heavier Java backend. Twitch shares the realtime-video DNA (live streaming at scale, low-latency video distribution) but with a unidirectional broadcast model rather than peer-to-peer. WhatsApp operates at larger raw scale (billions of users) with a similarly Erlang-heavy backend (the original Erlang-on-FreeBSD architecture) but with end-to-end encryption and a much smaller engineering team relative to scale. Engineers who like Discord's interview shape often like all three; the specific mix of voice/video + chat + community at Discord is the differentiator.
What is comp like at Discord?
Competitive at senior+ but generally below the FAANG market on equity. SWE targets ~$200-280K total comp, Senior ~$300-420K, Staff ~$420-600K, Principal $600K-900K+. Discord is private with private-company stock that has annual tender events for partial liquidity. Cash is competitive; equity upside depends on company valuation trajectory. Recent vintages (2024-2026) have improved as Discord's revenue scaling has matured. Levels.fyi has reasonable current data. Negotiation is real at Senior+.