RecallDeck
Interview track

Rust Developer interview prep

A spaced-repetition deck of 136+ Rust Developer interview questions — organised by topic and difficulty, and resurfaced right before you'd forget. Preview a few cards below, then sign in to study the whole track on an Anki-style SM-2 schedule.

136 cards10 topics

Free · sign in with GitHub · your progress stays yours.

What's covered

Every topic in this track, grouped the way you'd study it.

System Design

29 cards
System Design

Behavioral

35 cards
Behavioral

Ownership, Borrowing & Lifetimes

12 cards
Ownership & Lifetimes

Traits, Generics & Dispatch

11 cards
Traits & Dispatch

Smart Pointers & Interior Mutability

7 cards
Smart Pointers

Errors, Collections & Ecosystem

10 cards
Errors & Ecosystem

Concurrency: Send/Sync & Atomics

8 cards
Send/Sync & Atomics

Async/await & Tokio

10 cards
Async & Tokio

Unsafe, Memory & FFI

7 cards
Unsafe & Memory

Live Coding & Applied Tasks

7 cards
Live Coding

Sample questions

A few cards from the deck — reveal each answer, then sign in to study the full set on a schedule.

Step 1. Clarify the requirements

Never start designing right away. First clarify exactly what you're building. Split the requirements into two groups.

Functional requirements — what the system does (features):

  • What are the main scenarios? (e.g.: "shorten a link" and "follow a short link").
  • Who are the users? How many? Geographic distribution?
  • What's NOT in scope? (analytics, authentication, billing — often can be dropped, as long as you say so explicitly).

Non-functional requirements (NFRs) — what properties it has:

  • Scale: how many users / requests / data.
  • Availability: is "always respond" more important, or "respond correctly"? (CAP).
  • Latency: hard requirements (p99 < 100 ms) or not.
  • Consistency: is eventual consistency acceptable, or do you need strong consistency.
  • Durability: can data be lost (logs vs payments).
  • Read/Write ratio: is reading or writing dominant.

💡 Ask questions out loud and record the answers — that alone is half the evaluation. Example: "Do we need click analytics? If so, that changes the data model. I'll assume only a basic counter is in scope."

Step 2. Estimate the scale (back-of-the-envelope)

Rough estimates that will shape the architecture. Calculate out loud and round aggressively.

What to estimate:

  • QPS (queries per second): average and peak (peak ≈ 2-3× the average).
  • Data volume: size of one record × number of records × retention horizon.
  • Read/write ratio (read:write) — determines whether you need read replicas and a cache.
  • Bandwidth: QPS × response size.
  • Storage: growth per year.

Handy numbers for mental math:

Quantity Value
Seconds in a day ~86,400 ≈ 10⁵
Month ~2.5M seconds
1M requests/day 12 QPS on average
1B requests/day 12,000 QPS

Example calculation (URL shortener): 100M new links/month → 100M / 2.5M sec ≈ 40 writes/sec. Read:write = 100:1 → 4000 reads/sec. Record size ~500 bytes → 100M × 500B = 50 GB/month → 600 GB/year → ~6 TB over 10 years.

💡 State the conclusion from the numbers right away: "40 writes/sec is easy for a single DB. 4000 reads/sec — we'll add a cache and read replicas."

Step 3. Define the API

Describe the service contract — this pins down the functionality and helps the interviewer understand the model. REST/gRPC, the main endpoints:

POST /api/v1/urls           {long_url, custom_alias?, ttl?} -> {short_url}
GET  /{short_key}           -> 301/302 redirect

Talk through: methods, parameters, idempotency (is POST idempotent?), pagination for lists (cursor-based, not offset on large data sets), authorization (api_key / token).

Step 4. Data model and database choice

  • Describe the key entities and relationships (tables / collections).
  • Choose the database type and justify it:
    • SQL (Postgres, MySQL): complex relationships, transactions, strong consistency, analytical queries, JOINs. Take it by default unless there's a reason not to.
    • NoSQL key-value / wide-column (DynamoDB, Cassandra): huge write scale, a simple key-based access pattern, horizontal sharding out of the box, eventual consistency.
    • Document (MongoDB): flexible schema, nested documents.
    • In-memory (Redis): cache, counters, rate limiting, queues, leaderboards.
  • Think about the shard key right away (what you partition by).

Step 5. High-level architecture

Describe in words (or with a diagram) the components and the request flow:

[Client] -> [DNS] -> [Load Balancer] -> [API / App Servers (stateless)]
                                              |-> [Cache (Redis)]
                                              |-> [Database (+ read replicas)]
                                              |-> [Message Queue] -> [Workers]
                                         [CDN] -> [Blob Storage (S3)]

Trace a typical request along this path from the client all the way to the DB and back.

Load Balancer and Reverse Proxy

  • LB distributes traffic across instances (round-robin, least-connections, consistent hashing). It enables horizontal scaling and fault tolerance (removing dead nodes via health checks).
  • L4 (TCP) is faster; L7 (HTTP) can route by URL/headers and do TLS termination.
  • Reverse proxy (Nginx, Envoy): TLS termination, compression, caching, backend protection, a single entry point.
  • 💡 Keep applications stateless — then the LB can send a request to any instance. Sessions go in Redis, not in process memory.

Ready to make it stick?

Start your first session in under a minute. Your future self, mid-interview, will thank you.

Other interview tracks

RecallDeckSpaced-repetition interview prep