← NVIDIA Interview Insights

NVIDIA·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Apr 2026

Summary

System design round at NVIDIA for a software engineer role. Three-part question all centered on a Cassandra-backed artifact registry running on Kubernetes. Pretty deep dive, felt more like a design review than an interview.

Questions Asked (3)

Q1

You have a Java web API on Kubernetes backed by Cassandra. Artifacts are identified by user-provided names and must be created exactly once. How do you handle concurrent Create requests so only one succeeds? Walk through your primary key schema, idempotency approach, and concurrency control mechanism, including retry behavior and failure modes.

System DesignData ModelingTechnical Trade-offs
Author's notes

I went straight to Cassandra LWT with IF NOT EXISTS, which felt right, but I fumbled when they pushed on failure modes.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: exactly-once creation with user-provided names, concurrent requests, and failure handling. Then propose a Cassandra schema using the artifact name as the partition key to enforce uniqueness, and implement idempotency via lightweight transactions (LWT) with IF NOT EXISTS. Finally, discuss retry logic with exponential backoff, handling LWT failures, and ensuring idempotent responses.

Pro tip: Emphasize that LWT in Cassandra uses Paxos and can be slow; consider using a separate uniqueness service or external lock if performance is critical, but for exactly-once semantics, LWT is the simplest correct approach. Also, mention that retries should be idempotent and that clients should use idempotency keys to avoid duplicate side effects.

1. Clarify Requirements and Constraints

Confirm that artifact names are unique per user or globally, and that creation must be exactly-once. Discuss consistency requirements and acceptable latency.

2. Design Primary Key Schema

Use artifact name as the partition key (and possibly user ID as a clustering column) to ensure uniqueness. This allows efficient lookups and enforces uniqueness at the storage layer.

3. Implement Idempotency and Concurrency Control

Use Cassandra's lightweight transactions (LWT) with IF NOT EXISTS to atomically create the artifact. Return the existing artifact if it already exists to make the operation idempotent.

4. Handle Retries and Failure Modes

Implement retry logic with exponential backoff for LWT timeouts or conflicts. On conflict, fetch the existing artifact and return it. Handle partial failures by ensuring the operation is idempotent.

5. Discuss Trade-offs and Alternatives

Mention that LWT can be slow and may not scale well; consider alternatives like a dedicated uniqueness service or using an external lock (e.g., Redis) if performance is critical. Also, discuss the impact of eventual consistency.

Key Points to Mention

  • Cassandra primary key design: partition key as artifact name to enforce uniqueness.
  • Lightweight transactions (LWT) with IF NOT EXISTS for atomic create.
  • Idempotency: return existing artifact on conflict, use idempotency keys.
  • Retry behavior: exponential backoff, handle WriteTimeoutException and UnavailableException.
  • Failure modes: LWT contention, timeouts, partial failures, and how to recover.
  • Trade-offs: LWT performance vs. external locking, consistency vs. availability.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

If you later add a Delete capability, how do you model deletes and re-adds to avoid races and duplicates? Think through soft deletes, tombstones, grace periods or TTLs, name reuse policy, and compaction behavior.

Data ModelingSystem DesignTechnical Trade-offs
Author's notes

This one tripped me up more than I expected.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the system's requirements and constraints (e.g., consistency, scale, latency). Then propose a soft-delete model with tombstones and a name-reuse policy, explaining how to handle races and duplicates using versioning or timestamps. Finally, discuss compaction and TTL strategies to balance storage and correctness.

Pro tip: Emphasize that deletes are not just data removal but a state transition; use monotonic versioning (e.g., Lamport timestamps) to resolve conflicts deterministically. Also, mention that grace periods and TTLs must be tuned based on business needs and system load.

1. Clarify requirements and constraints

Ask about consistency needs, scale, latency, and whether name reuse is allowed. This shapes the design choices for deletes and re-adds.

2. Choose a delete model

Decide between hard deletes, soft deletes, or tombstones. Soft deletes with tombstones are common to avoid races and enable recovery.

3. Define name reuse and conflict resolution

Specify if names can be reused immediately or after a grace period. Use versioning or timestamps to detect and resolve races between delete and re-add.

4. Implement TTLs and compaction

Set TTLs for tombstones to eventually purge them. Design compaction to remove tombstones safely without resurrecting deleted data.

5. Discuss trade-offs and edge cases

Cover trade-offs like storage overhead vs. correctness, and edge cases like concurrent delete and re-add, or clock skew.

Key Points to Mention

  • Soft deletes vs. hard deletes: soft deletes mark records as deleted, preserving history and enabling recovery.
  • Tombstones: markers that record deletion, used to prevent re-creation of deleted items and to propagate deletes in distributed systems.
  • Grace periods and TTLs: time windows before permanent removal, allowing for undo or propagation, and TTLs to auto-expire tombstones.
  • Name reuse policy: whether names can be reused immediately, after a delay, or never; impacts uniqueness and race conditions.
  • Race conditions: concurrent delete and re-add can cause duplicates or lost updates; use versioning (e.g., vector clocks, Lamport timestamps) or conditional writes.
  • Compaction behavior: how to safely remove tombstones without resurrecting deleted data, considering replication lag and read repair.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

How do you design and optimize the Read API for latency and throughput while managing consistency? Cover consistency levels, caching, pagination, read repair, replication factors, hot partition mitigation, and fallback strategies during partial outages.

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

Broad question, almost too broad.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the read workload characteristics and consistency requirements, then propose a layered architecture that balances latency and throughput through caching, replication, and tunable consistency. Walk through trade-offs for each component (e.g., cache invalidation, pagination strategies, read repair) and describe how to handle failures gracefully with fallbacks. Emphasize monitoring and iterative optimization based on metrics.

Pro tip: Quantify trade-offs with concrete numbers (e.g., '99th percentile latency increases by X ms when consistency level is raised from eventual to strong') and mention how you'd validate with load testing and chaos engineering. This shows you think in terms of measurable impact, not just theory.

1. Clarify Requirements and Constraints

Ask about expected read QPS, data size, latency SLOs, consistency needs (strong vs eventual), and failure tolerance. This ensures your design targets the right priorities.

2. Design the Read Path with Caching and Replication

Propose a multi-layer cache (client, CDN, application, database) and discuss replication factor and consistency levels (e.g., QUORUM vs ONE). Explain how caching reduces latency and offloads the database.

3. Address Consistency and Pagination

Detail how to handle read repair, hinted handoff, and anti-entropy for eventual consistency. For pagination, discuss cursor-based vs offset-based and how to maintain consistency across pages.

4. Mitigate Hot Partitions and Scale Throughput

Describe techniques like sharding with composite keys, adding random suffixes, or using a cache to absorb hot keys. Mention load balancing and auto-scaling to handle throughput spikes.

5. Plan for Partial Outages and Fallbacks

Outline fallback strategies: degrade to stale cache reads, reduce consistency level, or serve partial results. Discuss circuit breakers, timeouts, and graceful degradation to maintain availability.

Key Points to Mention

  • Consistency levels (e.g., ONE, QUORUM, ALL) and their impact on latency and throughput
  • Caching strategies (TTL, write-through, write-behind) and cache invalidation techniques
  • Pagination approaches (cursor-based vs offset) and handling consistency across pages
  • Read repair mechanisms (blocking vs async) and anti-entropy for eventual consistency
  • Hot partition mitigation (sharding, key salting, caching) and replication factor tuning
  • Fallback strategies during partial outages (stale reads, degraded consistency, circuit breakers)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.