📁 Sangam Dhakal - Portfolio v2.0 - Netscape Navigator 4.0
_
□
×

πŸ“š .NET Interview Questions

377 questions for senior .NET engineer interviews, each with a 30-second answer, the full answer, a deep dive, the follow-ups interviewers ask next, and real-world production problems.

Operating System

The kernel, user and kernel mode, system calls, processes and threads, scheduling, context switching, virtual memory, paging, page faults, file descriptors and handles.

  1. What is the operating system kernel, and what is the difference between user mode and kernel mode?

    The kernel's responsibilities, CPU privilege levels (rings on x64, exception levels on Arm64), why applications run in user mode, how and when the CPU switches to kernel mode, and what that means for .NET applications, drivers, containers and security.

    Junior Theory Operating System Β· πŸ”— 2 follow-ups
  2. What is a system call? How does a .NET call like File.ReadAllBytesAsync or Socket.SendAsync reach the kernel, and why can system calls be expensive?

    The system call mechanism, the path from .NET APIs through SafeHandles and the PAL to Windows (IOCP) and Linux (epoll) interfaces, the cost of crossing into the kernel, and how buffering, batching and async I/O reduce that cost. Includes tracing system calls with strace and Process Monitor.

    Mid-Level Theory Operating System Β· πŸ”— 3 follow-ups Β· πŸ›  1 real-world
  3. What is the difference between a process and a thread? How do they map to .NET concepts such as Process, Thread, the thread pool and Task?

    What a process owns (address space, handles, security context) versus what a thread owns (stack, registers, thread-local storage), how threads share memory, how .NET threads map to OS threads, how the thread pool and Task build on them, and when to use multiple processes instead of threads.

    Junior Theory Operating System Β· πŸ”— 3 follow-ups
  4. How does the operating system scheduler decide which thread runs next, and what do preemption, time slices, priorities and container CPU limits mean for a .NET service?

    Preemptive scheduling, run queues, time slices, priorities and starvation, how Windows and Linux schedulers differ at a high level, CPU affinity and NUMA, and how cgroup CPU quotas throttle containers and interact with the .NET thread pool and GC.

    Mid-Level Theory Operating System Β· πŸ”— 2 follow-ups Β· πŸ›  1 real-world
  5. What is a context switch, what does it cost, and why can having too many threads make a .NET service slower?

    What the OS saves and restores on a context switch, thread versus process switches, direct and indirect costs (cache and TLB pollution), voluntary versus involuntary switches, how blocking code and oversized thread counts multiply them, and how to measure and reduce them.

    Mid-Level Theory Operating System Β· πŸ”— 3 follow-ups Β· πŸ›  1 real-world
  6. Explain virtual memory and paging. How does the operating system map a process's virtual addresses to physical RAM?

    Why virtual memory exists, pages and page frames, multi-level page tables, the TLB, demand paging, copy-on-write, memory-mapped files, swap and the page file, overcommit, address space layout randomisation, and what all this means for .NET processes.

    Mid-Level Theory Operating System Β· πŸ”— 2 follow-ups
  7. What is a page fault? Explain soft (minor) vs hard (major) page faults, and how you would investigate a .NET service whose latency spikes line up with a high page fault rate.

    Page faults, minor vs major faults, what triggers them, and how to diagnose paging-related latency in a .NET service.

    Senior Debugging Operating System Β· πŸ”— 3 follow-ups Β· πŸ›  1 real-world
  8. What are file descriptors on Linux and handles on Windows? How does .NET manage them, and why does SafeHandle exist?

    File descriptors and handles as the OS's per-process references to kernel resources, their limits, and how .NET wraps them with SafeHandle and IDisposable.

    Mid-Level Theory Operating System Β· πŸ”— 2 follow-ups Β· πŸ›  1 real-world
  9. A .NET service on Linux starts failing with "Too many open files" and SocketException errors under load. Walk me through how you would diagnose it, including HttpClient socket exhaustion and TIME_WAIT.

    Diagnosing descriptor exhaustion and socket exhaustion in .NET on Linux: ulimit, lsof, ss, TIME_WAIT, ephemeral ports, and the HttpClient/IHttpClientFactory fixes.

    Senior Debugging Operating System Β· πŸ”— 2 follow-ups Β· πŸ›  1 real-world

🌐 Sangam's Webring

βͺ Previous 🏠 Main Next ⏩
πŸ’¬ Chat with me