[{"data":1,"prerenderedAt":200},["ShallowReactive",2],{"roadmap-dotnet":3},{"framework":4,"title":7,"description":8,"model":9},{"slug":5,"name":6},"dotnet",".NET Core",".NET Core Learning Roadmap","A guided path through .NET Core for technical interviews — work through each topic from fundamentals to advanced.",{"stages":10,"topicCount":197,"subtopicCount":198,"questionCount":199},[11,70,115,157],{"name":12,"summary":13,"topics":14,"gaps":68,"questionCount":69},"Getting Started","",[15,43],{"slug":16,"name":17,"description":18,"subtopics":19,"questionCount":42},"fundamentals","Fundamentals","Core .NET runtime concepts that come up in every interview — how the CLR works, memory allocation, generics design, LINQ execution, and null safety.",[20,26,30,34,38],{"path":21,"subtopic":22,"difficulty":23,"questionCount":24,"blogPath":25},"\u002Fdotnet\u002Ffundamentals\u002Fclr-runtime","CLR Runtime","medium",15,"\u002Fblog\u002Fdotnet-clr-runtime-jit-managed-code",{"path":27,"subtopic":28,"difficulty":23,"questionCount":24,"blogPath":29},"\u002Fdotnet\u002Ffundamentals\u002Fvalue-vs-reference-types","Value vs Reference Types","\u002Fblog\u002Fdotnet-value-vs-reference-types-boxing",{"path":31,"subtopic":32,"difficulty":23,"questionCount":24,"blogPath":33},"\u002Fdotnet\u002Ffundamentals\u002Fgenerics","Generics","\u002Fblog\u002Fdotnet-generics-type-constraints-covariance",{"path":35,"subtopic":36,"difficulty":23,"questionCount":24,"blogPath":37},"\u002Fdotnet\u002Ffundamentals\u002Flinq","LINQ","\u002Fblog\u002Fdotnet-linq-deferred-execution-iqueryable",{"path":39,"subtopic":40,"difficulty":23,"questionCount":24,"blogPath":41},"\u002Fdotnet\u002Ffundamentals\u002Fnullable-types","Nullable Types","\u002Fblog\u002Fdotnet-nullable-types-null-safety-csharp8",75,{"slug":44,"name":45,"description":46,"subtopics":47,"questionCount":42},"csharp-core","C# Core","The C# language features that separate strong candidates from average ones — async internals, delegates, modern pattern matching, collection selection, and exception design.",[48,52,56,60,64],{"path":49,"subtopic":50,"difficulty":23,"questionCount":24,"blogPath":51},"\u002Fdotnet\u002Fcsharp-core\u002Fasync-await","Async \u002F Await","\u002Fblog\u002Fdotnet-async-await-state-machine-explained",{"path":53,"subtopic":54,"difficulty":23,"questionCount":24,"blogPath":55},"\u002Fdotnet\u002Fcsharp-core\u002Fdelegates-events","Delegates & Events","\u002Fblog\u002Fdotnet-delegates-events-observer-pattern",{"path":57,"subtopic":58,"difficulty":23,"questionCount":24,"blogPath":59},"\u002Fdotnet\u002Fcsharp-core\u002Fpattern-matching","Pattern Matching","\u002Fblog\u002Fdotnet-pattern-matching-switch-expressions",{"path":61,"subtopic":62,"difficulty":23,"questionCount":24,"blogPath":63},"\u002Fdotnet\u002Fcsharp-core\u002Fcollections","Collections","\u002Fblog\u002Fdotnet-collections-list-dictionary-span",{"path":65,"subtopic":66,"difficulty":23,"questionCount":24,"blogPath":67},"\u002Fdotnet\u002Fcsharp-core\u002Fexceptions","Exception Handling","\u002Fblog\u002Fdotnet-exception-handling-best-practices",[],150,{"name":71,"summary":13,"topics":72,"gaps":113,"questionCount":114},"Building Core Skills",[73,95],{"slug":74,"name":75,"description":76,"subtopics":77,"questionCount":94},"aspnet-core","ASP.NET Core","How ASP.NET Core is structured — the middleware pipeline, routing system, controller lifecycle, and configuration model that underpin every web project.",[78,82,86,90],{"path":79,"subtopic":80,"difficulty":23,"questionCount":24,"blogPath":81},"\u002Fdotnet\u002Faspnet-core\u002Fmiddleware","Middleware","\u002Fblog\u002Fdotnet-aspnet-core-middleware-pipeline",{"path":83,"subtopic":84,"difficulty":23,"questionCount":24,"blogPath":85},"\u002Fdotnet\u002Faspnet-core\u002Frouting","Routing","\u002Fblog\u002Fdotnet-aspnet-core-routing",{"path":87,"subtopic":88,"difficulty":23,"questionCount":24,"blogPath":89},"\u002Fdotnet\u002Faspnet-core\u002Fcontrollers-actions","Controllers & Actions","\u002Fblog\u002Fdotnet-aspnet-core-controllers-actions",{"path":91,"subtopic":92,"difficulty":23,"questionCount":24,"blogPath":93},"\u002Fdotnet\u002Faspnet-core\u002Fconfiguration","Configuration","\u002Fblog\u002Fdotnet-aspnet-core-configuration",60,{"slug":96,"name":97,"description":98,"subtopics":99,"questionCount":112},"dependency-injection","Dependency Injection","The built-in DI container, service lifetimes, captive dependency bugs, and the Options pattern — topics that come up in almost every ASP.NET Core technical screen.",[100,104,108],{"path":101,"subtopic":102,"difficulty":23,"questionCount":24,"blogPath":103},"\u002Fdotnet\u002Fdependency-injection\u002Fdi-basics","DI Basics","\u002Fblog\u002Fdotnet-di-basics",{"path":105,"subtopic":106,"difficulty":23,"questionCount":24,"blogPath":107},"\u002Fdotnet\u002Fdependency-injection\u002Fservice-lifetimes","Service Lifetimes","\u002Fblog\u002Fdotnet-service-lifetimes",{"path":109,"subtopic":110,"difficulty":23,"questionCount":24,"blogPath":111},"\u002Fdotnet\u002Fdependency-injection\u002Foptions-pattern","Options Pattern","\u002Fblog\u002Fdotnet-options-pattern",45,[],105,{"name":116,"summary":13,"topics":117,"gaps":156,"questionCount":114},"Going Deeper",[118,139],{"slug":119,"name":120,"description":121,"subtopics":122,"questionCount":94},"entity-framework","Entity Framework Core","EF Core from the ground up — change tracking, migrations, LINQ-to-SQL translation, relationship configuration, and the performance traps that trip up most developers.",[123,127,131,135],{"path":124,"subtopic":125,"difficulty":23,"questionCount":24,"blogPath":126},"\u002Fdotnet\u002Fentity-framework\u002Fdbcontext-dbset","DbContext & DbSet","\u002Fblog\u002Fdotnet-ef-dbcontext-dbset",{"path":128,"subtopic":129,"difficulty":23,"questionCount":24,"blogPath":130},"\u002Fdotnet\u002Fentity-framework\u002Fmigrations","Migrations","\u002Fblog\u002Fdotnet-ef-migrations",{"path":132,"subtopic":133,"difficulty":23,"questionCount":24,"blogPath":134},"\u002Fdotnet\u002Fentity-framework\u002Fquerying","Querying","\u002Fblog\u002Fdotnet-ef-querying",{"path":136,"subtopic":137,"difficulty":23,"questionCount":24,"blogPath":138},"\u002Fdotnet\u002Fentity-framework\u002Frelationships","Relationships","\u002Fblog\u002Fdotnet-ef-relationships",{"slug":140,"name":141,"description":142,"subtopics":143,"questionCount":112},"security","Security","Authentication, authorization, and JWT security in ASP.NET Core — the security topics that almost every backend role tests and that break most often in real systems.",[144,148,152],{"path":145,"subtopic":146,"difficulty":23,"questionCount":24,"blogPath":147},"\u002Fdotnet\u002Fsecurity\u002Fauthentication","Authentication","\u002Fblog\u002Fdotnet-authentication",{"path":149,"subtopic":150,"difficulty":23,"questionCount":24,"blogPath":151},"\u002Fdotnet\u002Fsecurity\u002Fauthorization","Authorization","\u002Fblog\u002Fdotnet-authorization",{"path":153,"subtopic":154,"difficulty":23,"questionCount":24,"blogPath":155},"\u002Fdotnet\u002Fsecurity\u002Fjwt-tokens","JWT Tokens","\u002Fblog\u002Fdotnet-jwt-tokens",[],{"name":158,"summary":13,"topics":159,"gaps":195,"questionCount":196},"Advanced Topics",[160,178],{"slug":161,"name":162,"description":163,"subtopics":164,"questionCount":112},"testing","Testing","Unit testing, mocking, and integration testing in .NET — covering xUnit, Moq, WebApplicationFactory, and the design habits that make code testable in the first place.",[165,169,173],{"path":166,"subtopic":167,"difficulty":23,"questionCount":24,"blogPath":168},"\u002Fdotnet\u002Ftesting\u002Funit-testing","Unit Testing","\u002Fblog\u002Fdotnet-unit-testing",{"path":170,"subtopic":171,"difficulty":23,"questionCount":24,"blogPath":172},"\u002Fdotnet\u002Ftesting\u002Fmocking","Mocking","\u002Fblog\u002Fdotnet-mocking",{"path":174,"subtopic":175,"difficulty":176,"questionCount":24,"blogPath":177},"\u002Fdotnet\u002Ftesting\u002Fintegration-testing","Integration Testing","hard","\u002Fblog\u002Fdotnet-integration-testing",{"slug":179,"name":180,"description":181,"subtopics":182,"questionCount":112},"performance-deployment","Performance & Deployment","Production .NET — caching, structured logging, observability, and deploying ASP.NET Core to Docker and Kubernetes. The operational topics senior roles increasingly test.",[183,187,191],{"path":184,"subtopic":185,"difficulty":23,"questionCount":24,"blogPath":186},"\u002Fdotnet\u002Fperformance-deployment\u002Fcaching","Caching","\u002Fblog\u002Fdotnet-caching",{"path":188,"subtopic":189,"difficulty":23,"questionCount":24,"blogPath":190},"\u002Fdotnet\u002Fperformance-deployment\u002Flogging-monitoring","Logging & Monitoring","\u002Fblog\u002Fdotnet-logging-monitoring",{"path":192,"subtopic":193,"difficulty":176,"questionCount":24,"blogPath":194},"\u002Fdotnet\u002Fperformance-deployment\u002Fdeployment","Deployment","\u002Fblog\u002Fdotnet-deployment",[],90,8,30,450,1782244083099]