InterviewLegend

What Reddit Tests in System Design

Alex Chen12 min readUpdated 118 real interview reports
In this lesson
  • See where system design sits in Reddit's loop and why it targets Reddit's own products
  • Learn the recurring shapes: home feed, comment trees, voting and moderation
  • Learn Reddit's house style: eventual consistency, ranking math and anti-manipulation

Reddit runs system design as its own round, a single 60-minute session that mid-level and senior candidates both sit, with senior loops sometimes carrying a second design round on top. The format is conversational and remote, since Reddit hires remote-first, so you talk an architecture through on a shared drawing surface while the interviewer probes and adjusts. What makes it distinctive is where the interviewer points it. Reddit tends to aim the prompt at its own machinery instead of a generic social app. Think of the feed you scroll, the comment threads you expand, the votes that sort them, and the moderation that keeps a subreddit livable. That aim is deliberate.

The Reddit angle
The prompts are Reddit's own systems, not a stand-in for them. One senior candidate reported a recruiter previewing the design set before the loop, and "design the Reddit home page, the feed for users" was named outright. Reddit is a link aggregator built from subreddits, the topic communities you subscribe to, and the home feed is assembled by fanning out over those subscriptions rather than over a symmetric follow graph. Because the interviewer often works on the real feed or the real comment store, vague hand-waving stands out fast. Naming how Reddit actually does it, precomputed listings, eventual consistency, the published ranking formulas, is what makes a strong answer. Reddit shares no question list, so treat the shapes here as a steer drawn from candidate reports, not a fixed syllabus.

The round, and who sits it

A few facts shape how you prepare. The round shows up for mid-level engineers and above. It carries real weight for senior offers, where a thin design can set the level lower than the rest of the loop earned. Reddit's machine-learning engineers sit a different version, with an ML system design round on feed ranking or recommendation rather than the general one covered here. And because the whole loop runs in a few weeks and the written feedback is reconciled by the hiring manager and recruiter, the design round rarely stands alone as the single gate. It is one weighted signal among several.

  • Who sits it: Mid-level and up. A distinct roughly 60-minute round for mid-level engineers and senior candidates. Senior loops sometimes carry two design rounds. Reddit publishes no question list, so the shapes below are read from candidate reports, not measured rates.
  • Format: Remote, one open prompt. Conversational and interviewer-driven, worked on a shared drawing surface. Reddit is remote-first, so even the onsite is video, and the interviewer interrupts to raise the scale or add a constraint partway through.
  • MLE track: ML system design. Machine-learning engineers sit a separate loop whose design round is an ML system design, feed ranking or recommendation, in place of the general product design covered in this section.
  • Weight: Reads your level. The coding rounds do the most to decide whether an offer happens. A weak design more often shows up as a lower level than as a rejection, so this round is where seniority gets calibrated.

The shapes the round lands on

The prompts cluster into a handful of recognizable shapes. They repeat often enough to guide where prep pays off. One recurs so much that a recruiter has named it in advance. Here it is in full.

The prompt

Design Reddit's home and popular feeds for around 100 million daily users. Personalize from each user's subreddit subscriptions, rank by Hot with Best, Top and Rising toggles, and stay fresh within seconds of a new post or vote.

That flagship sits at the top of a short list. The chart groups reported prompts by the system they ask you to build and orders them by how often candidates on this track meet each one.

Home / popular feed24%
Nested comment trees20%
Voting at scale16%
Content moderation12%
Real-time canvas10%
Notifications8%
Reported Reddit design shapes, grouped by the system asked, ordered by how often each comes up. Reddit publishes no question list, so read the ordering rather than the exact numbers. Each weight reflects how often a shape shows up and how clearly it points at a Reddit system, and only shapes with a genuine Reddit signal are listed.

Each shape forces a different hard tradeoff; the feed assembles a personalized, ranked view from many subreddits, and it cannot recompute that on every scroll. Comment trees are worse: they store and page threads that reach tens of thousands of replies, nested to arbitrary depth. Voting has to count fast, keep ranking current, and resist vote farms. Moderation filters content quickly and mostly silently, under per-subreddit rules. Then there is the real-time canvas, Reddit's r/place: a shared pixel grid that a hundred thousand people edit at once. The five worked designs ahead take the shapes with the strongest Reddit signal, ending on notifications. r/place has no lesson of its own, though its ideas surface later.

The spine every answer sits on

Underneath all of these shapes is one set of moving parts, and knowing it lets you answer any of them in Reddit's own terms. Reddit's core objects, the posts, comments, accounts, and subreddits, live in a key-value-style model on PostgreSQL, with memcached in front to absorb reads and read replicas behind it to spread them. Cassandra holds data that has to stay available even when a node dies, such as the precomputed listings a feed reads from. The important move is on the write path. Expensive actions, casting a vote or submitting a post, are not applied on the request itself. They are dropped onto an async job queue and picked up by workers a moment later. In the diagram, a Reader is blue, services like the API Service and the Async Workers are violet, the Async Job Queue is amber, and stores like memcached and the Precomputed Listings are green.

Loading diagram...
The Reddit angle
At Reddit, a count that wobbles is working as designed. Refresh a busy post and the score shifts, for three reasons at once. Votes are processed off a queue. Several cache layers hold slightly different values until they converge. And Reddit deliberately fuzzes the displayed counts to blunt vote farms. The exact up-and-down split is hidden on purpose, so a manipulation ring cannot measure whether its votes are landing and its feedback loop breaks. A candidate who insists on strongly consistent vote counts on the hot path is fighting the architecture. The stronger answer names where staleness is acceptable, bounds how stale it can get, and treats correctness as eventual by choice rather than by accident.

Sizing the read-heavy load

There are no published traffic figures, so size this from the outside and keep it to orders of magnitude. Put daily users on the order of 100 million against roughly 20 feed and comment page loads each, and you land near 2 billion reads a day. That is a big number. Divide by 86,400 seconds and that is about 23,000 reads a second on average, with peaks several times higher, so plan for something like 100,000 a second. The writes sit far below that. If active users cast on the order of 100 million votes a day, that is only about 1,200 votes a second, and new posts and comments are lower still. So reads outrun writes by more than ten to one. That gap is the whole reason the architecture precomputes and caches feeds and listings while pushing votes and submissions onto a queue. Say that ratio out loud early. Every later choice follows from it.

What the round rewards

A Reddit answer that lands tends to make the same handful of moves. Design the read path first. Precompute the feed or the ranked top slice of a hot thread, cache it, and keep the write path separate from it. Name the real bottleneck the generic version skips. That might be assembling a personalized feed from many subreddits, retrieving a subtree of a 50,000-comment thread without overwhelming the client, or counting votes without a single hot row becoming a contention point. Put ranking on the table with actual formulas rather than the bare word "ranking". Treat integrity and abuse as first-class, since voting, moderation, and account creation all invite the question of how you stop brigading and spam. And build the answer to grow, because the interviewer tends to raise the scale partway through, the way Reddit's own coding rounds keep adding requirements.

The Reddit angle
Reciting which formula powers which surface is a top-tier Reddit signal. Posts are sorted by a hot score. It is roughly the base-ten log of the vote total plus a time term that gives a post about a 12.5-hour half-life. So early votes matter far more than late ones, and a post that does not catch on fast falls behind fresher ones. Comments use a different sort by default: the lower bound of a Wilson confidence interval. It treats votes as a statistical sample and ignores submission time, so a comment with 10 of 11 upvotes can outrank one with 40 of 70. Knowing that hot ranks posts and Wilson ranks comments, and why each fits its surface, is a checkable signal. The strong answer also notes these scores are precomputed and cached, not calculated on every request.

A Reddit answer

  • Designs the read path first and precomputes feeds, listings, and hot comment slices, keeping votes and submissions on an async queue
  • Names the binding bottleneck: subreddit fan-out, deep-subtree retrieval, or the hot vote row, over a wave at "we scale horizontally"
  • Recites the hot-score formula for posts and the Wilson confidence sort for comments, and says why each fits its surface
  • Treats eventual consistency as a deliberate choice, bounds the staleness, and adds vote fuzzing and rate limits against manipulation
  • Grows the design when the interviewer raises the scale partway through, from one subreddit to the default front page

A generic answer

  • Increments a single counter row on the vote hot path and defends a strong consistency the architecture does not want
  • Rebuilds a symmetric follow-graph feed when Reddit fans out over subreddit subscriptions instead
  • Stores comments as one rigid tree and reads a huge thread with recursive round-trips that time out
  • Leaves ranking as the word "ranking" with no formula, and skips how counts are made resistant to vote farms
  • Stops at a box diagram and never reaches moderation, abuse, or the caching that carries the read load

The worked designs

Five designs follow, ordered by how strong the Reddit signal is. Start with the home feed: it is the recruiter-previewed flagship and the clearest place to show that you can assemble and rank a personalized view at scale.

Design the Home Feed

The flagship, previewed by a recruiter by name. Personalized from each user's subreddit subscriptions and ranked by Hot with Best, Top, and Rising toggles. Candidate generation from subscribed subreddits, the push-versus-pull fan-out decision for huge default subreddits, the hot-score formula and where it is computed and cached, and precomputed listings on Cassandra.

Design Nested Comment Threads

Storage, pagination, and ranking for threads that reach tens of thousands of comments nested to arbitrary depth. The storage-model tradeoff across adjacency list, materialized path, and closure table, a flat list plus a parent id with client-side tree building, lazy "continue this thread" loading, and per-node Best ranking of top-level comments.

Design Voting at Scale

Upvotes and downvotes where counts update fast, ranking recomputes, and vote farms cannot game the result. The async write path, idempotent set-not-increment vote application, eventually consistent counters, vote fuzzing as anti-manipulation, and brigading defenses through rate limits and account thresholds.

Design Content Moderation

Per-subreddit AutoModerator rules plus site-wide spam and abuse detection that acts fast, mostly silently, and resists evasion. A multi-stage pipeline, tenant-scoped mod-authored rules, mod queues, shadowbanning as silent removal, and ban-evasion detection by device fingerprint and content similarity.

Design a Notification System

Reply, mention, and mod notifications fanned out over subreddit subscriptions and thread participation rather than a follow graph. Per-user preferences, deduplication, and multi-channel delivery across in-app, email, and push, riding the same async queue that carries votes and submissions.

Each design leans on the System Design course: the scaling playbook for read and write paths, and the toolbox for choosing a log, cache, queue or index. Two more prompts are worth keeping in mind even though they have no lesson here. One is r/place, Reddit's collaborative pixel canvas. A shared grid is packed into a compact bitmap, served from a CDN with a tiny cache window, and updated live over websockets. Draw those three ideas, compact state plus a cached bulk read plus a streamed delta, and you have answered it. The other is a plain classic with no Reddit flavor at all, a web crawler that notifies on completion or a top-100 leaderboard, so keep the general playbook sharp too.

Key Takeaways

  • ✓System design is a distinct roughly 60-minute round for mid-level and up, weighted for senior offers and pointed at Reddit's own systems: the feed, comment trees, voting, and moderation, not a generic social app.
  • ✓The shapes cluster into a short, recurring list led by the personalized home feed, then nested comment trees, voting integrity, moderation, and notifications, with the r/place canvas appearing as a showcase.
  • ✓One spine underlies them all: key-value objects on Postgres with memcached and replicas, Cassandra for availability, and expensive writes deferred to an async queue, which is why counts are eventually consistent by design.
  • ✓The round rewards designing the read path first, reciting the hot-score and Wilson formulas, treating staleness as a deliberate bounded choice, and building anti-manipulation in from the start. Reads outrun writes by more than ten to one, and every choice follows from that.
Had your Reddit interview?Tell us what they asked. Reviewed before it goes in, never with your name.
Reddit interview guide

Know what Reddit asks before you walk in.

16 coding · 5 system design · 23 behavioral questions

Get Premium$49 a year · Cancel anytime
Or start freeNo card.

Get their questions first.

InterviewLegend is independent and not affiliated with or endorsed by any company it covers.