Software Engineer interview questions
100 real questions with model answers and explanations for Senior candidates.
See a Software Engineer resume example →Practice with flashcards
Spaced repetition · Hunter Pass
Questions
I would keep redirects on a cache-first read path and generate keys without a central bottleneck.
- A Base62-encoded 64-bit Snowflake ID gives roughly 11-character keys; worker IDs are leased uniquely and clock rollback stops generation before it can duplicate a key.
- Cassandra stores key, destination, owner, and expiry across 256 virtual shards, while Redis caches hot mappings with a 24-hour TTL.
- Redirect nodes perform one Redis lookup and then a shard lookup, leaving about 20 ms for storage inside the 100 ms p99 budget.
- Five years at 20,000 writes per second is about 3.2 trillion rows; at 100 bytes each and replication factor 3, I would budget roughly 1 PB before compaction and backups.
Why interviewers ask this: The interviewer is evaluating capacity estimation, key generation, data partitioning, and a credible latency path.
I would separate socket ownership from durable message processing and order messages by room.
- Stateless WebSocket gateways hold about 50,000 connections each and publish authenticated messages to Kafka keyed by room_id.
- Kafka gives one ordered partition per room key, and consumers persist messages to Cassandra before publishing them through Redis Streams to recipient gateways.
- The 200 ms p99 is measured to an online recipient gateway: 30 ms for ingress, 80 ms for Kafka plus persistence, 60 ms for fan-out, and 30 ms margin.
- Each connection has a 16 KB outbound buffer under a per-gateway 1 GB cap; on overflow a slow client gets a resync cursor and disconnects.
Why interviewers ask this: A strong answer must connect connection scale, ordering scope, durable storage, and slow-client backpressure.
I would keep file bytes in object storage and make the application own only metadata and upload coordination.
- The API creates an S3 multipart upload and returns signed URLs for 16 MB parts, so a 5 GB file resumes from the last confirmed part.
- PostgreSQL stores file versions, hashes, ownership, and the multipart upload ID, with a unique constraint on tenant_id plus path plus version.
- Clients send S3's SHA-256 checksum for each part and a final manifest; S3 validates bytes before the server atomically publishes the new version.
- Ten petabytes stays in S3 with lifecycle tiers, while change notifications use a per-user monotonic cursor so offline clients request only missed metadata.
Why interviewers ask this: The interviewer is checking separation of data and control planes, resumability, metadata correctness, and storage economics.
I would evaluate flags inside each process from a versioned local snapshot.
- A control-plane API stores each definition and an outbox row in one PostgreSQL transaction; CDC then publishes every committed version to Kafka.
- SDKs keep an immutable in-memory map and swap the whole snapshot atomically, making each evaluation an O(1) lookup under 1 ms.
- A streaming gRPC channel pushes versioned deltas, a gap triggers an immediate snapshot fetch, and 2-second heartbeats enforce the 5-second SLO for connected healthy SDKs.
- If the control plane is unavailable, SDKs use the last valid snapshot and a typed hard-coded default rather than blocking application requests.
Why interviewers ask this: The interviewer wants a design that meets hot-path latency without sacrificing propagation, recovery, or safe defaults.
I would make PostgreSQL enforce one active owner per seat and treat the hold as an expiring state.
- A conditional UPDATE claims a free or expired seat and writes hold_id plus expires_at in one transaction, so check and reserve cannot race.
- The seat row is the serialization point, and an index on event_id plus expires_at lets cleanup find expired holds without scanning the event.
- A durable timer table and scheduler publish hold_id at expiry; release runs only WHERE hold_id matches and expires_at has passed, so an old timer cannot clear a newer hold.
- The API accepts an idempotency key for 24 hours, so client retries return the original hold instead of consuming another seat.
Why interviewers ask this: The interviewer is testing whether correctness is encoded atomically rather than delegated to caches or application locks.
I would use fan-out on write for normal accounts and fan-out on read for celebrity posts.
- Normal posts are pushed through Kafka into per-user Cassandra feed rows capped at the newest 1,000 item IDs.
- Accounts above 100,000 followers are marked as celebrities, and their posts stay in a separate author timeline to avoid 50 million writes per post.
- The read service scans the paged followed-celebrity index until a heap proves the top 20 cutoff, avoiding a fixed author cap that could omit posts.
- I budget 40 ms for timeline reads, 60 ms for merge and ranking, 60 ms for hydration, and retain 40 ms inside the 200 ms p95 target.
Why interviewers ask this: The interviewer is evaluating whether the candidate recognizes skew and chooses a hybrid fan-out model with a latency budget.
I would serve a compact prefix index entirely from memory and rebuild it off the request path.
- An offline Spark job produces a weighted finite-state transducer from the 5 million phrases, including locale and popularity scores.
- Each stateless node memory-maps the versioned index and returns the top 10 completions without a remote database call.
- A load balancer spreads traffic across 180 nodes at roughly 5,600 QPS each; after losing 1 of 3 zones, the remaining nodes stay near 8,400 QPS under a tested 10,000-QPS ceiling.
- A Redis overlay holds trending phrases for 5 minutes; the service merges that small set with the immutable index inside the 50 ms p99 budget.
Why interviewers ask this: The interviewer is checking whether the design fits the corpus and latency target rather than defaulting to a general database.
I would use a partitioned log for ingestion and a columnar time-series store for compressed queries.
- Kafka absorbs about 10 GB per second across 1,500 partitions, keyed by tenant and metric hash to keep average partition ingress below 7 MB/s.
- Consumers batch 10,000 samples into ClickHouse MergeTree tables; 30 days is about 26 PB raw before compression, so replicas are partitioned by day and ordered by tenant_id, metric_id, and timestamp.
- Materialized views pre-aggregate by service into 10-second and 5-minute buckets, so a 24-hour service chart scans thousands of rows instead of all underlying series.
- Cardinality quotas reject tenants above 1 million active series, because unbounded labels would break both the 30-day storage budget and 10-second query SLO.
Why interviewers ask this: The interviewer is evaluating throughput arithmetic, physical layout, pre-aggregation, and cardinality controls.
I would partition jobs by due-time bucket and let workers lease batches independently.
- PostgreSQL partitions jobs by hour with an index on next_run_at, while 60 logical shards keep each minute's scan bounded.
- Scheduler nodes use SELECT FOR UPDATE SKIP LOCKED to lease 1,000 due jobs for 2 minutes and publish them to Kafka.
- Workers require an execution_id and store completion with the business effect when both share a database; external effects require an idempotency key and outbox.
- A reconciliation scan finds jobs overdue by more than 2 minutes, and scheduling lag above 60 seconds breaches the stated precision target.
Why interviewers ask this: The interviewer wants practical partitioning, lease semantics, idempotent execution, and a measurable precision guarantee.
I would keep one durable sequence and one in-flight delivery per destination, including during retries.
- Kafka ingress uses destination_id as the key across 1,000 partitions, and a Kafka Streams state store keeps each destination's ordered pending queue.
- A dispatcher sends only the head item; 20,000 async connections sustain 200,000 per second only at measured latency near 100 ms, while 3 seconds is a cutoff, not sizing input.
- Failure moves the head's next_attempt_at through 1-minute, 5-minute, and 30-minute delays for up to 24 hours without advancing that destination.
- After 5 failures its circuit opens, but only that key waits in the partitioned state store, so healthy destinations on the same partition continue.
Why interviewers ask this: The interviewer is checking ordering scope, retry architecture, connection limits, and tenant isolation.
I would split around business ownership and transactional invariants, not around technical layers.
- Catalog owns products and prices, Inventory owns reservations, Orders owns purchase state, and Payments owns provider interactions and its ledger.
- Each service exposes versioned gRPC commands and Kafka events, and the hard no-shared-table rule is enforced with separate PostgreSQL schemas and credentials.
- Checkout orchestrates the workflow but never edits another service's rows; it calls ReserveInventory and AuthorizePayment using explicit request IDs.
- Weekly release independence is tested by consumer-driven contracts in CI, while cross-service changes remain additive for at least two releases.
Why interviewers ask this: The interviewer is evaluating whether boundaries follow invariants and team ownership while preserving independent deployment.
I would make upload and processing separate asynchronous resources.
- The client uploads directly to S3 through multipart signed URLs, so the API never buffers a 500 MB body.
- POST /jobs validates the object metadata, records a job in PostgreSQL, and returns 202 plus a job_id within the 2-second limit.
- Kafka only wakes workers; a worker claims a 20-minute PostgreSQL lease with heartbeats and a fencing version before processing in an isolated pool.
- GET /jobs/{id} and a completion webhook expose status, while cancellation is best-effort because a 15-minute codec step may not stop instantly.
Why interviewers ask this: The interviewer wants an asynchronous contract that respects payload size, acknowledgement time, ownership, and cancellation semantics.
I would require an idempotency key and bind it to both the caller and request payload.
- PostgreSQL stores tenant_id, idempotency_key, request_hash, order_id, status, and response under a unique tenant-key constraint.
- The first request creates the idempotency row and order in one transaction; a duplicate returns the stored status and response.
- Reusing the same key with a different request hash returns 409, preventing an accidental collision from silently changing meaning.
- Records live for 24 hours as promised, and in-progress duplicates poll the original operation rather than running order creation concurrently.
Why interviewers ask this: The interviewer is checking atomicity, key scope, payload conflicts, and behavior while the first request is still running.
I would keep existing versions additive and run breaking changes as an explicit migration program.
- OpenAPI schemas reject removed fields, narrowed enums, and newly required properties in CI through a tool such as oasdiff.
- A breaking change gets a dated version, while the old version remains on the same reliable gateway for the full 12-month window.
- Per-client version metrics identify the remaining 10,000 integrations, and automated notices include the exact endpoint and last-use timestamp.
- The gateway supports both versions from one canonical domain model, avoiding a separate legacy fleet that would threaten the 99.99% availability target.
Why interviewers ask this: The interviewer is evaluating compatibility mechanics, migration observability, and operational support for long deprecation windows.
I would expose opaque keyset cursors over a stable unique ordering.
- Records are ordered by created_at plus id, backed by a composite B-tree index in PostgreSQL.
- The cursor encodes the last pair and filter hash, signed with HMAC so clients cannot alter position or reuse it with different filters.
- Each page executes a range query with LIMIT 101, returning 100 rows and a next cursor without scanning prior pages.
- Inserts after the cursor may appear later in the current traversal, while inserts before it wait for a new traversal; snapshot consistency would require an as-of token.
Why interviewers ask this: The interviewer is testing index-aware contract design and honest consistency semantics under concurrent mutation.
I would make the new field optional and preserve old event meaning for the full mixed-version period.
- Avro schemas live in Schema Registry with FULL_TRANSITIVE compatibility, so old consumers read new data and new consumers can replay retained old data.
- delivery_window is a nullable record with explicit default null and documented UTC semantics; absence means no promised window rather than a guessed value.
- Producers dual-populate old and new representations for 6 months if existing fields cannot express the new concept cleanly.
- Contract fixtures run against all 40 consumers, and removal starts only after consumer-owned version telemetry shows zero old-schema reads.
Why interviewers ask this: The interviewer wants concrete compatibility rules, semantic defaults, and evidence-based retirement across many consumers.
I would use an orchestrated saga with explicit reservations and compensations.
- The orchestrator persists a state machine in PostgreSQL and calls all three providers with stable operation IDs and 9-second deadlines.
- Flight and hotel create 5-minute holds, while payment authorizes but does not capture until both holds succeed.
- Any failed step triggers idempotent compensation, releasing holds and voiding authorization, with retries through a durable queue.
- At 30 seconds the API returns confirmed, rejected, or pending with a booking_id; it never claims failure while compensation or a late provider response is unresolved.
Why interviewers ask this: The interviewer is evaluating distributed workflow state, compensation, deadlines, and truthful client semantics without atomic cross-provider transactions.
I would use an append-only double-entry ledger with balances derived from immutable postings.
- PostgreSQL accepts postings only through a stored procedure with a deferred constraint trigger that verifies debits equal credits before commit.
- Account entries are partitioned monthly and indexed by account_id plus sequence, while closed partitions move to cheaper storage after one year.
- A balance table is updated in the same transaction for fast reads, and a nightly recomputation verifies it against immutable entries.
- Corrections use reversing entries linked to the original, preserving the 7-year audit trail and the hard no-mutation rule.
Why interviewers ask this: The interviewer is checking domain invariants, immutable modeling, read optimization, and long-term retention.
I would keep recent samples in a time-partitioned columnar store and archive compressed partitions to object storage.
- Kafka receives samples keyed by device_id, and ClickHouse batches inserts into daily MergeTree partitions ordered by device_id and timestamp.
- Thirty hot days at 3 million samples per second require compression and replication; Delta or Parquet files in S3 hold months 2 through 24.
- A device-hour query uses the primary ordering to scan one narrow range, while hourly min-max-avg projections serve common dashboards.
- Late samples remain writable for 48 hours; older corrections go to a side table to avoid rewriting multi-terabyte archived partitions.
Why interviewers ask this: The interviewer is evaluating storage tiering, write layout, query locality, and a policy for late data.
I would store adjacency lists by user and precompute the small relationship checks needed online.
- Cassandra rows keyed by follower_id hold sorted followee IDs, distributing 2 billion append-heavy edges without cross-node transactions.
- A reverse table keyed by followee_id supports follower pages; both writes carry the same edge version and are repaired asynchronously.
- A Redis set caches follows for active users, so mutual status is two SISMEMBER operations well under 100 ms.
- Full mutual lists use intersection only for users below 100,000 edges; celebrity accounts use a precomputed mutual subset to cap memory and CPU.
Why interviewers ask this: The interviewer is testing access-pattern-driven modeling, denormalization, and handling of high-degree graph skew.
Locked questions
- 21
Model metadata for 500 million documents across 100,000 tenants, with 10,000 writes per second and tenant-folder listing below 200 ms.
- 22
Model inventory for 10 million SKUs and 100,000 decrements per second during a flash sale, with a hard rule that available stock never becomes negative.
- 23
Model 500 million threaded comments, returning 50 at a time, supporting depth up to 8, and avoiding recursive database queries on reads.
databasequeriesrecursion - 24
Choose a data model for 2 million drivers updating location every 5 seconds, with 3 km nearby-driver queries below 100 ms p95.
queriesmodeling - 25
Design an immutable audit store accepting 100,000 events per second for 7 years, with searches over the latest 5 minutes completing in 2 seconds.
designimmutability - 26
Design caching for a product catalog with 500,000 reads and 2,000 price updates per second, where prices may be stale for at most 5 seconds.
designcaching - 27
A celebrity counter receives 2 million increments per second, may be off by 1%, and must converge within 10 seconds; how do you implement it?
- 28
Shard an order store growing by 5 TB per year and serving 100,000 queries per second, while each merchant needs 30-day range scans.
shardingqueries - 29
Two hundred application pods serve 20,000 requests per second, but PostgreSQL allows only 2,000 connections; size the connection pools and queueing behavior.
postgrespoolingdata-structures - 30
An API request contains 100 item IDs, its dependency allows 500 QPS, and the endpoint must finish within 300 ms p95; how do you batch and limit work?
endpointsbatchdependencies - 31
Serve 1 million original images in 20 sizes at 100,000 requests per second, with cached p95 below 100 ms and no eager generation of all variants.
caching - 32
Design a global rate limiter for 5 million requests per second across 10,000 tenants, allowing at most 2% burst overshoot in each aligned 1-second window.
designrate-limiting - 33
An ingestion service receives 500,000 events per second normally and 2 million for 5-minute bursts, must not drop data, and has only 1 million events per second of downstream capacity.
capacity - 34
Partition a Kafka stream carrying 1 million account events per second, with strict per-account order, 200 partitions, and consumers that may scale to 500 instances.
partitioningkafka - 35
Deduplicate 500,000 events per second for 30 days when 0.5% are duplicates, with bounded storage and no probabilistic false positives.
queries - 36
Publish an event within 2 seconds of each of 50,000 database transactions per second, with no lost event and no distributed transaction with Kafka.
databasetransactionsdistributed - 37
Store user profiles writable in 3 regions, with writes below 150 ms, read-your-own-writes, and up to 5 seconds of staleness for other users.
- 38
Design a like counter accepting 5 million updates per second across 4 regions, with values converging within 2 seconds and temporary error below 1%.
design - 39
A shared queue receives 100,000 jobs per second and can surge 10x, but checkout jobs must start within 1 second while email may wait 10 minutes.
capacitydata-structures - 40
Design a delayed queue for 100 million timers per day, with 1-second precision over a 24-hour horizon and at-least-once firing.
designdata-structures - 41
A consumer group has 100 partitions, may run 500 workers, retries each message at most 5 times, and must prevent one poison message from blocking its partition.
partitioning - 42
Thirty nodes must run one compaction task that takes 2 minutes, leases expire after 10 seconds, and overlapping writes are forbidden even during a 30-second pause.
- 43
Structure subscription billing with 6 plans, 3 payment providers, and 12 billing rules, while adding a provider must not change plan logic.
- 44
Design an import service for 20 file formats where third-party parsers are untrusted, each job has a 200 MB memory limit, and adding a format cannot redeploy the core API.
designapimemory - 45
Implement price calculation with 12 discount rules, deterministic output under 5 ms, and an audit trail explaining every applied rule.
- 46
Model an order workflow with 15 states, 15 commands, and 40 allowed transitions, where invalid transitions must be impossible and duplicate commands are expected for 24 hours.
- 47
Implement 10,000 concurrent transfers per second where many target the same account, balances cannot go negative, and no update may be lost.
concurrency - 48
A search request fans out to 20 shards, has a 120 ms deadline, and needs the best 50 results; how do you handle cancellation and stragglers?
soft-skillsestimationsharding - 49
A WebSocket node holds 100,000 clients with a 4 GB memory cap; some clients read at 1 KB/s while broadcasts arrive at 100 KB/s.
memorywebsockets - 50
Design a worker pool on 64 cores for 1 million short tasks per second, with a queue cap of 100,000 and graceful shutdown within 10 seconds.
designlifecycledata-structures - 51
Five minutes after a checkout deploy, HTTP 5xx rises from 0.2% to 18% and 1,200 orders per minute are at risk; walk me through your first 15 minutes.
deploymenthttp - 52
A regional API is returning 32% timeouts for 20 minutes, but all application pods report healthy; what do you do next?
resilienceapi - 53
Kafka consumer lag jumps from 30 seconds to 45 minutes after a schema release, delaying 8 million order events; how do you respond?
schemakafka - 54
A payment dependency starts returning 40% 503s during a sale, pushing your own checkout error rate to 22%; how do you contain the incident?
incidentsdependencies - 55
At 02:00, database primary CPU reaches 100%, API errors hit 27%, and failover would lose up to 20 seconds of asynchronous writes; make the call.
databaseapiasync - 56
A bad configuration reaches all 600 pods and raises login failures to 65%; configuration propagation takes 8 minutes, while a code rollback takes 3 minutes.
configrollback - 57
A cache cluster loses half its nodes, database QPS rises from 15,000 to 90,000, and the database limit is 100,000; what do you do in the next 10 minutes?
databasecaching - 58
A certificate expires and blocks 100% of internal gRPC calls for 11 minutes; service owners are all restarting pods independently. How do you lead the response?
grpc - 59
After a Go service deploy, API p99 rises from 180 ms to 1.4 seconds while p50 stays at 70 ms and CPU is unchanged; how do you investigate?
deploymentapi - 60
A Java service's p99 grows from 250 ms to 2.2 seconds every 6 minutes after a release, with CPU dropping during each spike.
- 61
A PostgreSQL query that took 40 ms now takes 3.8 seconds after the table grew from 20 million to 400 million rows; what is your process?
queriespostgresconcurrency - 62
A Python worker's throughput falls from 12,000 to 3,000 jobs per minute after adding JSON validation, but CPU remains at one core on a 16-core host.
validationthroughputpython - 63
A Rust service's p99 doubles from 90 ms to 180 ms after replacing a bounded channel with an unbounded one; average queue depth looks low.
data-structures - 64
A TypeScript API's p99 rises from 120 ms to 900 ms only when responses exceed 2 MB; network bandwidth is below 40%.
typescript - 65
An Elasticsearch search p99 rises from 300 ms to 4 seconds after adding one optional filter; only 8% of requests use it.
search - 66
gRPC latency rises from 35 ms to 600 ms after enabling retries, although the downstream's own processing time remains 30 ms.
latencygrpcconcurrency - 67
A PostgreSQL-backed service scales linearly to 6,000 RPS, then throughput stops while CPU reaches 85% and lock waits reach 30% of request time; how do you unblock growth to 12,000 RPS?
postgresthroughput - 68
A Go API hits 20,000 RPS at 95% CPU; profiles show 38% in JSON encoding and 22% in memory allocation, and the target is 35,000 RPS.
memoryapi - 69
At 50,000 RPS, Redis reaches 90% single-thread CPU even though the cluster has 12 nodes; one key receives 35% of all operations.
redisconcurrency - 70
A Kafka pipeline handles 300,000 events per second but stalls at 450,000; brokers are at 55% CPU, while one of 120 partitions carries 28% of traffic.
partitioningkafkaci-cd - 71
Kubernetes scales an API from 40 to 200 pods, but throughput stays at 30,000 RPS and database connections jump from 800 to 4,000.
databaseapikubernetes - 72
A Cassandra cluster sustains 80,000 writes per second but p99 exceeds 2 seconds at 110,000; compaction backlog grows by 500 GB per hour.
backlog - 73
An AWS service meets 15,000 RPS but must handle a launch at 60,000 RPS in six weeks; DynamoDB shows one tenant consuming 45% of write capacity.
dynamodbcapacity - 74
A retry bug created 180,000 duplicate orders over 6 hours; 7,000 were already shipped. How do you repair the data and prevent recurrence?
resilience - 75
A database says 2.4 million invoices exist, but object storage contains only 2.37 million PDFs after a worker outage; how do you recover the missing 30,000?
database - 76
After a CDC outage, Elasticsearch is missing 3% of 50 million product updates and contains stale versions for another 1%; search must remain online.
search - 77
A cross-region replication bug lost 12 minutes of profile updates for 84,000 users, while newer writes already exist for 19,000 of them.
replication - 78
A ledger balance table differs from immutable entries for 0.06% of 30 million accounts after a deployment; customers can still initiate transfers.
deploymentimmutability - 79
A migration converted timestamps in 200 million rows with the wrong timezone offset, affecting 14 days of data and active customer reports.
migrations - 80
Under 8,000 concurrent requests, two buyers occasionally reserve the last inventory unit; the check and decrement are separate SQL statements.
sqlconcurrency - 81
Two workers can process the same queue message after a 30-second visibility timeout, and the job takes up to 90 seconds; duplicate emails are reaching 4%.
concurrencydata-structurescss - 82
A Go map used by 64 goroutines crashes production once every few days with concurrent map writes; reads outnumber writes 10,000 to 1.
concurrencyzero-to-one - 83
A balance transfer locks source then destination, while a refund locks destination then source; deadlocks reach 300 per minute at peak.
locking - 84
A feature flag refresh races with requests: about 0.2% of users see a mix of old and new rules within one evaluation.
feature-flags - 85
A 2-second dependency slowdown causes retries across 40 services; traffic reaches 6 times normal and 70% of calls fail in a retry storm.
resiliencedependencies - 86
An authentication service fails, and every API synchronously calls it; within 4 minutes all 1,500 application threads are blocked.
authapiconcurrency - 87
A downstream timeout is set to 5 seconds, your endpoint SLO is 800 ms, and three sequential dependencies each retry twice.
resiliencesloendpoints - 88
A popular cache key expires every hour, causing a jump from 2,000 to 80,000 database QPS for 20 seconds and repeated partial outages.
databasecaching - 89
A queue consumer retries poison messages immediately; 0.1% bad events consume 60% of worker capacity and delay valid events by 25 minutes.
capacitydata-structures - 90
Product wants a revenue feature worth an estimated $400,000 per quarter, but the owning service has caused three SEV-1 incidents and 14 hours of downtime in 90 days; what do you propose?
estimationincidents - 91
A team spends 35% of each sprint fixing flaky integration tests, while a contractual feature is due in six weeks with a $1 million penalty.
integrationflakyagile - 92
A monolith takes 55 minutes to deploy and blocks 6 teams, but production incidents are low and the next two quarters are feature-heavy; do you split it?
incidentsmonolithdeployment - 93
A database version reaches end of support in four months, migration needs six engineer-weeks, and product has committed all capacity to a launch in three months.
databasemigrationscapacity - 94
An internal library is pinned 18 major versions behind, has two critical vulnerabilities, and is used by 70 services; a direct upgrade breaks 23 of them.
vulnerabilities - 95
A mid-level engineer opens a 2,000-line payment change two days before release; review finds no idempotency handling and only happy-path tests.
idempotency - 96
A junior engineer causes a 17-minute outage with a migration that locked a 300-million-row table; how do you handle the next day?
soft-skillsmigrations - 97
Two senior reviewers disagree for a week over Kafka versus PostgreSQL outbox polling for 4,000 events per second, blocking 5 engineers.
conflictpostgreskafka - 98
Code reviews take a median of 29 hours across an 8-person team, causing three-day lead time; quality is acceptable and no reviewer owns the queue.
code-reviewdata-structures - 99
An engineer you mentor misses three estimates by more than 100% because unknowns surface late; their code quality is strong.
mentoringestimation - 100
A staff engineer repeatedly approves changes without reading tests, and two escaped regressions caused 48 minutes of downtime; you are not their manager.
testing