How .NET runs your code: the CLR, assemblies, JIT and AOT, runtime type layout and dispatch, the Roslyn compilation pipeline, and garbage collection.
-
What is the Common Language Runtime (CLR), and which services does it give your .NET application?
The CLR as the execution engine of .NET: loading, JIT, type safety, GC, exceptions, threading and interop.
Mid-Level
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What is the Common Type System (CTS), and how does it let different .NET languages share types?
The CTS rules for value and reference types, members, inheritance and how language keywords map to CTS types.
Mid-Level
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What is the Common Language Specification (CLS), and when should you mark a library as CLSCompliant?
CLS rules for cross-language public APIs, the CLSCompliant attribute and the compiler warnings it enables.
Mid-Level
Theory
CLR Fundamentals
Β· π 2 follow-ups Β· π 1 real-world
-
What is a .NET assembly, and what does assembly identity (name, version, culture, public key token) mean in modern .NET?
Assemblies as the unit of deployment and versioning, their contents, identity and how modern .NET treats versions and strong names.
Mid-Level
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What are metadata and the manifest in a .NET assembly, and how can you read them without loading the assembly?
Metadata tables and tokens, the assembly manifest, type forwarding, and reading them with System.Reflection.Metadata.
Senior
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What is IL (Intermediate Language), and how do you read the IL the C# compiler produces?
CIL as a stack-based instruction set, common opcodes, callvirt, boxing in IL, and tools to inspect it.
Mid-Level
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
How does the JIT compiler work in .NET, and how can you see the machine code it generates?
Just-in-time compilation per method via stubs, what the JIT produces, and inspecting output with DOTNET_JitDisasm.
Senior
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
How does tiered compilation work in .NET, including Tier 0, Tier 1 and on-stack replacement (OSR)?
Tiered JIT: quick unoptimised code first, call counting, background Tier 1 recompilation, OSR for loops and the settings that control it.
Senior
Theory
CLR Fundamentals
Β· π 2 follow-ups Β· π 1 real-world
-
What is Dynamic PGO in .NET, and how does guarded devirtualisation make interface and virtual calls faster?
Profile-guided optimisation at run time: instrumentation, guarded devirtualisation, hot/cold layout and how traffic shape affects it.
Senior
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What is ReadyToRun (R2R), and when should you publish with it?
ReadyToRun precompilation with crossgen2: startup benefits, size cost, version resilience, composite images and how it interacts with tiering.
Mid-Level
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What is NativeAOT in .NET, what does it give you and what are its restrictions?
Native ahead-of-time compilation: startup and memory gains, required trimming, reflection and dynamic code limits, ASP.NET Core support and analysers.
Senior
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What does single-file publish do in .NET, and what breaks when you switch an app to it?
PublishSingleFile bundling, framework-dependent versus self-contained, native library extraction, Assembly.Location and IL3000.
Mid-Level
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
How does IL trimming work in .NET, and how do you make an app or library trim-safe?
ILLink trimming, TrimMode, trim warnings, DynamicallyAccessedMembers and RequiresUnreferencedCode, feature switches and IsTrimmable.
Senior
Theory
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
How does assembly loading work in .NET, and how do you debug a FileNotFoundException or FileLoadException for an assembly?
Lazy loading, the TPA list from deps.json, resolution order and events, common load exceptions and the tools to trace loading.
Senior
Debugging
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
What is AssemblyLoadContext, and how do you build an unloadable plugin system with it?
Custom and collectible AssemblyLoadContext, AssemblyDependencyResolver, shared contracts and type identity, and diagnosing unload leaks.
Senior
Coding
CLR Fundamentals
Β· π 3 follow-ups Β· π 1 real-world
-
How does C# code become IL? Explain lowering with examples such as foreach, using, lock, string concatenation and switch.
Roslyn lowering of high-level C# constructs into simpler C# and IL, and what Debug versus Release changes.
Mid-Level
Theory
Runtime Execution
Β· π 3 follow-ups Β· π 1 real-world
-
How does IL become machine code at run time, including how generic methods are compiled for reference and value types?
The path from IL to native code: method descriptors, precode and prestub, code heap, back-patching, and shared versus specialised generic code.
Senior
Theory
Runtime Execution
Β· π 3 follow-ups Β· π 1 real-world
-
Which optimisations does the .NET JIT perform, and how do you write code that lets it optimise well?
Inlining, constant folding, bounds-check elimination, devirtualisation, loop optimisations, struct promotion and escape analysis, and how to verify them.
Senior
Theory
Runtime Execution
Β· π 3 follow-ups Β· π 1 real-world
-
What is a method table (and the type object) in the CLR, and what is the in-memory layout of a .NET object?
Object header, MethodTable pointer and fields; MethodTable versus EEClass versus RuntimeType; minimum object size; inspecting with SOS.
Senior
Theory
Runtime Execution
Β· π 3 follow-ups Β· π 1 real-world
-
What are the object header and the sync block in .NET, and how do lock and GetHashCode use them?
Header bits for thin locks and hash codes, inflation to the sync block table, Monitor internals, and System.Threading.Lock.
Senior
Theory
Runtime Execution
Β· π 2 follow-ups Β· π 1 real-world