SDN302DễKỳ 7Chuyên ngành Cập nhật 28/07/2026

Server-Side development with NodeJS, Express, and MongoDB

Ôn luyện SDN302 – Phát triển Server-Side với Node.js, Express và MongoDB: ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết, luyện thi cuối kỳ hiệu quả. Nội dung bao quát Node.js, npm, Event Loop bất đồng bộ, HTTP/HTTPS, Express.js, middleware, Express Generator, RESTful API, MongoDB & Mongoose, Mongoose Population, xác thực Passport/JWT, session & cookie, mã hoá bcrypt, upload/download file với Multer, CORS, OAuth và template EJS/Handlebars. Môn 3 tín chỉ tại FPT University, tiên quyết DBI202 và FER202.

194Câu hỏi
2Bộ đề
11Chủ đề
Thử sức tại chỗ

Trả lời ngay tại đây

Chưa trả lời câu nào
1SDN302 Chương 3 - Express.js và MiddlewareDễ
______ is a fast, unopinionated and minimalist web framework for Node.js
2Trung bình
How does Tailwind CSS differ from traditional CSS frameworks like Bootstrap?
3SDN302 Chương 9 - HTTPS, upload/download file, CORS và OAuthDễ
Which of the following is a standard security protocol used for secure communication over the internet?
Còn 3 câu nữa ở trên

Trả lời hết các câu trên để xem tổng kết, hoặc vào phiên học ngay.

Học từ ngân hàng câu hỏi

Bắt đầu một phiên học theo môn

Tiến độ của bạn luôn được tính và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.

194Ngân hàng hiện tại--Tiến độ môn

Câu hỏi của môn

24/194 câuCòn 170
5Which decorator is used in Nest.js to mark a class as a controller?4 lựa chọnTrung bình50% trả lời đúng
A@Service
B@Injectable
C@Controller
D@Component
Lời giải
Trong Nest.js, để đánh dấu một lớp là một controller, bạn cần sử dụng decorator @Controller. Điều này cho phép Nest.js nhận biết lớp đó là một controller và có thể xử lý các yêu cầu HTTP đến từ ứng dụng. @Controller được sử dụng để tạo ra các lớp controller, nơi bạn có thể định nghĩa các phương thức để xử lý các yêu cầu HTTP. Ví dụ, bạn có thể tạo một lớp controller để xử lý các yêu cầu GET, POST, PUT, DELETE,... đến từ ứng dụng. @Controller là một phần quan trọng của Nest.js và giúp bạn tạo ra các ứng dụng web mạnh mẽ và linh hoạt.
Mở trang câu hỏi này →
6Which of the following HTTP methods is idempotent?4 lựa chọnDễ75% trả lời đúng
APOST
BPUT
CDELETE
DBoth B and C
Lời giải
Các phương thức HTTP idempotent là những phương thức có thể được thực hiện nhiều lần mà không gây ra tác động khác biệt. Trong các phương thức HTTP, PUT và DELETE được coi là idempotent vì chúng không tạo ra tác động phụ thuộc vào số lần thực hiện. Ví dụ, khi bạn thực hiện PUT để cập nhật một tài nguyên, việc thực hiện PUT nhiều lần sẽ không gây ra tác động khác biệt so với việc thực hiện một lần. Tương tự, khi bạn thực hiện DELETE để xóa một tài nguyên, việc thực hiện DELETE nhiều lần sẽ không gây ra tác động khác biệt so với việc thực hiện một lần. Ngược lại, phương thức POST không được coi là idempotent vì nó tạo ra tác động phụ thuộc vào số lần thực hiện. Vì vậy, phương thức PUT và DELETE là idempotent.
Mở trang câu hỏi này →
AAn SDK provides higher-level abstractions to ease development for a target platform.
BAn SDK is primarily used to manage server load balancing.
CAn SDK grants access to platform-specific capabilities and features that may be complex to implement from scratch.
DAn SDK is a database management system.
Lời giải
Một SDK (Software Development Kit) là một bộ công cụ được thiết kế để giúp các nhà phát triển xây dựng ứng dụng cho một nền tảng cụ thể. Nó cung cấp các lớp trừu tượng cao hơn để đơn giản hóa quá trình phát triển và cung cấp truy cập vào các khả năng và tính năng đặc thù của nền tảng đó. Ví dụ, một SDK cho hệ điều hành di động có thể cung cấp các lớp trừu tượng để truy cập vào các tính năng như GPS, camera, v.v. Điều này giúp các nhà phát triển có thể tập trung vào việc xây dựng ứng dụng mà không cần phải lo lắng về các chi tiết kỹ thuật phức tạp.
Mở trang câu hỏi này →
Afs.readFile
Bfs.readSync
Cfs.readFileSync
Dfs.read
Lời giải
Để đọc file trong Node.js, bạn có thể sử dụng các phương thức sau. Đầu tiên, bạn có thể sử dụng phương thức fs.readFile(). Phương thức này đọc file và trả về dữ liệu dưới dạng chuỗi. Tuy nhiên, phương thức này không đảm bảo dữ liệu được đọc đồng bộ. Để đảm bảo dữ liệu được đọc đồng bộ, bạn có thể sử dụng phương thức fs.readFileSync(). Phương thức này đọc file và trả về dữ liệu dưới dạng chuỗi đồng thời chờ đợi cho đến khi dữ liệu được đọc hoàn tất.
Mở trang câu hỏi này →
9What is MongoDB?4 lựa chọnDễ75% trả lời đúng
AA document database.
BA relational database.
CA key-value store.
DA columnar database.
Lời giải
MongoDB là một loại cơ sở dữ liệu tài liệu, cho phép lưu trữ và quản lý dữ liệu dưới dạng tài liệu JSON (JavaScript Object Notation). Mỗi tài liệu trong MongoDB có thể có cấu trúc khác nhau và có thể chứa các trường khác nhau. Điều này làm cho MongoDB trở thành một lựa chọn tuyệt vời cho các ứng dụng cần lưu trữ và quản lý dữ liệu phức tạp. Ngoài ra, MongoDB cũng hỗ trợ các tính năng như phân tán dữ liệu, sao lưu và khôi phục dữ liệu, giúp đảm bảo tính ổn định và an toàn của dữ liệu.
Mở trang câu hỏi này →
10What is the purpose of using regex in MongoDB queries?4 lựa chọnDễ100% trả lời đúng
ATo sort the documents.
BTo filter documents based on pattern matching.
CTo update multiple documents.
DTo delete a specific document.
Lời giải
Regex (Regular Expression) trong MongoDB được sử dụng để lọc các tài liệu dựa trên việc khớp mẫu. Điều này cho phép bạn tìm kiếm các tài liệu dựa trên các mẫu phức tạp, chẳng hạn như số điện thoại, địa chỉ email hoặc các chuỗi ký tự cụ thể. Ví dụ, bạn có thể sử dụng regex để tìm kiếm các tài liệu có số điện thoại bắt đầu bằng 0x hoặc các tài liệu có địa chỉ email kết thúc bằng @gmail.com. Regex cũng cho phép bạn tìm kiếm các tài liệu dựa trên các chuỗi ký tự không có trong một số trường cụ thể. Điều này giúp bạn có thể tìm kiếm và lọc các tài liệu một cách chính xác và hiệu quả hơn.
Mở trang câu hỏi này →
Aclient.connect() is responsible for connecting to the MongoDB server.
Bcol.insertOne({ name: "Nguyen Van A", age: 20 }) is responsible for inserting a document.
Ccol.find({}).toArray() is responsible for querying documents.
Dclient.close() is responsible for deleting a document.
Lời giải

Để kết nối đến cơ sở dữ liệu MongoDB và thực hiện các hoạt động CRUD (Tạo, Đọc, Sửa, Xóa) sử dụng Node MongoDB Driver, bạn cần xác định các phần chịu trách nhiệm kết nối, chèn và truy vấn tài liệu. client.connect() là phương thức chịu trách nhiệm kết nối đến máy chủ MongoDB.

Lời giải
col.insertOne({
  name: "Nguyen Van A", age: 20
}

) là phương thức chịu trách nhiệm chèn một tài liệu mới vào cơ sở dữ liệu.

Lời giải
col.find({
}

).toArray() là phương thức chịu trách nhiệm truy vấn các tài liệu trong cơ sở dữ liệu. client.close() là phương thức chịu trách nhiệm đóng kết nối đến cơ sở dữ liệu, nhưng nó không phải là phương thức xóa tài liệu. Phương thức xóa tài liệu thường được thực hiện bằng cách sử dụng col.deleteOne() hoặc col.deleteMany().

Mở trang câu hỏi này →
ARegex can be used in the $regex operator to match string patterns.
BRegex is used to perform mathematical operations.
CRegex allows for case-insensitive searches by using the 'i' option.
DRegex can be used to insert documents into a collection.
Lời giải
Regex trong MongoDB được sử dụng để tìm kiếm và xử lý chuỗi dữ liệu. Theo đó, câu trả lời đúng là: Regex có thể được sử dụng trong toán tử $regex để khớp các mẫu chuỗi. Ngoài ra, Regex cũng cho phép thực hiện tìm kiếm không phân biệt chữ hoa chữ thường bằng cách sử dụng tùy chọn 'i'. Tuy nhiên, Regex không được sử dụng để thực hiện các phép toán toán học và cũng không được sử dụng để chèn dữ liệu vào một tập hợp. Do đó, hai câu trả lời đúng là: Regex có thể được sử dụng trong toán tử $regex để khớp các mẫu chuỗi và Regex cho phép thực hiện tìm kiếm không phân biệt chữ hoa chữ thường bằng cách sử dụng tùy chọn 'i'.
Mở trang câu hỏi này →
13What is the default port for MongoDB?4 lựa chọnDễ91% trả lời đúng
A3306
B5432
C27017
D1521
Lời giải
Câu hỏi này yêu cầu bạn chọn cổng mặc định cho MongoDB. MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL phổ biến. Để kết nối với MongoDB, bạn cần biết cổng mặc định mà nó sử dụng. Trong các lựa chọn, cổng 27017 là cổng mặc định của MongoDB. Các cổng khác như 3306, 5432 và 1521 thường được sử dụng bởi các hệ quản trị cơ sở dữ liệu khác như MySQL, PostgreSQL và Oracle.
Mở trang câu hỏi này →
14How do you add middleware to an Express application?4 lựa chọnDễ100% trả lời đúng
Aapp.run(middleware)
Bapp.use(middleware)
Capp.middleware(middleware)
Dapp.listen(middleware)
Lời giải
Để thêm middleware vào ứng dụng Express, bạn cần sử dụng phương thức app.use(). Phương thức này cho phép bạn thêm các chức năng trung gian vào ứng dụng, giúp xử lý các yêu cầu và phản hồi trước khi chúng được gửi đến ứng dụng chính. Ví dụ, bạn có thể thêm middleware để kiểm tra quyền truy cập, xác thực người dùng, hoặc xử lý các yêu cầu và phản hồi theo cách tùy chỉnh. Để sử dụng app.use(), bạn cần truyền vào một hàm middleware, hàm này sẽ được gọi trước khi ứng dụng chính xử lý yêu cầu. Ví dụ: app.use(middlewareFunction). Ngoài ra, bạn cũng có thể thêm middleware để xử lý các yêu cầu và phản hồi cho các đường dẫn cụ thể bằng cách truyền vào một mảng gồm đường dẫn và hàm middleware. Ví dụ: app.use('/path', middlewareFunction).
Mở trang câu hỏi này →
AIt limits the number of documents to be populated.
BIt works like the find method filter.
CIt filters the documents to be populated.
DIt sorts the documents to be populated
Lời giải
Trong phương thức populate() của Mongoose, match là một tùy chọn giúp lọc các tài liệu trước khi được populate. Nó hoạt động tương tự như phương thức find().filter() của Mongoose, giúp bạn chỉ lấy những tài liệu cần thiết mà không phải load toàn bộ dữ liệu. Điều này giúp tăng hiệu suất và giảm thiểu thời gian tải dữ liệu. Ngoài ra, match cũng có thể được sử dụng để lọc các tài liệu trước khi được populate, giúp bạn chỉ lấy những tài liệu cần thiết.
Mở trang câu hỏi này →
Aselect
Bpath
Cmodel
Dfield
Lời giải
Mongoose cung cấp phương thức populate() để lấy dữ liệu từ các mô hình khác. Các tùy chọn hợp lệ cho phương thức này bao gồm: - select: cho phép bạn chọn các trường cụ thể để lấy dữ liệu. - path: cho phép bạn chỉ định đường dẫn đến mô hình khác để lấy dữ liệu. - model: không phải là một tùy chọn hợp lệ cho phương thức populate(). Thay vào đó, bạn cần sử dụng path để chỉ định mô hình khác. - field: không phải là một tùy chọn hợp lệ cho phương thức populate(). Thay vào đó, bạn cần sử dụng select để chọn các trường cụ thể. Vì vậy, hai tùy chọn hợp lệ cho phương thức populate() là select và path.
Mở trang câu hỏi này →
17Consider the following code snippet4 lựa chọncó codeDễ100% trả lời đúng
Đề bài
using Express.js. Identify which routes handle GET and POST requests. app.get('/users', ...);
app.post('/users', ...);

app.listen(3000, ...) (Choose 2 answers)

AThe /users endpoint handles GET requests.
BThe /users endpoint handles POST requests.
CThe /users endpoint handles PUT requests.
DThe /users endpoint handles DELETE requests.
Lời giải

Để xác định các đường dẫn xử lý GET và POST yêu cầu, chúng ta cần xem xét các dòng mã sau: app.get('/users', ...); app.post('/users', ...). Trong đó, app.get() được sử dụng để xử lý GET yêu cầu, trong khi app.post() được sử dụng để xử lý POST yêu cầu. Điều này có nghĩa là đường dẫn /users sẽ xử lý cả GET và POST yêu cầu. Vì vậy, hai đáp án đúng là: "The /users endpoint handles GET requests." và "The /users endpoint handles POST requests."

Mở trang câu hỏi này →
18What 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 →
19What does the res.send() method do in Express.js?4 lựa chọnDễ100% trả lời đúng
AReads data from a file
BSends the HTTP response
CHandles HTTP requests
DEnds the HTTP session
Lời giải
Trong Express.js, phương thức res.send() được sử dụng để gửi phản hồi HTTP. Nó cho phép bạn trả về dữ liệu dưới dạng JSON, chuỗi hoặc đối tượng. Phương thức này cũng có thể được sử dụng để gửi phản hồi HTTP với mã trạng thái cụ thể. Ví dụ, bạn có thể sử dụng res.send() để gửi phản hồi HTTP với mã trạng thái 200 (OK) hoặc 404 (Không tìm thấy). Ngoài ra, phương thức này cũng có thể được sử dụng để gửi phản hồi HTTP với nội dung cụ thể, chẳng hạn như một chuỗi hoặc một đối tượng JSON.
Mở trang câu hỏi này →
20What is a set of documents?4 lựa chọnDễ100% trả lời đúng
AA collection
BA database
CA table
DA document
Lời giải
Một tập hợp tài liệu là một nhóm các tài liệu được tổ chức và quản lý một cách hệ thống. Nó thường được sử dụng trong các hệ thống quản lý tài liệu điện tử (EDMS) hoặc các ứng dụng quản lý nội dung (CMS). Một tập hợp tài liệu có thể chứa các loại tài liệu khác nhau như văn bản, hình ảnh, video, v.v. Nó giúp người dùng dễ dàng tìm kiếm, quản lý và truy cập các tài liệu một cách nhanh chóng và hiệu quả. Trong nhiều trường hợp, một tập hợp tài liệu được coi là một đơn vị quản lý và tổ chức các tài liệu, giúp người dùng dễ dàng quản lý và theo dõi các tài liệu.
Mở trang câu hỏi này →
21Analyze the following codes:4 lựa chọncó codeTrung bình50% trả lời đúng
Đề bài
app.get('/', (req, res) => {
  res.send('Hello, this is a GET request');
}

); app.listen(3000, ...). What is right URL to display the text "Hello, this is a GET request"?

Ahttp://localhost:3000/
Bhttp://localhost:3000/GET
Chttp://localhost:3000/POST
Dhttp://localhost:3000/PUT
Lời giải
Để tìm hiểu về URL đúng để hiển thị văn bản 'Xin chào, đây là một yêu cầu GET', chúng ta cần hiểu về cách thức hoạt động của ứng dụng Express.js. Trong đoạn mã được cung cấp, chúng ta thấy một hàm được định nghĩa để xử lý yêu cầu GET đến đường dẫn gốc '/' của ứng dụng. Hàm này sử dụng phương thức res.send() để gửi phản hồi 'Hello, this is a GET request' về cho người dùng. Đồng thời, ứng dụng cũng được lắng nghe trên cổng 3000 bằng cách sử dụng phương thức app.listen(). Vì vậy, để truy cập vào ứng dụng và xem văn bản được gửi về, người dùng cần nhập URL 'http://localhost:3000/' vào trình duyệt web. Điều này cho phép ứng dụng gửi phản hồi về cho người dùng và hiển thị văn bản mong muốn.
Mở trang câu hỏi này →
22Which middleware handles JSON data in Express.js?4 lựa chọnTrung bình60% trả lời đúng
Abody-parser
Bjson-middleware
Cexpress-json
Dexpress-parser
Lời giải
Trong Express.js, middleware xử lý dữ liệu JSON được gọi là body-parser. Nó giúp chuyển đổi dữ liệu JSON được gửi qua request thành một đối tượng JavaScript có thể sử dụng được. Để sử dụng body-parser, bạn cần cài đặt nó qua npm bằng lệnh npm install body-parser. Sau đó, bạn cần thêm middleware này vào ứng dụng Express.js của mình bằng cách sử dụng lệnh app.use(bodyParser.json()). Điều này sẽ cho phép Express.js xử lý dữ liệu JSON được gửi qua request.
Mở trang câu hỏi này →
23Which HTTP header is used to pass the OAuth token in requests?4 lựa chọnDễ75% trả lời đúng
AAuthorization
BAuthentication
CBearer
DAccess-Token
Lời giải

Để xác thực và xác thực quyền truy cập vào các tài nguyên trên web, OAuth sử dụng một loại token gọi là Access Token. Khi gửi yêu cầu HTTP, bạn cần truyền Access Token đến server để xác thực quyền truy cập. HTTP header được sử dụng để truyền Access Token trong các yêu cầu là Authorization. Header này chứa thông tin về Access Token, bao gồm loại token và giá trị token. Ví dụ, bạn có thể sử dụng header Authorization: Bearer <Access Token> để truyền Access Token. Điều này cho phép server xác thực quyền truy cập và cung cấp quyền truy cập vào các tài nguyên mong muốn.

Mở trang câu hỏi này →
24Which of the following is wrong statement?4 lựa chọnTrung bình63% trả lời đúng
ACross-origin resource sharing (CORS) is a browser mechanism which enables controlled access to resources located outside of a given domain
BThe CORS mechanism supports secure cross-origin requests and data transfers between browsers and servers
CFor security reasons, browsers don't restrict cross-origin HTTP requests initiated from scripts
DCORS allows web applications to make requests to a domain different from the one that served the web application.
Lời giải
Câu hỏi này yêu cầu bạn xác định phát biểu sai trong các lựa chọn. Các lựa chọn bao gồm: - Cross-origin resource sharing (CORS) là một cơ chế của trình duyệt cho phép truy cập kiểm soát các tài nguyên nằm ngoài một miền cho trước. - Cơ chế CORS hỗ trợ các yêu cầu và chuyển đổi dữ liệu an toàn giữa trình duyệt và máy chủ. - Do lý do bảo mật, trình duyệt không hạn chế các yêu cầu HTTP xuyên miền được khởi tạo từ các script. - CORS cho phép các ứng dụng web thực hiện yêu cầu đến miền khác với miền đã phục vụ ứng dụng web. Phát biểu sai là: - Do lý do bảo mật, trình duyệt không hạn chế các yêu cầu HTTP xuyên miền được khởi tạo từ các script. Trên thực tế, trình duyệt thực sự hạn chế các yêu cầu HTTP xuyên miền được khởi tạo từ các script để ngăn chặn các cuộc tấn công như XSS.
Mở trang câu hỏi này →