← NVIDIA Interview Insights

NVIDIA·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
May 2026

Summary

Interviewed for a SWE role at Nvidia and got hit with an OS fundamentals question pretty early on. Nothing crazy but it made me realize I'd been fuzzy on some of these distinctions for years.

Questions Asked (1)

Q1

What is the difference between multiprogramming, time-sharing, and multiprocessing?

Technical Trade-offsSystem Design
Author's notes

I knew the rough idea but fumbled the exact distinction between multiprogramming and time-sharing.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Define each term clearly, emphasizing the core resource being managed (CPU, time, or processors). Then compare them along dimensions like concurrency, resource utilization, and hardware requirements, and relate them to modern systems.

Pro tip: Tie the concepts to NVIDIA's domain by mentioning how GPUs use massive parallelism (multiprocessing) and how time-sharing and multiprogramming are used in CPU-GPU orchestration to maximize throughput.

1. Define each term

Provide a concise definition of multiprogramming, time-sharing, and multiprocessing, focusing on their primary goals and mechanisms.

2. Compare key characteristics

Contrast them in terms of concurrency, resource utilization, response time, and hardware requirements (single vs. multiple CPUs).

3. Give examples

Provide real-world examples: batch processing for multiprogramming, interactive systems for time-sharing, and multicore CPUs or GPUs for multiprocessing.

4. Discuss trade-offs

Explain the trade-offs: multiprogramming maximizes CPU utilization but lacks interactivity; time-sharing improves responsiveness but adds overhead; multiprocessing increases throughput but requires multiple processors and careful synchronization.

5. Relate to modern systems

Connect these concepts to contemporary computing, such as how modern OSes combine time-sharing and multiprocessing, and how GPUs leverage massive parallelism.

Key Points to Mention

  • Multiprogramming keeps multiple jobs in memory to maximize CPU utilization, switching when a job waits for I/O.
  • Time-sharing extends multiprogramming by rapidly switching between users/jobs to provide interactive response.
  • Multiprocessing uses two or more CPUs/cores to execute multiple processes simultaneously, enabling true parallelism.
  • Concurrency vs. parallelism: multiprogramming and time-sharing achieve concurrency on a single CPU, while multiprocessing achieves parallelism.
  • Context switching overhead is a key trade-off in multiprogramming and time-sharing.
  • Modern systems often combine these approaches, e.g., a time-shared OS on a multiprocessor, and GPUs use SIMT for massive parallelism.

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