NestJS is a framework for building efficient, scalable Node.js server-side applications using TypeScript and modern JavaScript features.
Click to reveal answer
beginner
What command creates a new NestJS project?
The command nest new project-name creates a new NestJS application with a ready-to-use structure.
Click to reveal answer
beginner
What is the role of a controller in a NestJS application?
A controller handles incoming requests and returns responses. It acts like a traffic controller directing requests to the right place.
Click to reveal answer
beginner
How do you start the NestJS application server?
Run npm run start or nest start in the project folder to launch the server locally.
Click to reveal answer
beginner
What file contains the main entry point of a NestJS app?
The main.ts file is the entry point where the NestJS application is created and started.
Click to reveal answer
Which command initializes a new NestJS project?
Anode create nest
Bnpm init nest
Cnest new my-app
Dnest create app
✗ Incorrect
The correct command is nest new my-app to create a new NestJS project.
What does a controller do in NestJS?
ACompiles TypeScript code
BManages database connections
CDefines application styles
DHandles incoming HTTP requests
✗ Incorrect
Controllers handle incoming HTTP requests and send responses.
Which file is the main entry point of a NestJS app?
Amain.ts
Bapp.module.ts
Ccontroller.ts
Dpackage.json
✗ Incorrect
The main.ts file bootstraps and starts the NestJS application.
How do you start the NestJS server locally?
Anest build
Bnpm run start
Cnode server.js
Dnpm install
✗ Incorrect
Use npm run start to launch the NestJS server.
NestJS is built on top of which platform?
ANode.js
BRuby
CPython
DJava
✗ Incorrect
NestJS runs on Node.js, using TypeScript and JavaScript.
Describe the steps to create and run your first NestJS application.
Think about commands and files involved.
You got /4 concepts.
Explain the role of a controller in a NestJS app and how it fits in the app structure.
Controllers are like request managers.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a controller in a NestJS application?
easy
A. To configure the server settings and environment variables
B. To connect to the database and manage data storage
C. To handle incoming HTTP requests and send responses
D. To define the application's routing paths only
Solution
Step 1: Understand the role of controllers
Controllers in NestJS are designed to receive HTTP requests and return responses to the client.
Step 2: Differentiate from other components
Modules organize the app, services handle business logic, and controllers handle requests and responses.
Final Answer:
To handle incoming HTTP requests and send responses -> Option C
Quick Check:
Controller = Request handler [OK]
Hint: Controllers respond to HTTP requests directly [OK]
Common Mistakes:
Confusing controllers with modules
Thinking controllers manage database connections
Assuming controllers only define routes without logic
2. Which of the following is the correct way to start a NestJS application in the main.ts file?
easy
A. app.start(3000);
B. await app.listen(3000);
C. app.run(3000);
D. app.open(3000);
Solution
Step 1: Identify the bootstrap function usage
The NestJS app instance uses the listen() method to start the server on a specified port.
Step 2: Confirm the correct syntax
The correct syntax is await app.listen(3000); to asynchronously start the server on port 3000.
Final Answer:
await app.listen(3000); -> Option B
Quick Check:
Start server with listen() [OK]
Hint: Use listen() method to start the server [OK]
Common Mistakes:
Using non-existent methods like start() or run()
Forgetting to await the listen() call
Confusing listen() with open()
3. Given this controller code snippet, what will be the HTTP response when a GET request is made to '/'?
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
@Get()
getHello(): string {
return 'Hello, NestJS!';
}
}
medium
A. No response because method is not async
B. An error because @Get decorator is missing a path
C. "GET request received"
D. "Hello, NestJS!"
Solution
Step 1: Analyze the controller method
The method getHello() is decorated with @Get() without a path, so it responds to GET requests at the root path '/'.
Step 2: Understand the returned value
The method returns the string 'Hello, NestJS!', which will be sent as the HTTP response body.
Final Answer:
"Hello, NestJS!" -> Option D
Quick Check:
@Get() returns method string response [OK]
Hint: @Get() without path means root '/' route [OK]
Common Mistakes:
Thinking @Get() requires a path argument
Assuming async is required for response
Expecting JSON response instead of string
4. What is wrong with this main.ts file that prevents the NestJS app from starting?
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.listen(3000);
}
bootstrap();
medium
A. Missing await before app.listen(3000);
B. AppModule is not imported correctly
C. bootstrap function is not called
D. NestFactory.create should be synchronous
Solution
Step 1: Check async function usage
The bootstrap function is async, so asynchronous calls inside should be awaited to ensure proper execution.
Step 2: Identify missing await
The call app.listen(3000); returns a Promise and should be awaited as await app.listen(3000); to start the server correctly.
Final Answer:
Missing await before app.listen(3000); -> Option A
Quick Check:
Always await async listen() call [OK]
Hint: Always await app.listen() in async bootstrap [OK]
Common Mistakes:
Not awaiting app.listen() causing server not to start
Assuming NestFactory.create is synchronous
Forgetting to call bootstrap()
5. You want to create a simple NestJS app that responds with "Welcome to NestJS!" when a user visits '/welcome'. Which code snippet correctly implements this in the controller?
hard
A. import { Controller, Get } from '@nestjs/common';
@Controller()
export class WelcomeController {
@Get('welcome')
welcome() {
return 'Welcome to NestJS!';
}
}
B. import { Controller, Get } from '@nestjs/common';
@Controller('welcome')
export class WelcomeController {
@Get('/')
welcome() {
return 'Welcome to NestJS!';
}
}
C. import { Controller, Post } from '@nestjs/common';
@Controller('welcome')
export class WelcomeController {
@Post()
welcome() {
return 'Welcome to NestJS!';
}
}
D. import { Controller, Get } from '@nestjs/common';
@Controller('welcome')
export class WelcomeController {
@Get('welcome')
welcome() {
return 'Welcome to NestJS!';
}
}
Solution
Step 1: Understand route path composition
The full route path is formed by combining @Controller() path and @Get() path.
Step 2: Match the desired route '/welcome'
Using @Controller() with no path and @Get('welcome') creates the route '/welcome'. import { Controller, Get } from '@nestjs/common';
@Controller()
export class WelcomeController {
@Get('welcome')
welcome() {
return 'Welcome to NestJS!';
}
} does this correctly.
Step 3: Check other options
import { Controller, Get } from '@nestjs/common';
@Controller('welcome')
export class WelcomeController {
@Get('/')
welcome() {
return 'Welcome to NestJS!';
}
} creates '/welcome' + '/' = '/welcome/'. import { Controller, Post } from '@nestjs/common';
@Controller('welcome')
export class WelcomeController {
@Post()
welcome() {
return 'Welcome to NestJS!';
}
} uses POST instead of GET. import { Controller, Get } from '@nestjs/common';
@Controller('welcome')
export class WelcomeController {
@Get('welcome')
welcome() {
return 'Welcome to NestJS!';
}
} creates '/welcome/welcome'.
Final Answer:
@Controller() with @Get('welcome') -> Option A
Quick Check:
Use @Get('welcome') with empty @Controller() for '/welcome' [OK]
Hint: Combine @Controller() and @Get() paths carefully [OK]
Common Mistakes:
Using @Post instead of @Get for GET requests
Duplicating path in both @Controller and @Get
Assuming @Controller('welcome') alone sets full path
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.