0
0
NestJSframework~20 mins

Provider scope (default, request, transient) in NestJS - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
NestJS Provider Scope Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What happens when a provider is set to default scope in NestJS?
Consider a NestJS service provider with the default scope. What is the behavior of this provider when injected into multiple components?
NestJS
import { Injectable } from '@nestjs/common';

@Injectable()
export class MyService {
  id = Math.random();
}

// This service is injected into two different controllers or providers.
AA new instance of MyService is created every time it is injected.
BA new instance of MyService is created for each HTTP request.
CA single instance of MyService is shared across the entire application.
DMyService instances are created only once per module.
Attempts:
2 left
💡 Hint
Default scope means the provider is a singleton by default.
component_behavior
intermediate
2:00remaining
How does a request-scoped provider behave in NestJS?
If a provider is set with request scope, what happens when multiple HTTP requests use this provider?
NestJS
import { Injectable, Scope } from '@nestjs/common';

@Injectable({ scope: Scope.REQUEST })
export class RequestService {
  id = Math.random();
}

// This service is injected into controllers handling HTTP requests.
AA new instance of RequestService is created for each HTTP request.
BA single instance is shared across all requests.
CA new instance is created every time the service is injected within the same request.
DInstances are created once per module load.
Attempts:
2 left
💡 Hint
Request scope means one instance per HTTP request.
component_behavior
advanced
2:00remaining
What is the behavior of a transient-scoped provider in NestJS?
A provider is marked with transient scope. What happens when it is injected multiple times in the same request?
NestJS
import { Injectable, Scope } from '@nestjs/common';

@Injectable({ scope: Scope.TRANSIENT })
export class TransientService {
  id = Math.random();
}

// Injected multiple times in the same request or component.
AA single instance is shared per HTTP request.
BA new instance is created every time the provider is injected.
CA single instance is shared across the entire app.
DInstances are created once per module.
Attempts:
2 left
💡 Hint
Transient scope means no instance sharing at all.
state_output
advanced
2:30remaining
What will be the output of the following NestJS provider instances' IDs?
Given these providers with different scopes, what will be the output of their id properties when injected twice in the same request?
NestJS
import { Injectable, Scope } from '@nestjs/common';

@Injectable()
export class DefaultService {
  id = Math.random();
}

@Injectable({ scope: Scope.REQUEST })
export class RequestService {
  id = Math.random();
}

@Injectable({ scope: Scope.TRANSIENT })
export class TransientService {
  id = Math.random();
}

// Assume these are injected twice in the same request and their ids logged.
ADefaultService ids are same, RequestService ids are same, TransientService ids are different.
BAll three services have different ids each time they are injected.
CDefaultService ids same, RequestService ids differ, TransientService ids same.
DDefaultService ids differ, RequestService ids differ, TransientService ids are same.
Attempts:
2 left
💡 Hint
Think about how many instances each scope creates per injection or request.
lifecycle
expert
2:30remaining
Which provider scope causes the most frequent constructor calls in NestJS?
Consider a provider injected multiple times in various parts of an app. Which scope leads to the highest number of constructor executions?
ASingleton scope
BRequest scope
CDefault scope
DTransient scope
Attempts:
2 left
💡 Hint
Think about how often new instances are created for each scope.