SDN302DễKỳ 7Chuyên ngành Cập nhật 28/07/2026
Server-Side development with NodeJS, Express, and MongoDB
194Câu hỏi
2Bộ đề
11Chủ đề
Câu hỏi của môn
44/194 câuCòn 150
25What are the benefits of using HTTPS in a Node.js application? (Choose 3 answers)4 lựa chọnDễ100% trả lời đúng
AHTTPS encrypts all data transmitted between the client and server, providing a secure channel for transmitting sensitive data, such as passwords, credit card information, and personal data
BHTTPS uses SSL/TLS certificates to authenticate the server and verify that the client is communicating with the correct server.
CHTTPS can help build trust with your users by providing a secure and trustworthy environment for transmitting sensitive data.
DHTTPS can add some overhead to your application's performance, as the encryption and decryption of data requires additional computational resources
Lời giải
Mở trang câu hỏi này →HTTPS (Hypertext Transfer Protocol Secure) là một giao thức truyền thông an toàn được sử dụng để truyền tải dữ liệu giữa máy khách và máy chủ trong ứng dụng Node.js. Các lợi ích chính của việc sử dụng HTTPS bao gồm: HTTPS mã hóa tất cả dữ liệu được truyền tải giữa máy khách và máy chủ, cung cấp một kênh an toàn để truyền tải dữ liệu nhạy cảm như mật khẩu, thông tin thẻ tín dụng và dữ liệu cá nhân. Điều này giúp ngăn chặn việc truy cập trái phép và bảo vệ dữ liệu của người dùng. Ngoài ra, HTTPS sử dụng chứng chỉ SSL/TLS để xác thực máy chủ và xác minh rằng máy khách đang giao tiếp với máy chủ chính xác. Điều này giúp tăng cường tính bảo mật và ngăn chặn các cuộc tấn công giả mạo. Cuối cùng, HTTPS giúp xây dựng niềm tin với người dùng bằng cách cung cấp một môi trường an toàn và đáng tin cậy để truyền tải dữ liệu nhạy cảm.
26What is a module in NestJS?4 lựa chọnDễ100% trả lời đúng
AA function that handles HTTP requests
BA file that defines a specific feature of the app
CA global object for managing app state
DA controller for defining routes
Lời giải
Mở trang câu hỏi này →Trong NestJS, một module là một tập hợp các thành phần quan trọng của ứng dụng, bao gồm các controller, services, providers và các module con. Mỗi module được định nghĩa trong một file riêng biệt và có thể được sử dụng để tổ chức và quản lý các tính năng của ứng dụng một cách hiệu quả. Ví dụ, nếu bạn muốn tạo một ứng dụng có tính năng quản lý người dùng, bạn có thể tạo một module riêng biệt để quản lý các chức năng liên quan đến người dùng, bao gồm việc đăng nhập, đăng ký và quản lý thông tin người dùng. Điều này giúp bạn dễ dàng bảo trì và mở rộng ứng dụng mà không ảnh hưởng đến các tính năng khác.
27What is the purpose of role-based authorization?4 lựa chọnDễ86% trả lời đúng
ATo authenticate users based on their role in the organization.
BTo restrict access to certain features or resources in a web application based on a user's role in the organization.
CTo encrypt sensitive data transmitted between a client and server.
DTo prevent Cross-Site Request Forgery (CSRF) attacks.
Lời giải
Mở trang câu hỏi này →Mục đích của việc xác thực quyền truy cập dựa trên vai trò (role-based authorization) là để hạn chế truy cập vào các tính năng hoặc tài nguyên trong một ứng dụng web dựa trên vai trò của người dùng trong tổ chức. Điều này giúp đảm bảo rằng người dùng chỉ có thể truy cập vào các tính năng hoặc tài nguyên mà họ được phép, giúp tăng cường bảo mật cho ứng dụng web. Ví dụ, một người dùng có vai trò là quản trị viên có thể truy cập vào các tính năng quản trị, trong khi người dùng có vai trò là người dùng thông thường chỉ có thể truy cập vào các tính năng dành cho người dùng thông thường. Việc xác thực quyền truy cập dựa trên vai trò giúp ngăn chặn người dùng không được phép truy cập vào các tính năng hoặc tài nguyên nhạy cảm.
28What is the purpose of the "Authentication" middleware?4 lựa chọnTrung bình50% trả lời đúng
ATo validate that the anti-forgery token is present and valid in a form submission.
BTo encrypt sensitive data in web forms.
CTo handle user authentication and establish an identity for the user.
DTo prevent Cross-Site Request Forgery (CSRF) attacks.
Lời giải
Mở trang câu hỏi này →Middleware "Authentication" được sử dụng để xác thực người dùng và thiết lập danh tính cho họ. Nó giúp xác minh rằng người dùng đang cố gắng truy cập vào hệ thống là người dùng hợp lệ và có quyền truy cập vào các tài nguyên cụ thể. Quá trình xác thực này thường bao gồm việc kiểm tra tên người dùng và mật khẩu, sau đó xác thực thông tin này với cơ sở dữ liệu hoặc hệ thống xác thực khác. Nếu thông tin xác thực hợp lệ, người dùng sẽ được cấp quyền truy cập vào hệ thống và được thiết lập danh tính. Điều này giúp đảm bảo rằng chỉ những người dùng được phép mới có thể truy cập vào các tài nguyên nhạy cảm của hệ thống.
29In the Authorization header, Username and password are combined into a string ______4 lựa chọnTrung bình50% trả lời đúng
A"username&password"
B"username:password"
C"username_password"
D"username@password"
Lời giải
Mở trang câu hỏi này →Trong Authorization header, Username và password được kết hợp thành một chuỗi theo định dạng "username:password". Điều này được thực hiện bằng cách sử dụng dấu hai chấm (:) để phân cách giữa username và password. Ví dụ, nếu username là 'tài khoản' và password là 'mật khẩu', thì chuỗi kết hợp sẽ là 'tài khoản:mật khẩu'. Định dạng này được sử dụng để xác thực người dùng và đảm bảo rằng thông tin được truyền đi an toàn.
30What is the purpose of a salt in password hashing?4 lựa chọnDễ100% trả lời đúng
ATo add flavor to the hashed password.
BTo store the password in plain text in the database.
CTo add random data to the password before hashing, making it more difficult for attackers to use precomputed lookup tables to crack the hashed password.
DTo add a secret key to the password before hashing, making it more difficult for attackers to crack the hashed password.
Lời giải
Mở trang câu hỏi này →Mục đích của muối (salt) trong quá trình mã hóa mật khẩu là để thêm dữ liệu ngẫu nhiên vào mật khẩu trước khi mã hóa, làm cho nó khó hơn cho kẻ tấn công sử dụng các bảng tra cứu trước (precomputed lookup tables) để cracking mật khẩu đã mã hóa. Điều này giúp tăng cường bảo mật cho mật khẩu của người dùng. Khi muối được thêm vào, mỗi lần mã hóa sẽ tạo ra một kết quả khác nhau, ngay cả khi mật khẩu ban đầu là giống nhau. Điều này làm cho việc sử dụng các bảng tra cứu trước trở nên vô ích, vì chúng không thể được sử dụng để cracking mật khẩu đã mã hóa.
31What is database encryption?4 lựa chọnDễ100% trả lời đúng
AThe process of converting data into a secure format that can only be read with a decryption key.
BThe process of backing up data.
CThe process of normalizing data.
DThe process of querying data.
Lời giải
Mở trang câu hỏi này →Tính năng mã hóa cơ sở dữ liệu là quá trình chuyển đổi dữ liệu thành một định dạng an toàn, chỉ có thể đọc được bằng cách sử dụng khóa giải mã. Điều này giúp bảo vệ dữ liệu khỏi việc truy cập trái phép hoặc bị đánh cắp. Mã hóa cơ sở dữ liệu là một biện pháp quan trọng để bảo vệ dữ liệu nhạy cảm, chẳng hạn như thông tin cá nhân, thông tin tài chính và thông tin kinh doanh. Quá trình mã hóa cơ sở dữ liệu thường được thực hiện bằng cách sử dụng các thuật toán mã hóa mạnh mẽ và khóa giải mã được bảo vệ. Điều này giúp đảm bảo rằng dữ liệu chỉ có thể được truy cập bởi những người có quyền truy cập hợp lệ và được ủy quyền.
32Which HTTP status code indicates that a resource has been created?4 lựa chọnDễ100% trả lời đúng
A200
B404
C201
D500
Lời giải
Mở trang câu hỏi này →Trả về mã trạng thái HTTP 201 khi một tài nguyên mới được tạo thành công. Điều này thường xảy ra khi thực hiện một yêu cầu HTTP POST để tạo một tài nguyên mới trên máy chủ. Ví dụ, khi tạo một tài khoản mới trên một trang web, máy chủ sẽ trả về mã trạng thái 201 để thông báo rằng tài khoản đã được tạo thành công. Mã trạng thái 201 không chỉ được sử dụng cho việc tạo tài nguyên mới mà còn có thể được sử dụng để báo cáo rằng một tài nguyên đã được cập nhật thành công.
33What are not use cases for Mongoose in Node.js?4 lựa chọnTrung bình56% trả lời đúng
AMongoose provides a rich set of query and aggregation methods that allow you to retrieve data from the database in a flexible and efficient way
BMongoose provides built-in validation for your data, allowing you to ensure that the data meets certain criteria before it is stored in the database
CMongoose allows you to define schemas for your MongoDB collections, which specify the fields and data types that can be stored in the collection.
DIf your data schema contains complex data structures, such as arrays of arrays or deeply nested objects, you may find that Mongoose's data modeling features are flexible enough to handle your data
Lời giải
Mở trang câu hỏi này →Mongoose không phải là một công cụ phù hợp trong các trường hợp sau:
Mongoose cung cấp một bộ công cụ tìm kiếm và tích hợp dữ liệu phong phú, cho phép bạn lấy dữ liệu từ cơ sở dữ liệu theo cách linh hoạt và hiệu quả.
Mongoose cung cấp xác thực dữ liệu tích hợp sẵn, cho phép bạn đảm bảo rằng dữ liệu đáp ứng các tiêu chí nhất định trước khi lưu trữ vào cơ sở dữ liệu.
Mongoose cho phép bạn định nghĩa các lược đồ dữ liệu cho các bộ sưu tập MongoDB của mình, chỉ định các trường và loại dữ liệu có thể được lưu trữ trong bộ sưu tập.
Tuy nhiên, nếu lược đồ dữ liệu của bạn chứa các cấu trúc dữ liệu phức tạp, chẳng hạn như mảng mảng hoặc đối tượng sâu, bạn có thể thấy rằng các tính năng mô hình dữ liệu của Mongoose đủ linh hoạt để xử lý dữ liệu của bạn.
34Which of the following are correct ways to define a reference in a Mongoose schema?4 lựa chọnDễ100% trả lời đúng
A{ type: mongoose.Schema.Types.Mixed, ref: 'User' }
B{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }
C{ type: mongoose.Schema.Types.ObjectId, 'User' }
D{ type: mongoose.Schema.Types.ObjectId, reference: 'User' }
Lời giải
Mở trang câu hỏi này →Để định nghĩa một tham chiếu trong một schema Mongoose, bạn cần sử dụng thuộc tính 'ref' hoặc 'type' và 'ref'. Trong đó, 'ref' là tên của model mà bạn muốn tham chiếu. Ví dụ, nếu bạn muốn tham chiếu đến model 'User', bạn có thể sử dụng '{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }'. Điều này cho phép Mongoose tự động tạo ra mối quan hệ giữa các model.
35What is Mongoose in Node.js?4 lựa chọnDễ100% trả lời đúng
AA database
BA MongoDB object modeling tool
CAn HTTP client
DA web server framework
Lời giải
Mở trang câu hỏi này →Mongoose là một công cụ mô hình hóa đối tượng MongoDB trong Node.js. Nó cho phép bạn tạo ra các mô hình dữ liệu phức tạp và tương tác với cơ sở dữ liệu MongoDB một cách dễ dàng. Mongoose cung cấp các tính năng như tạo và xóa dữ liệu, thực hiện các truy vấn phức tạp, và quản lý các mối quan hệ giữa các mô hình dữ liệu. Nó cũng hỗ trợ các tính năng như tạo index, thực hiện các truy vấn phân trang và tìm kiếm dữ liệu theo các điều kiện cụ thể. Mongoose là một công cụ mạnh mẽ và phổ biến trong việc xây dựng các ứng dụng Node.js sử dụng MongoDB.
36Which of the following methods are used to find and update a document in Mongoose? (Choose 2 answers)4 lựa chọnDễ75% trả lời đúng
A
updateOneB
updateC
findOneAndUpdateD
findByIdAndUpdateLời giải
Mở trang câu hỏi này →Để tìm và cập nhật một tài liệu trong Mongoose, bạn có thể sử dụng các phương thức sau đây. Mongoose cung cấp các phương thức để tìm kiếm và cập nhật tài liệu một cách linh hoạt. Trong số các phương thức này, có ba phương thức được sử dụng để tìm và cập nhật một tài liệu: findOneAndUpdate, updateOne và findByIdAndUpdate.
- findOneAndUpdate: Phương thức này được sử dụng để tìm kiếm một tài liệu dựa trên các điều kiện cụ thể và sau đó cập nhật tài liệu đó. Phương thức này cho phép bạn tìm kiếm và cập nhật tài liệu trong cùng một lần gọi.
- updateOne: Phương thức này được sử dụng để cập nhật một tài liệu dựa trên các điều kiện cụ thể. Phương thức này chỉ cập nhật một tài liệu và không tìm kiếm tài liệu trước khi cập nhật.
- findByIdAndUpdate: Phương thức này được sử dụng để tìm kiếm một tài liệu dựa trên ID và sau đó cập nhật tài liệu đó. Phương thức này cho phép bạn tìm kiếm và cập nhật tài liệu trong cùng một lần gọi.
Vì vậy, để tìm và cập nhật một tài liệu trong Mongoose, bạn có thể sử dụng các phương thức findOneAndUpdate, findByIdAndUpdate.
37What type of relationship does Mongoose population create?4 lựa chọnDễ100% trả lời đúng
AOne-to-one or one-to-many
BMany-to-many only
CNo relationship
DSQL-style joins
Lời giải
Mở trang câu hỏi này →Mongoose population là một kỹ thuật được sử dụng để tạo ra mối quan hệ giữa các mô hình trong một ứng dụng Node.js sử dụng MongoDB. Khi sử dụng population, Mongoose sẽ tự động tải dữ liệu từ các mô hình khác nhau và tạo ra một mối quan hệ giữa chúng. Điều này cho phép bạn truy cập vào dữ liệu từ các mô hình khác nhau một cách dễ dàng và hiệu quả. Population có thể được sử dụng để tạo ra mối quan hệ một-một (one-to-one) hoặc một-nhiều (one-to-many), nhưng không thể được sử dụng để tạo ra mối quan hệ nhiều-nhiều (many-to-many) hoặc các loại mối quan hệ khác. Vì vậy, câu trả lời đúng cho câu hỏi này là 'One-to-one hoặc one-to-many'.
38Which statements correctly describe the use of population in Mongoose queries? (Choose 2 answers)4 lựa chọnTrung bình67% trả lời đúng
APopulation is used to join data from multiple collections.
BPopulation is used to update multiple documents.
CPopulation can be done using the populate() method in a query.
DPopulation requires the use of schemas only.
Lời giải
Mở trang câu hỏi này →Population trong Mongoose queries được sử dụng để kết nối dữ liệu từ nhiều bộ sưu tập. Điều này có thể được thực hiện bằng cách sử dụng phương thức populate() trong một truy vấn. Ví dụ, nếu bạn có một bộ sưu tập người dùng và một bộ sưu tập bài đăng, bạn có thể sử dụng population để kết nối người dùng với bài đăng của họ. Điều này cho phép bạn truy cập dữ liệu từ nhiều bộ sưu tập trong một truy vấn duy nhất. Population không được sử dụng để cập nhật nhiều bản ghi, mà thay vào đó nó được sử dụng để kết nối dữ liệu. Ngoài ra, population không chỉ được sử dụng với các schema, mà còn có thể được sử dụng với các dữ liệu không có schema. Tuy nhiên, việc sử dụng population với các schema có thể giúp bạn quản lý dữ liệu một cách hiệu quả hơn.
39What is the difference between Passport.js and JWT?4 lựa chọnDễ100% trả lời đúng
APassport.js is used for session-based authentication, while JWT is for token-based authentication
BPassport.js is only used in front-end apps, while JWT is back-end only
CPassport.js is faster than JWT
DThey serve the same purpose
Lời giải
Mở trang câu hỏi này →Passport.js và JWT là hai phương pháp xác thực khác nhau trong việc quản lý quyền truy cập vào ứng dụng. Passport.js được sử dụng cho xác thực dựa trên phiên (session-based authentication), trong khi JWT (JSON Web Token) được sử dụng cho xác thực dựa trên token (token-based authentication). Khi sử dụng Passport.js, ứng dụng sẽ lưu trữ thông tin xác thực của người dùng trong phiên, trong khi JWT lưu trữ thông tin xác thực trong một token được gửi đến người dùng và được sử dụng để xác thực cho mỗi yêu cầu. Điều này giúp giảm thiểu việc lưu trữ thông tin xác thực trên máy chủ và tăng cường bảo mật.
40Which method is used for population in Mongoose?4 lựa chọnDễ100% trả lời đúng
A
populate()B
reference()C
associate()D
link()Lời giải
Mở trang câu hỏi này →Để truy cập dữ liệu liên quan đến một đối tượng trong MongoDB sử dụng Mongoose, chúng ta cần sử dụng phương thức populate(). Phương thức này cho phép chúng ta lấy dữ liệu từ các tài liệu liên quan và thêm vào đối tượng hiện tại. Ví dụ, nếu chúng ta có một tài liệu người dùng và một tài liệu liên quan đến địa chỉ của người dùng, chúng ta có thể sử dụng populate() để lấy địa chỉ của người dùng và thêm vào tài liệu người dùng. Phương thức populate() rất hữu ích khi chúng ta cần truy cập dữ liệu liên quan trong một ứng dụng.
41How to handle asynchronous operations in a more readable and maintainable way? (Choose 2 answers)4 lựa chọnDễ100% trả lời đúng
AUsing Promises
BUsing nesting Callbacks
CUsing other control flow libraries
DUsing Async/Await
Lời giải
Mở trang câu hỏi này →Để xử lý các tác vụ bất đồng bộ một cách dễ đọc và duy trì được, chúng ta có thể sử dụng một số phương pháp sau.
Trước hết, chúng ta có thể sử dụng Promises. Promises là một cách để xử lý các tác vụ bất đồng bộ một cách dễ dàng và đọc được. Chúng ta có thể sử dụng các phương thức như then() và catch() để xử lý các tác vụ bất đồng bộ.
Thứ hai, chúng ta có thể sử dụng Async/Await. Async/Await là một cách để xử lý các tác vụ bất đồng bộ một cách dễ dàng và đọc được. Chúng ta có thể sử dụng các từ khóa async và await để xử lý các tác vụ bất đồng bộ.
Ngoài ra, chúng ta cũng có thể sử dụng các thư viện khác để xử lý các tác vụ bất đồng bộ, chẳng hạn như thư viện async/await của Node.js.
42Which statements about Promises in Node.js are true? (Choose 2 answers)4 lựa chọnTrung bình40% trả lời đúng
AA Promise represents the eventual completion (or failure) of an asynchronous operation and its resulting value.
BPromises are used to handle synchronous operations.
CA Promise is in one of three states: pending, fulfilled, or rejected.
DPromises can only handle one asynchronous operation at a time.
Lời giải
Mở trang câu hỏi này →Các câu hỏi về Promises trong Node.js là đúng như sau: Promises đại diện cho việc hoàn thành (hoặc thất bại) của một hoạt động bất đồng bộ và giá trị kết quả. Một Promises có thể được xem là trong một trong ba trạng thái: đang chờ đợi (pending), đã hoàn thành (fulfilled), hoặc đã bị từ chối (rejected). Điều này cho phép chúng ta dễ dàng quản lý các hoạt động bất đồng bộ và xử lý kết quả một cách hiệu quả.
43Which of the following are valid ways to handle errors in Node.js? (Choose 2 answers)4 lựa chọnTrung bình60% trả lời đúng
AIgnoring errors as Node.js handles them automatically
BUsing try-catch block
CUsing process.on('exit') event
DAttaching an error event listener to EventEmitter instances
Lời giải
Mở trang câu hỏi này →Để xử lý lỗi trong Node.js, có nhiều cách khác nhau. Một trong số đó là sử dụng khối try-catch. Khối try-catch cho phép bạn bắt các lỗi xảy ra trong mã và thực hiện các hành động cụ thể khi lỗi xảy ra. Ví dụ, bạn có thể sử dụng try-catch để bắt lỗi khi mở một tệp tin và thực hiện các hành động khi tệp tin không thể mở được.
Một cách khác là gắn một listener cho sự kiện error của các đối tượng EventEmitter. Các đối tượng EventEmitter trong Node.js có thể phát ra các sự kiện khác nhau, bao gồm cả sự kiện error. Bằng cách gắn một listener cho sự kiện error, bạn có thể bắt các lỗi xảy ra và thực hiện các hành động cụ thể khi lỗi xảy ra.
Cả hai cách trên đều là các cách hợp lệ để xử lý lỗi trong Node.js.
44Consider the following code snippet using async/await (fetchData with try/catch). What are the advantages of using async/await in this code? (Choose 2 answers)4 lựa chọnTrung bình60% trả lời đúng
AIt makes the code easier to read and understand.
BIt ensures the code runs synchronously.
CIt simplifies error handling with try/catch blocks.
DIt eliminates the need for callbacks entirely.
Lời giải
Mở trang câu hỏi này →Khi sử dụng async/await trong mã nguồn, có nhiều lợi ích. Trước hết, nó giúp cho mã nguồn trở nên dễ đọc và dễ hiểu hơn. Điều này là vì async/await cho phép chúng ta viết mã nguồn như một chuỗi các lệnh, thay vì phải sử dụng các callback phức tạp. Thứ hai, async/await giúp đơn giản hóa việc xử lý lỗi bằng cách sử dụng try/catch blocks. Điều này cho phép chúng ta dễ dàng bắt và xử lý các lỗi trong mã nguồn, thay vì phải sử dụng các callback phức tạp để xử lý lỗi. Ngoài ra, async/await cũng giúp giảm thiểu sự phức tạp của mã nguồn, làm cho nó trở nên dễ bảo trì và dễ hiểu hơn.