Đề ôn · SDN302

SDN302 Server-Side development with NodeJS, Express, and MongoDB – Bộ ôn tập cuối kỳ số 1 (49 câu)

49 câu · Cuối kỳ · Spring 2026

49câu trong đề
SDN302môn

Câu hỏi của đề

15/49 câuCòn 34
1What is a model in Mongoose?4 lựa chọnDễ88% trả lời đúng
AA method for querying the database.
BA schema used for validating documents.
CAn object that takes your schema and applies it to each document in its collection.
DA function used for database transactions.
Lời giải
Trong Mongoose, một mô hình (model) là một đối tượng được tạo ra từ một schema. Nó có nhiệm vụ áp dụng schema vào từng bản ghi (document) trong một tập hợp dữ liệu (collection). Mô hình được sử dụng để tương tác với cơ sở dữ liệu, bao gồm việc tạo, đọc, cập nhật và xóa dữ liệu. Khi tạo một mô hình, bạn cần cung cấp tên của tập hợp dữ liệu và schema được sử dụng để xác định cấu trúc của dữ liệu. Mô hình sẽ tự động tạo ra các phương thức để thực hiện các hành động cơ bản trên dữ liệu, như tìm kiếm, tạo mới, cập nhật và xóa.
Mở trang câu hỏi này →
Aconst http = require('http'); const fs = require('fs'); http.createServer((req, res) => { if (req.method === 'GET') { fs.readFile('file.txt', (err, data) => { if (err) throw err; res.end(data); }); } }).listen(8080);
Bconst http = require('http'); const fs = require('fs'); http.createServer((req, res) => { if (req.method === 'POST') { fs.readFile('file.txt', (err, data) => { res.end(data); }); } }).listen(8080);
Cconst http = require('http'); http.createServer((req, res) => { if (req.method === 'GET') { res.end('File content'); } }).listen(8080);
Dconst http = require('http'); const fs = require('fs'); http.createServer((req, res) => { if (req.method === 'GET') { fs.writeFileSync('file.txt', 'Hello'); res.end('File written'); } }).listen(8080);
Lời giải
Để tạo một Node.js server xử lý GET request và trả về nội dung của một file, chúng ta cần sử dụng các module http và fs. Module http được sử dụng để tạo một server, trong khi module fs được sử dụng để đọc nội dung của file. Trong câu trả lời đúng, chúng ta sử dụng http.createServer để tạo một server và kiểm tra phương thức của yêu cầu (req.method === 'GET') để quyết định đọc nội dung của file hay không. Nếu phương thức là GET, chúng ta sử dụng fs.readFile để đọc nội dung của file và trả về nó qua phương thức res.end().
Mở trang câu hỏi này →
3In Mongoose, which method is used to create a new document?4 lựa chọnTrung bình63% trả lời đúng
AModel.find()
BModel.insert()
CModel.save()
Dnew Model().save()
Lời giải

Trong Mongoose, phương thức được sử dụng để tạo một tài liệu mới là new Model().save(). Phương thức này cho phép bạn tạo một tài liệu mới và lưu nó vào cơ sở dữ liệu. Phương thức này được sử dụng khi bạn muốn tạo một tài liệu mới và không muốn dựa vào dữ liệu hiện có trong cơ sở dữ liệu. Ví dụ, nếu bạn muốn tạo một tài liệu mới với các trường dữ liệu cụ thể, bạn có thể sử dụng phương thức new Model().save() như sau: const user =

Lời giải
new User({
  name: 'John Doe', email: '[email protected]'
}

);

Lời giải
user.save((err, user) => {
  if (err) console.error(err); else console.log(user);
}

);

Mở trang câu hỏi này →
Abody-parser
Bexpress-rate-limit
Ccors
Dhelmet
Lời giải
Để ngăn chặn các cuộc tấn công brute-force khi đăng nhập, bạn có thể sử dụng middleware Express.js là express-rate-limit. Middleware này cho phép bạn giới hạn số lượng yêu cầu từ một địa chỉ IP trong một khoảng thời gian nhất định. Điều này giúp ngăn chặn các cuộc tấn công brute-force bằng cách giới hạn số lần thử đăng nhập từ một địa chỉ IP trong một khoảng thời gian nhất định. Ví dụ, bạn có thể cấu hình express-rate-limit để giới hạn 5 yêu cầu đăng nhập từ một địa chỉ IP trong 1 phút. Nếu địa chỉ IP đó vượt quá giới hạn này, nó sẽ bị chặn trong một khoảng thời gian nhất định. Điều này giúp bảo vệ hệ thống khỏi các cuộc tấn công brute-force và đảm bảo an toàn cho người dùng.
Mở trang câu hỏi này →
5What is Express.js?4 lựa chọnDễ100% trả lời đúng
AA database management system.
BA front-end framework for designing UI.
CA back-end web application framework for Node.js.
DA text editor for coding.
Lời giải
Express.js là một khung làm việc phía sau (back-end) cho Node.js, cho phép bạn xây dựng các ứng dụng web nhanh chóng và hiệu quả. Nó cung cấp một bộ công cụ mạnh mẽ để tạo ra các API, xử lý yêu cầu HTTP và trả về phản hồi. Express.js cho phép bạn tạo ra các ứng dụng web linh hoạt, dễ dàng mở rộng và bảo trì. Nó cũng hỗ trợ các tính năng như middleware, template engine và các công cụ khác để giúp bạn xây dựng các ứng dụng web chuyên nghiệp.
Mở trang câu hỏi này →
Aupload.fields(..)
Bupload.single(..)
Cupload.array(..)
Dupload()
Lời giải
Để tải nhiều tệp tin cùng một lúc với Multer, bạn có thể sử dụng các phương thức sau: upload.fields() và upload.array(). Phương thức upload.fields() cho phép bạn tải nhiều tệp tin với tên khác nhau, trong khi phương thức upload.array() cho phép bạn tải nhiều tệp tin với tên giống nhau. Ví dụ, nếu bạn muốn tải một tệp tin tên là ảnh và một tệp tin tên là file, bạn có thể sử dụng upload.fields() như sau: const upload = multer({ fields: [ { name: 'ảnh', maxCount: 1 }, { name: 'file', maxCount: 1 } ] });. Nếu bạn muốn tải nhiều tệp tin tên là ảnh, bạn có thể sử dụng upload.array() như sau: const upload = multer({ arrayKey: 'ảnh', maxCount: 5 });. Tóm lại, cả hai phương thức upload.fields() và upload.array() đều hỗ trợ tải nhiều tệp tin cùng một lúc với Multer.
Mở trang câu hỏi này →
7Which of the following is NOT a valid HTTP method in REST?4 lựa chọnDễ100% trả lời đúng
AGET
BPOST
CFETCH
DDELETE
Lời giải
Trong REST, các phương thức HTTP được sử dụng để thực hiện các hành động khác nhau trên tài nguyên. Các phương thức phổ biến bao gồm GET, POST, DELETE. Tuy nhiên, phương thức FETCH không phải là một phương thức HTTP hợp lệ trong REST. FETCH là một phương thức được sử dụng trong JavaScript để thực hiện các yêu cầu HTTP, nhưng nó không phải là một phần của tiêu chuẩn HTTP. Vì vậy, trong danh sách phương thức HTTP hợp lệ trong REST, chúng ta không bao gồm FETCH.
Mở trang câu hỏi này →
Đề bài
class and connecting to the server. const {
  MongoClient
}

= require('mongodb'); const url = 'mongodb://localhost:27017'; const dbName = 'mydatabase'; const client =

Đề bài
new MongoClient(url);
async function run() {
  try {
    await client.connect();
    console.log("Connected correctly to server");
    const db = client.db(dbName);
  }
  finally {
    await client.close();
  }
}

run().catch(console.dir);

Aconst { MongoClient } = require('mongodb'); is responsible for importing the MongoClient class.
Bconst url = 'mongodb://localhost:27017'; is responsible for setting the database name.
Cawait client.connect(); is responsible for connecting to the MongoDB server.
Dconst db = client.db(dbName); is responsible for closing the connection to the MongoDB server.
Lời giải

Để kết nối đến một server MongoDB, chúng ta cần sử dụng MongoClient class. Trong đoạn mã này, phần import MongoClient class được thực hiện bởi câu lệnh const { MongoClient } = require('mongodb');. Sau đó, chúng ta cần cung cấp thông tin kết nối đến server MongoDB, bao gồm địa chỉ và tên cơ sở dữ liệu. Câu lệnh const url = 'mongodb://localhost:27017'; được sử dụng để thiết lập địa chỉ server MongoDB, trong khi câu lệnh const dbName = 'mydatabase'; được sử dụng để thiết lập tên cơ sở dữ liệu. Để kết nối đến server MongoDB, chúng ta sử dụng phương thức connect() của MongoClient, được thực hiện bởi câu lệnh await client.connect();. Cuối cùng, để đóng kết nối đến server MongoDB, chúng ta sử dụng phương thức close() của MongoClient, được thực hiện bởi câu lệnh await client.close();.

Mở trang câu hỏi này →
Đề bài
new events.EventEmitter();
emitter.on('event', () => console.log('Event triggered'));
emitter.emit('event');
console.log('End');
AEvent triggered End
BEnd Event triggered
CTriggers the event but logs nothing due to timing
DOnly 'End' if event not emitted properly
Lời giải
Khi chạy mã Node.js này, chúng ta sẽ thấy hai dòng được in ra console. Đầu tiên là 'Event triggered' do sự kiện được kích hoạt và sau đó là 'End'. Điều này xảy ra vì chúng ta đã sử dụng phương thức emitter.on để lắng nghe sự kiện 'event' và phương thức emitter.emit để kích hoạt sự kiện này. Khi sự kiện được kích hoạt, hàm console.log('Event triggered') được thực thi và in ra 'Event triggered' vào console. Sau đó, chương trình tiếp tục thực thi dòng console.log('End') và in ra 'End'. Vì vậy, kết quả cuối cùng khi chạy mã này sẽ là 'Event triggered End'.
Mở trang câu hỏi này →
10Which of the following is a valid use of populate()?4 lựa chọnDễ86% trả lời đúng
AModel.find().populate('field')
BModel.insert().populate('field')
CModel.delete().populate('field')
DModel.update().populate('field')
Lời giải
Câu hỏi này yêu cầu bạn xác định cách sử dụng hợp lệ của phương thức populate() trong Mongoose. Populate() là một phương thức được sử dụng để tải dữ liệu từ các mô hình liên quan. Để sử dụng populate() một cách hợp lệ, bạn cần sử dụng nó với phương thức find() để tìm kiếm dữ liệu và tải dữ liệu liên quan.
Mở trang câu hỏi này →
11What is the primary difference between NestJS and ExpressJS?4 lựa chọnDễ86% trả lời đúng
ANestJS uses no routing
BExpress is synchronous only
CNestJS is modular and TypeScript-based
DExpressJS supports decorators
Lời giải
NestJS và ExpressJS là hai framework phổ biến trong việc xây dựng ứng dụng web với Node.js. Sự khác biệt chính giữa hai framework này là kiến trúc và tính năng. NestJS được thiết kế theo mô hình kiến trúc modular và hỗ trợ ngôn ngữ lập trình TypeScript, giúp tăng cường tính bảo mật và khả năng mở rộng. Trong khi đó, ExpressJS là một framework nhẹ và linh hoạt, cho phép người dùng tự do tùy chỉnh và mở rộng. Tuy nhiên, NestJS cung cấp nhiều tính năng và công cụ sẵn có, giúp giảm thiểu thời gian phát triển và tăng cường hiệu suất. Vì vậy, câu trả lời đúng là NestJS là modular và TypeScript-based.
Mở trang câu hỏi này →
12What is the role of Handlebars partials?4 lựa chọnTrung bình67% trả lời đúng
AThey allow for reusable template pieces
BThey define conditional logic in templates
CThey manage server-side routing
DThey compile templates into JavaScript
Lời giải
Handlebars partials là một tính năng quan trọng trong Handlebars, giúp bạn tái sử dụng các phần mẫu (template pieces) một cách hiệu quả. Khi bạn tạo một partial, bạn có thể sử dụng nó trong nhiều template khác nhau mà không cần phải lặp lại mã nguồn. Điều này giúp giảm thiểu sự lặp lại và tăng cường tính linh hoạt trong việc thiết kế và phát triển ứng dụng. Ví dụ, bạn có thể tạo một partial cho phần header hoặc footer của trang web, sau đó sử dụng nó trong nhiều template khác nhau. Điều này giúp bạn dễ dàng cập nhật và bảo trì mã nguồn của mình.
Mở trang câu hỏi này →
13What is an SSL certificate?4 lựa chọnDễ88% trả lời đúng
AA digital certificate that authenticates a website's identity and enables an encrypted connection.
BA file that stores user credentials.
CA software that manages database transactions.
DA protocol for transferring files between servers.
Lời giải
SSL (Secure Sockets Layer) chứng chỉ là một loại chứng chỉ số học mật mã học được sử dụng để xác thực danh tính của một trang web và cho phép kết nối mã hóa. Nó giúp đảm bảo rằng thông tin được truyền giữa trang web và người dùng được bảo mật và không bị truy cập trái phép. SSL chứng chỉ thường được sử dụng trong giao tiếp qua internet, chẳng hạn như khi người dùng truy cập vào trang web ngân hàng trực tuyến hoặc khi thực hiện giao dịch trực tuyến khác. Nó giúp tăng cường sự tin cậy và bảo mật cho giao tiếp trực tuyến.
Mở trang câu hỏi này →
APOST
BGET
CPUT
DDELETE
Lời giải
Trong RESTful API, để tạo và thay thế hoàn toàn một tài nguyên, chúng ta nên sử dụng hai phương thức HTTP khác nhau. Phương thức POST thường được sử dụng để tạo một tài nguyên mới, trong khi phương thức PUT được sử dụng để thay thế hoàn toàn một tài nguyên hiện có. Ví dụ, khi chúng ta muốn tạo một tài khoản mới, chúng ta sẽ gửi một yêu cầu POST đến API, trong khi khi muốn cập nhật thông tin của tài khoản hiện có, chúng ta sẽ gửi một yêu cầu PUT đến API. Điều này giúp phân biệt rõ ràng giữa việc tạo và thay thế tài nguyên, từ đó giúp API trở nên dễ sử dụng và dễ hiểu hơn.
Mở trang câu hỏi này →
15Which of the following is used to manage user sessions in Express?4 lựa chọnTrung bình56% trả lời đúng
APassport.js
BCookie-parser
Cbody-parser
DSession-store
Lời giải
Để quản lý các phiên làm việc của người dùng trong Express, chúng ta có thể sử dụng Passport.js. Passport.js là một thư viện phổ biến được sử dụng để thực hiện xác thực và quản lý phiên làm việc của người dùng. Nó cho phép chúng ta sử dụng nhiều phương thức xác thực khác nhau như xác thực bằng tài khoản, xác thực bằng Facebook, Google, v.v. Ngoài ra, Passport.js cũng cung cấp các tính năng như lưu trữ thông tin người dùng, kiểm soát quyền truy cập, v.v. Nói chung, Passport.js là một lựa chọn phổ biến và mạnh mẽ để quản lý phiên làm việc của người dùng trong Express.
Mở trang câu hỏi này →