112 topics

cloudbeginner

HTTP Status Codes: The Complete Reference

Every HTTP status code grouped by range — 100s (informational), 200s (success), 300s (redirection), 400s (client errors), 500s (server errors) — with what each one means and when to use it.

HTTPRESTAPIStatus CodesWebError Handling
Status codes grouped by range — tap a group to expand.
dotnetbeginner

Big O Notation: Time & Space Complexity

Understand Big O as a language for describing how an algorithm's performance scales with input size — and how to identify the complexity of common operations at a glance.

C#Big OAlgorithmsTime ComplexitySpace ComplexityPerformance
dotnetbeginner

Core Data Structures: Array, LinkedList, Stack & Queue

Know which data structure to reach for and why — with the time complexity of key operations and the .NET type to use for each.

C#Data StructuresArrayLinkedListStackQueueCollections
dotnetbeginner

Sorting Algorithms: Bubble, QuickSort & MergeSort

Understand the three foundational sorting approaches — their time complexity trade-offs, when each is appropriate, and why Array.Sort() in .NET beats a hand-rolled sort almost every time.

C#SortingQuickSortMergeSortBubble SortAlgorithms
dotnetbeginner

Searching: Linear Search vs Binary Search

Know when O(n) linear search is fine and when O(log n) binary search is essential — and how binary search's "halving" strategy works on sorted data.

C#Binary SearchLinear SearchAlgorithmsBig O
dotnetbeginner

How to Identify the Right Algorithm or Pattern

A practical decision framework for choosing the correct algorithm or design pattern — by analysing the problem type, data scale, and constraints before writing a single line of code.

C#AlgorithmsDesign PatternsProblem SolvingStrategy
dotnetbeginner

Concurrency vs Parallelism: The Mental Model

Understand the fundamental distinction between concurrency (structure — managing multiple tasks) and parallelism (execution — running multiple tasks simultaneously on multiple CPU cores).

C#ConcurrencyParallelismasyncTPLThreading
dotnetbeginner

async void: Why It's Dangerous & When It's Allowed

Understand why async void methods swallow exceptions, make calling code unaware of completion, and should only ever appear in event handlers.

C#asyncasync voidTaskExceptions
dotnetbeginner

Collections: Dictionary vs Hashtable & When to Use Each

Understand why Dictionary<TKey,TValue> replaced Hashtable, how hash-based O(1) lookup works, and which collection type to reach for in modern .NET.

C#CollectionsDictionaryHashtablePerformance
dotnetbeginner

Dependency Injection Lifetimes

Understand Singleton, Scoped, and Transient lifetimes in ASP.NET Core DI — and how to avoid the captive dependency bug.

DIASP.NET CoreSingletonScoped
dotnetbeginner

struct vs class: Value Types, Reference Types & Memory

Understand the fundamental memory model difference between structs (value types on the stack) and classes (reference types on the heap) — and when each is appropriate.

C#structclassValue TypesReference TypesMemoryBoxing
dotnetbeginner

OOP Pillars: Encapsulation, Inheritance, Polymorphism & Abstraction

Master the four pillars of Object-Oriented Programming in C# — with concrete examples and the real-world trade-offs of inheritance vs composition.

C#OOPEncapsulationInheritancePolymorphismAbstraction
dotnetbeginner

POST Body vs Query String: API Design Best Practice

Understand why passing mutable, sensitive, or large data via query string is an anti-pattern — and when to use [FromBody], [FromQuery], and [FromRoute] correctly.

C#ASP.NET CoreAPI DesignRESTSecurityBest Practice
dotnetbeginner

Records vs Classes: Value Identity vs Reference Identity

Classes are built for encapsulated behaviour and mutable state (identity-based). Records are built for transparent, immutable data (value-based). Understanding this distinction prevents subtle equality bugs and leads to cleaner domain models.

C#RecordsClassesValue EqualityImmutabilityDTOsOOP
angularbeginner

New Control Flow Syntax (Angular 17+)

Angular 17 replaced *ngIf and *ngFor with built-in @if, @for, @switch blocks — cleaner and more performant.

Angular 17+Templates@if@for
angularbeginner

Dependency Injection & inject()

Angular's hierarchical DI system — providedIn: 'root', InjectionToken for config values, and the modern inject() function.

AngularDIServicesinject()
databasebeginner

Time Complexity of an API Chain & DB Lookup

Understand the Big O of a chained API call that fetches a single record by ID — and why the database index type is the dominant factor in the overall complexity.

Big OTime ComplexityAPIDatabaseIndexesPerformance
cloudbeginner

Docker Fundamentals: Images, Containers & Dockerfiles

Understand the core Docker mental model — the difference between an image and a container, how a Dockerfile builds an image layer by layer, and essential CLI commands.

DockerContainersDockerfileDevOpsCloud Native
architecturebeginner

Health Checks: Liveness, Readiness & Startup Probes

The three types of health checks every production service needs — what each one signals, what happens when they fail, and how to implement them in ASP.NET Core.

Health ChecksKubernetesLivenessReadinessASP.NET CoreInterview
dotnetintermediate

Threads, Locks & Synchronization Primitives

Understand the OS thread model, synchronization primitives (Lock, Mutex, SemaphoreSlim, ReaderWriterLockSlim), and when thread-safe collections eliminate the need for manual locking.

C#ThreadingLocksMutexSynchronizationRace ConditionsDeadlock
dotnetintermediate

Task.WhenAll vs Task.WhenAny: Concurrent Task Patterns

Run multiple async operations concurrently and collect results efficiently — understand the performance difference between sequential awaits and parallel task fans.

C#Task.WhenAllTask.WhenAnyConcurrencyasyncPerformance
dotnetintermediate

Async / Await Best Practices

Avoid common async pitfalls in .NET — async void, ConfigureAwait, CancellationToken, and parallel task execution.

C#asyncTaskTPL
dotnetintermediate

EF Core Loading Strategies: Eager, Lazy & Explicit

Know when to use Include(), lazy loading, and explicit loading — and how each choice affects query count, memory, and the N+1 problem.

EF CoreLoadingN+1PerformanceInclude
dotnetintermediate

EF Core Performance Patterns

Optimise Entity Framework Core for high-volume services with AsNoTracking, projections, split queries, and Dapper for complex reads.

EF CoreDapperSQLPerformance
dotnetintermediate

Writing Custom Middleware in ASP.NET Core

Build class-based and inline middleware — short-circuiting requests, injecting scoped dependencies, and registering via extension methods.

ASP.NET CoreMiddlewareCustomDI
dotnetintermediate

Delegates, Events & the Publisher/Subscriber Pattern

Understand C# delegates as type-safe function pointers, how events enforce the pub/sub pattern, and when to use Action/Func vs custom delegates.

C#DelegatesEventsActionFuncPub/Sub
dotnetintermediate

Resilience with Polly

Build resilient HTTP calls using Polly v8 — retry with exponential back-off, circuit breaker states, and bulkhead isolation.

PollyHttpClientResilienceCircuit Breaker
dotnetintermediate

API Versioning Strategies

Compare URL path, header, and query string versioning in ASP.NET Core — with practical guidance on when to use each.

RESTVersioningASP.NET CoreAPI Design
dotnetintermediate

SOLID Principles in C#

Apply the five SOLID principles in real .NET code — with practical examples and the common violations to watch for in code reviews.

C#SOLIDOOPDesign PrinciplesClean Code
dotnetintermediate

Design Patterns in C#: Factory, Strategy, Observer & Decorator

Recognise and apply the most common GoF design patterns in .NET production code — and understand which problem each one solves.

C#Design PatternsFactoryStrategyObserverDecoratorRepository
dotnetintermediate

IDisposable, Finalizers & GC.SuppressFinalize

Implement the full IDisposable pattern correctly — understand why GC.SuppressFinalize exists, when finalizers run, and the performance cost of not using "using".

C#IDisposableFinalizerGCMemoryUnmanaged Resources
dotnetintermediate

LINQ: Deferred Execution, Pitfalls & Performance

Understand how LINQ's deferred execution works, common pitfalls like multiple enumeration and closure captures, and when to prefer EF Core over LINQ-to-Objects.

C#LINQDeferred ExecutionIEnumerablePerformance
dotnetintermediate

Synchronous API Chaining: The Slow UI Anti-Pattern

Understand why chaining API calls synchronously in the request path blocks the frontend, couples services together, and how to eliminate it with async event-driven design.

C#API DesignPerformanceArchitectureAnti-PatternLatency
dotnetintermediate

Background Workers & Azure Service Bus for Async Email

Decouple non-critical side effects (email, notifications) from the request path using Azure Service Bus and a .NET Background Worker — with retry logic and structured logging.

C#Azure Service BusBackground WorkerIHostedServiceEmailResilience
dotnetintermediate

IHttpClientFactory: Why new HttpClient() Is a Bug

Understand why creating a new HttpClient per request causes socket exhaustion and TLS overhead — and how IHttpClientFactory solves this with managed, reusable connections.

C#HttpClientIHttpClientFactoryPerformanceSocket Exhaustion
dotnetintermediate

ASP.NET Core Middleware Pipeline

Understand how the middleware pipeline processes HTTP requests and responses, the order middleware executes, and how to build reusable custom middleware classes.

C#ASP.NET CoreMiddlewareHTTP PipelineRequest Delegate
dotnetintermediate

ASP.NET Core Request Pipeline: Routing, Model Binding & Filters

The three pillars of the ASP.NET Core request pipeline — Routing finds the right action, Model Binding maps incoming data to C# objects, and Filters run cross-cutting logic before/after execution.

C#ASP.NET CoreRoutingModel BindingFiltersAction FiltersPipeline
dotnetintermediate

Modern C# Features: Records, Pattern Matching, Nullable Refs, Generics & More

A practical guide to the features that transformed C# from verbose Java-like syntax into a powerful, expressive language — Records, Pattern Matching, Nullable Reference Types, Extension Methods, LINQ, and the critical IEnumerable vs List distinction.

C#RecordsPattern MatchingNullableGenericsExtension MethodsIEnumerableLINQ
angularintermediate

Angular Signals — Fine-Grained Reactivity

Replace Zone.js-based change detection with Signals — reactive primitives that track exactly which components depend on which values.

Angular 17+SignalsReactivityPerformance
angularintermediate

Signal-Based Inputs & Outputs (Angular 17.1+)

Replace @Input() / @Output() decorators with input() and output() — integrated with the signals reactivity graph.

Angular 17+SignalsComponent APIinputs
angularintermediate

RxJS Core Concepts: Observables, Subjects & the Push Model

Understand how RxJS models async data as streams — the difference between cold and hot observables, the four Subject types, and when to use each.

RxJSObservablesSubjectBehaviorSubjectAngularStreams
angularintermediate

RxJS Operators: Transformation, Filtering & Error Handling

Master the essential RxJS operators — higher-order mapping, filtering, combination, and error handling — with practical patterns for every Angular scenario.

RxJSObservablesswitchMapmergeMapcatchErrorAngularOperators
angularintermediate

Bridging Observables and Signals with toSignal()

Convert RxJS Observables into Signals for use in templates — eliminating the async pipe and enabling signal-based change detection.

AngularSignalsRxJStoSignal
angularintermediate

Angular Component Architecture: Class, Template & Communication

Understand what an Angular component is, how the three parts (class, template, metadata) work together, and the four patterns for component communication.

AngularComponents@Input@OutputEventEmitterViewChildLifecycle Hooks
angularintermediate

Dependency Injection Provider Scopes: Root, Module & Component

Understand the four DI provider scopes in Angular — when each is instantiated, how long it lives, and the real-world bugs that arise from choosing the wrong scope.

AngularDependency InjectionProvidersSingletonScopeLazy Loading
angularintermediate

Diagnosing & Fixing Angular Performance Bottlenecks

A practical approach to identifying performance issues — from excessive change detection cycles and N+1 queries to large DOM renders — with the tools and fixes that make a measurable difference.

AngularPerformanceChange DetectionOnPushN+1ProfilingDevTools
databaseintermediate

Caching Strategies: Cache-Aside vs Write-Through

Understand when to update the database first vs. the cache first — and why the order matters for consistency, performance, and concurrency.

CachingRedisPerformanceConsistencyRace Conditions
databaseintermediate

Window Functions: ROW_NUMBER, RANK, DENSE_RANK & CTEs

Master the three ranking functions — understanding exactly how they differ when ties occur — plus correct TOP-N patterns, PARTITION BY, and when to reach for a CTE.

SQL ServerWindow FunctionsROW_NUMBERRANKDENSE_RANKCTEPARTITION BYPerformance
databaseintermediate

CTEs & Recursive Queries in SQL Server

Use Common Table Expressions to break down complex queries into readable building blocks — and unlock recursive CTEs for hierarchical data like org charts and category trees.

SQL ServerCTERecursiveHierarchical Data
databaseintermediate

Index Seek vs Index Scan: How SQL Server Chooses

Understand the fundamental difference between an Index Seek (direct B-Tree navigation) and an Index Scan (full index read) — and how to write queries that always trigger a Seek.

SQL ServerIndex SeekIndex ScanSARGableExecution PlanPerformance
databaseintermediate

Index Types: Choosing the Right Index for Every Query Pattern

Different index types are optimised for specific query patterns. Choosing correctly between B-Tree, Hash, Composite, Clustered, Filtered, Full-Text, GIN, and Bitmap indexes eliminates unnecessary disk I/O and dramatically speeds up query execution.

SQL ServerIndexesB-TreePerformanceCovering IndexGINPostgreSQLDatabase
databaseintermediate

Transactions, ACID & Concurrency in SQL Server

Understand isolation levels, optimistic vs pessimistic concurrency, and deadlock prevention in SQL Server and EF Core.

SQL ServerTransactionsACIDConcurrencyDeadlockIsolation LevelsEF Core
cloudintermediate

Docker Compose: Multi-Container Local Development

Use docker-compose.yml to define and run multi-container applications — spinning up your API, database, and Redis together with a single command.

DockerDocker ComposeLocal DevDevOps
cloudintermediate

Kubernetes Fundamentals: Pods, Deployments & Services

Understand the core Kubernetes objects — Pods, Deployments, and Services — and how K8s manages container lifecycle, scaling, and self-healing across a cluster.

KubernetesK8sPodsDeploymentsServicesCloud Native
cloudintermediate

Kubernetes ConfigMaps, Secrets & Health Probes

Manage application configuration and credentials in K8s with ConfigMaps and Secrets — and ensure K8s only routes traffic to healthy Pods using liveness and readiness probes.

KubernetesConfigMapSecretsHealth ProbesLivenessReadiness
cloudintermediate

Azure → AWS Service Mapping: The Complete Mental Model

Translate your Azure knowledge directly into AWS equivalents across compute, storage, databases, networking, messaging, and identity — and understand the key architectural differences between the two platforms.

AzureAWSCloudArchitectureMigrationDevOps
cloudintermediate

Rebuilding a .NET + Angular App in AWS

A practical architecture walkthrough for migrating a .NET Core API + Angular frontend from Azure to AWS — with real trade-offs, what breaks, and what actually gets better.

AzureAWSArchitecture.NETAngularMigrationECSS3
cloudintermediate

Queue vs Event: When to Use Each (And Why It Matters)

Understand the fundamental difference between a queue (one consumer, job processing) and an event (many consumers, something happened) — the most misunderstood distinction in distributed systems.

AWSAzureQueueEventSQSSNSService BusEventBridgeMessaging
cloudintermediate

CI/CD Pipeline Design for .NET + Angular

Structure a complete build, test, and deploy pipeline for a full-stack .NET and Angular project using GitHub Actions or Azure DevOps.

CI/CDGitHub ActionsAzure DevOpsDocker
cloudintermediate

Docker Best Practices for .NET Services

Multi-stage Dockerfile patterns, layer caching optimisation, networking, and health checks for containerised .NET microservices.

DockerContainers.NETMicroservices
securityintermediate

Production Readiness Checklist

A definitive pre-deploy checklist covering infrastructure, security, data integrity, API quality, and launch readiness — the difference between a hobby project and a professional-grade deployment.

SecurityDevOpsDeploymentChecklistProduction
securityintermediate

IDOR: Insecure Direct Object Reference

Understand how IDOR works, why it is one of the most common and dangerous API vulnerabilities, and how to eliminate it with resource-level authorization checks.

SecurityIDORAuthorizationOWASPAPI
securityintermediate

JWT, OAuth2 & OIDC in ASP.NET Core

Implement secure authentication and authorisation using JWT bearer tokens, OAuth2 flows, and OIDC with providers like Cognito or Entra ID.

JWTOAuth2OIDCSecurityASP.NET Core
dotnetintermediate

LINQ Deep Dive: Queries, Joins, First vs FirstOrDefault & Best Practices

A comprehensive guide to LINQ — from filtering and projection to joins, grouping, and the subtle but critical differences between First, FirstOrDefault, Single, and SingleOrDefault.

C#LINQIEnumerableIQueryableJoinsEF CorePerformance
careerintermediate

STAR: Raising Engineering Standards Without Slowing Delivery

How to answer: "Tell me about a time you raised engineering standards across a team while still delivering to deadlines."

InterviewSTARLeadershipCode QualityClean ArchitectureEngineering Culture
careerintermediate

STAR: Improving CI/CD Pipelines for Safer, Faster Releases

How to answer: "Tell me about a time you improved a CI/CD pipeline or release process to make deployments safer and faster."

InterviewSTARCI/CDDevOpsAzure DevOpsGitHub Actions
careerintermediate

STAR: Improving Observability to Reduce Incident Impact

How to answer: "Tell me about a time you improved observability for a production system and it materially reduced incident impact."

InterviewSTARObservabilityLoggingMonitoringSplunkMTTR
careerintermediate

STAR: Security by Design for APIs and Cloud Services

How to answer: "Tell me about a time you designed security into an API or cloud solution and balanced it with usability and delivery speed."

InterviewSTARSecurityJWTOAuth2Key VaultLeast Privilege
careerintermediate

STAR: Cross-Functional Collaboration Across Teams

How to answer: "Tell me about a time you aligned multiple teams to deliver an end-to-end feature with clear interfaces and non-functional requirements."

InterviewSTARLeadershipStakeholdersAPI DesignCollaboration
financeintermediate

Securitization Fundamentals: Mechanics & SPVs

Understand how illiquid loan pools are transformed into tradable securities via a Special Purpose Vehicle — the core lifecycle from origination to investor issuance.

SecuritizationABSMBSSPVCapital MarketsStructured Finance
financeintermediate

Credit Enhancement: Tranching, OC & Excess Spread

Learn how internal and external credit enhancement techniques protect senior investors and achieve investment-grade ratings on pools of sub-investment-grade loans.

Credit EnhancementTranchingOver-collateralizationWaterfallStructured Finance
architectureintermediate

System Design Foundations: Scalability, Availability & Reliability

Understand the core trade-offs in distributed systems — vertical vs horizontal scaling, availability vs reliability, and why designing for failure is the default assumption at scale.

System DesignScalabilityAvailabilityReliabilityDistributed Systems
architectureintermediate

Observability: Metrics, Logs & Distributed Traces

Monitoring tells you when something is broken. Observability tells you why. Master the three pillars — metrics, logs, and traces — and when to reach for each.

ObservabilityMetricsLoggingDistributed TracingOpenTelemetrySystem Design
architectureintermediate

CAP Theorem: Consistency, Availability & Partition Tolerance

Every distributed system must choose between Consistency and Availability when a network partition occurs. Understand CP vs AP systems and when each is appropriate.

CAP TheoremConsistencyAvailabilityEventual ConsistencyDistributed Systems
architectureintermediate

Load Balancers, Reverse Proxies & Traffic Routing

Understand how load balancers distribute traffic across server pools, the difference between L4 and L7 balancing, sticky sessions, health checks, and global traffic routing.

Load BalancerReverse ProxynginxAWS ALBSystem DesignHigh Availability
architectureintermediate

Caching Layers: CDN, Application Cache & Database Cache

Design a multi-layer caching strategy — from CDN edge caching to in-process memory to Redis — and understand eviction policies, cache stampedes, and invalidation strategies.

CachingCDNRedisEvictionCache StampedeSystem Design
architectureintermediate

Splunk HEC + Serilog: Structured Logging via Middleware

Stream structured logs to Splunk HEC using Serilog — wired into ASP.NET Core middleware so every request is automatically captured without a single logger.Information() call in your controllers.

SplunkSerilogHECMiddlewareStructured LoggingObservabilityASP.NET Core
architectureintermediate

Interview: Improving Observability to Reduce Incident Impact (STAR)

A structured STAR answer for "Tell me about a time you improved observability for a production system and it materially reduced incident impact."

InterviewSTARObservabilitySplunkMTTRAzure MonitorIncident Response
architectureintermediate

SQL vs NoSQL: Choosing the Right Database

Move beyond "just use Postgres" — understand the trade-offs between relational and document/key-value/wide-column stores and match the database type to the access pattern.

SQLNoSQLPostgreSQLDynamoDBMongoDBSystem DesignDatabase
databaseintermediate

UUID Primary Keys & B-Tree Index Fragmentation

Why random UUIDs as primary keys silently destroy database write performance — and how sequential IDs or time-sorted UUIDs (UUIDv7) fix it.

DatabaseUUIDIndexB-TreePerformancePrimary KeyInterview
databaseintermediate

Cursor-Based Pagination: Replacing OFFSET for 50M+ Row Tables

Why OFFSET/LIMIT collapses at page 10,000 — and how keyset (cursor) pagination keeps query time flat regardless of depth.

DatabasePaginationCursorKeysetPerformanceSQLInterview
databaseintermediate

Preventing Double Booking in Distributed Systems

Why application-level mutex fails across multiple servers — and how to use SELECT FOR UPDATE, optimistic locking, and distributed locks correctly.

ConcurrencyDouble BookingSELECT FOR UPDATEOptimistic LockingRace ConditionInterview
databaseintermediate

Idempotency Keys: Guaranteeing Exactly-Once Processing

Mobile networks drop connections. Clients retry. How to design payment and order endpoints that can be safely retried any number of times without duplicate side effects.

IdempotencyAPI DesignPaymentsDistributed SystemsExactly-OnceInterview
architectureintermediate

Cache Stampede (Thundering Herd): Causes & Prevention

What happens when a popular cache key expires under high traffic — and the three strategies that prevent your database from collapsing as a result.

CachingRedisCache StampedeThundering HerdPerformanceInterview
architectureintermediate

Cache Eviction Policies: LRU, LFU, TTL & When to Use Each

Caches run out of memory. When they do, what gets deleted? Understanding eviction policies prevents surprise cache behaviour in production.

CachingRedisLRULFUEvictionSessionInterview
architectureintermediate

Cache Hit Ratio: When Redis Slows You Down

A cache with a poor hit ratio adds network latency on every request while providing almost no benefit. How to measure, diagnose, and improve cache effectiveness.

CachingRedisHit RatioPerformanceMonitoringInterview
architectureintermediate

Rate Limiting: Fixed Window vs Sliding Window vs Token Bucket

Three different rate limiting algorithms — understand the double-spend boundary exploit of fixed windows, how sliding windows fix it, and why token bucket is the standard for API throttling.

Rate LimitingAPIFixed WindowSliding WindowToken BucketRedisInterview
architectureintermediate

Designing Large File Upload Endpoints (5GB+)

Why uploading large files through your API server is an anti-pattern — and how presigned URLs, chunked uploads, and direct-to-storage patterns eliminate the memory and throughput bottleneck.

API DesignFile UploadS3Azure BlobMultipartPresigned URLInterview
architectureintermediate

Async Job Processing: Queues, Workers & Exactly-Once Delivery

Design a robust async job processing system — when to use queues vs cron, at-least-once vs exactly-once delivery, job deduplication, and failure handling with dead letter queues.

QueuesBackground JobsWorkerMessage QueueDead LetterExactly-OnceInterview
architectureintermediate

API Backwards Compatibility: Safe Changes vs Breaking Changes

Mobile apps live on devices for years. A breaking API change silently crashes them. Know the difference between safe and breaking changes — and the patterns that let you evolve your API without coordinating a simultaneous deploy.

API DesignVersioningBackwards CompatibilityRESTMobileInterview
architectureintermediate

Database Connection Pooling: Exhaustion, Sizing & Debugging

Connection pool exhaustion silently hangs requests. Understand how pools work, how to size them, what causes exhaustion, and how to diagnose it before it takes down production.

DatabaseConnection PoolSQL ServerPerformanceInterviewADO.NET
architectureintermediate

Graceful Shutdown: Draining In-Flight Requests Before Termination

When Kubernetes sends SIGTERM, your server has seconds to finish in-flight work and close cleanly. Poor shutdown handling drops requests, corrupts database transactions, and loses queued messages.

KubernetesGraceful ShutdownSIGTERMHealth ChecksK8sInterview
databaseintermediate

N+1 Query Problem: Detection, Root Causes & Fixes

The most common ORM performance bug — one query to get a list, then N queries to get each item's details. How to identify it, understand why ORMs generate it, and permanently fix it.

ORMN+1EF CoreSQLPerformanceDatabaseInterview
architectureintermediate

Message Queue Patterns: Pub/Sub, Fan-Out, Competing Consumers & DLQ

Go beyond "use a queue" — understand the specific patterns that make distributed systems reliable: fan-out for broadcasting, competing consumers for throughput, and dead letter queues for visibility into failures.

Message QueuePub/SubFan-OutDead Letter QueueSQSService BusInterview
dotnetadvanced

Task vs ValueTask

Understand when heap allocation from Task<T> causes GC pressure on hot paths — and when ValueTask<T> solves it without introducing footguns.

C#TaskValueTaskPerformanceGC
dotnetadvanced

Async Deadlocks & Parallel Patterns

Diagnose and prevent async deadlocks caused by SynchronizationContext, and choose the right parallel tool for I/O vs CPU-bound work.

C#DeadlockParallelSynchronizationContextCancellationToken
dotnetadvanced

Clean Architecture Layers in .NET

Organise .NET services using Clean Architecture — Domain, Application, Infrastructure, and Presentation — with inward-only dependencies.

Clean ArchitectureDDDCQRSMediatR
dotnetadvanced

Span<T> Escape Analysis & Ref Struct Lifetime Rules

Understand why returning a Span<T> pointing to a local variable fails to compile — and how the C# compiler enforces memory safety through escape analysis.

C#Spanref structMemoryEscape AnalysisPerformance
dotnetadvanced

.NET Garbage Collector & Memory Management

Understand generational GC, the Large Object Heap, IDisposable for deterministic cleanup, and how to avoid common memory pressure pitfalls.

C#GCMemoryIDisposablePerformance
dotnetadvanced

DDD Aggregate Roots & Boundaries

Define aggregate boundaries correctly in Domain-Driven Design — small aggregates, ID-only cross-references, and domain events.

DDDAggregatesDomain EventsArchitecture
dotnetadvanced

Outbox Pattern & Saga Orchestration

Guarantee at-least-once message delivery in microservices using the Transactional Outbox Pattern and Saga for distributed workflows.

MicroservicesOutboxSagaMessaging
angularadvanced

NgRx: Redux Pattern in Angular

Understand NgRx — the Redux pattern applied to Angular with a single immutable state tree, actions, reducers, selectors, and effects for managing complex application state.

AngularNgRxReduxState ManagementStoreEffectsSelectors
angularadvanced

NgRx / Redux vs Angular Signals: Choosing the Right State Strategy

Understand the philosophical and practical differences between NgRx/Redux (centralised, action-driven, RxJS) and Angular Signals (local, reactive, synchronous) — and when to use each or combine both.

AngularNgRxReduxSignalsState ManagementArchitecture
databaseadvanced

SQL Server Performance Tuning

Index strategy, execution plans, CTEs, window functions, and avoiding N+1 queries in high-volume production databases.

SQL ServerIndexesQuery PlansPerformance
dotnetadvanced

Designing for Testability from Day One

Architect .NET services so every layer is independently testable — from pure domain logic to full integration tests with real databases.

TestingTDDTestContainersMocking
careeradvanced

STAR: Cloud-Native Microservices Architecture Trade-offs

How to answer: "Tell me about a time you designed and delivered a cloud-native service and had to make architecture trade-offs for scalability and reliability."

InterviewSTARMicroservicesArchitecture.NETAWS
careeradvanced

STAR: Event-Driven Workflows & Messaging Reliability

How to answer: "Tell me about a time you implemented an event-driven workflow and ensured it was resilient — idempotency, retries, failure handling."

InterviewSTAREvent-DrivenMessagingService BusReliability
careeradvanced

STAR: People Leadership, Coaching & Team Development

How to answer: "Tell me about a time you developed an engineer or helped the team grow technically and professionally."

InterviewSTARLeadershipCoachingMentoringTeam Development
financeadvanced

Building a Waterfall Engine in C#/.NET

Implement a Sequential Pay waterfall engine and apply the Strategy Pattern to handle trigger-based switches between Sequential and Pro-Rata payment modes at runtime.

C#.NETWaterfallStrategy PatternStructured FinanceCash Flow Engine
financeadvanced

Structured Finance Data Architecture on Azure

Design a production-grade data pipeline for securitization platforms — from raw loan-level data ingestion to validated analytics and investor reporting.

AzureData ArchitectureAzure BatchParquetCapital Markets.NET
architectureadvanced

OpenTelemetry: Vendor-Neutral Observability Across Services

Instrument .NET services once with OpenTelemetry and ship traces, metrics, and logs to any backend — Splunk, Azure Monitor, Datadog, or Jaeger — without vendor lock-in.

OpenTelemetryDistributed TracingOTLPAzure MonitorSplunkObservability
architectureadvanced

Distributed Locks: Redlock, ZooKeeper & Avoiding Single Points of Failure

A single Redis instance for distributed locking is a single point of failure. Understand Redlock, its controversies, and when to use ZooKeeper or PostgreSQL advisory locks instead.

Distributed SystemsRedlockRedisZooKeeperDistributed LockConsensusInterview
Content is updated regularly. New tutorials are added as they are curated.