SDN301mChưa đoKỳ 7Chuyên ngành Cập nhật 28/03/2026

Server-Side development with NodeJS, Express, MongoDB - SDN301m

SDN301m cung cấp kiến thức toàn diện về lập trình Backend với NodeJS, Express framework và MongoDB. Học cách xây dựng RESTful API, bảo mật Web và triển khai ứng dụng thực tế.

109Câu hỏi
3Bộ đề
1Chủ đề

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

104/109 câuCòn 5
Areq - the request object
Bres - the response object
Cnext
Dall of the others
Lời giải
Các tham số có sẵn cho các hàm xử lý tuyến đường Express.js bao gồm các đối tượng yêu cầu và phản hồi. Đối tượng yêu cầu (req) chứa thông tin về yêu cầu từ khách hàng, bao gồm phương thức HTTP, địa chỉ URL, đầu vào và các tiêu đề. Đối tượng phản hồi (res) cho phép bạn trả về phản hồi cho khách hàng, bao gồm mã trạng thái, nội dung và các tiêu đề. Ngoài ra, tham số next cho phép bạn chuyển tiếp xử lý cho các tuyến đường khác.
Mở trang câu hỏi này →
AChanges are not backwards compatible
BChanges might not be backward compatible and might break existing code
CChanges are just bug fixes and no new features were added
DChanges will add new functionality but will not break any existing code
Lời giải
Theo quy tắc phiên bản ngữ nghĩa, khi một phiên bản npm tăng số thứ ba trong chuỗi phiên bản, điều này cho biết với người dùng về những thay đổi trong phiên bản. Theo đó, việc tăng số thứ ba trong chuỗi phiên bản chỉ cho biết những thay đổi trong phiên bản này là sửa lỗi và không thêm bất kỳ tính năng mới nào. Điều này có nghĩa là phiên bản mới này sẽ không phá vỡ bất kỳ mã hiện có nào và vẫn tương thích ngược với phiên bản trước đó. Tuy nhiên, điều này không có nghĩa là phiên bản mới này không thể phá vỡ mã hiện có, nhưng điều này không được đảm bảo.
Mở trang câu hỏi này →
Đề bài
console.log(person);
AJane
Bname: 'Jane'
Cf
DJane
Lời giải
Mã nguồn này sẽ in ra 'Jane' trên console. Vì trong file person.js, chúng ta đã export một biến tên là name với giá trị là 'Jane'. Sau đó, trong file index.js, chúng ta đã import biến này và sử dụng console.log() để in ra giá trị của nó. Tuy nhiên, trong câu hỏi, có một số lựa chọn không chính xác. Lựa chọn 'name: 'Jane'' không đúng vì chúng ta chỉ in ra giá trị của biến name, không phải là biến name nóself. Lựa chọn 'f' không đúng vì không có biến nào tên là 'f' trong mã nguồn này. Vì vậy, câu trả lời đúng duy nhất là 'Jane'.
Mở trang câu hỏi này →
Alookup
Bresolve
Cresolve4
Dreverse
Lời giải
Phương thức DNS module nào sử dụng cơ sở hạ tầng của hệ điều hành và không nhất thiết phải thực hiện giao tiếp mạng? Để trả lời câu hỏi này, chúng ta cần hiểu về các phương thức DNS module khác nhau. Lookup là phương thức tìm kiếm DNS module, nó thường thực hiện giao tiếp mạng để tìm kiếm thông tin DNS. Resolve là phương thức giải quyết DNS module, nó cũng thường thực hiện giao tiếp mạng để tìm kiếm thông tin DNS. Resolve4 là phương thức giải quyết DNS module cho IPv4, nó cũng thường thực hiện giao tiếp mạng để tìm kiếm thông tin DNS. Reverse là phương thức ngược DNS module, nó sử dụng cơ sở hạ tầng của hệ điều hành để tìm kiếm thông tin DNS mà không nhất thiết phải thực hiện giao tiếp mạng. Vì vậy, phương thức DNS module sử dụng cơ sở hạ tầng của hệ điều hành và không nhất thiết phải thực hiện giao tiếp mạng là reverse.
Mở trang câu hỏi này →
AThe libuv library
BThe c-ares library
CThe VM (like VS or Chakra)
DThe REPL module
Lời giải
Khi chạy JavaScript trong một ứng dụng Node.js, yếu tố thực thi JavaScript trong một bộ đệm Node.js là gì? Câu trả lời đúng là "The VM (như VS hoặc Chakra)". Yếu tố này thực hiện các lệnh JavaScript bằng cách sử dụng một môi trường ảo (Virtual Machine). Môi trường ảo này giống như một máy ảo, nơi mà JavaScript được thực thi mà không cần phải chạy trên trình duyệt. Môi trường ảo được sử dụng để thực thi JavaScript trong Node.js vì nó cho phép Node.js thực thi JavaScript một cách nhanh chóng và hiệu quả. Ngoài ra, môi trường ảo cũng cho phép Node.js quản lý bộ nhớ và các tài nguyên khác một cách hiệu quả.
Mở trang câu hỏi này →
ALinux
BWindows
CBothAandB
DNone
Lời giải
Để bật chế độ debug trong ứng dụng Express, bạn cần sử dụng các lệnh sau. Tuy nhiên, các lệnh này có thể khác nhau tùy thuộc vào hệ điều hành mà bạn đang sử dụng. Đối với hệ điều hành Linux, bạn có thể sử dụng lệnh 'DEBUG=express:* node app.js' để bật chế độ debug. Đối với hệ điều hành Windows, bạn có thể sử dụng lệnh 'set DEBUG=express:* & node app.js' để bật chế độ debug. Vì vậy, câu trả lời đúng là cả Linux và Windows.
Mở trang câu hỏi này →
Aftp
Bevents
Cdgram
Dhttp2
Lời giải
Các module trong Node.js là các tập tin JavaScript được Node.js sử dụng để thực hiện các chức năng khác nhau. Trong số các module được liệt kê, có ba module được xây dựng sẵn trong Node.js: events, dgram và http2. Tuy nhiên, module ftp không phải là một module được xây dựng sẵn trong Node.js. Thay vào đó, nó là một module được cài đặt riêng biệt và có thể được sử dụng để kết nối với các máy chủ FTP.
Mở trang câu hỏi này →
Ahttp.ServerRequest
Bhttp.IncomingMessage
Chttp.ClientRequest
Dhttp.ServerResponse
Lời giải
Khi một sự kiện yêu cầu được nhận trong mô-đun HTTP, loại đối số đầu tiên được truyền đến sự kiện đó, thường được đặt tên là req, là gì? Để trả lời câu hỏi này, chúng ta cần hiểu về các loại đối tượng được sử dụng trong mô-đun HTTP. Trong Node.js, mô-đun HTTP sử dụng các đối tượng như http.IncomingMessage, http.ServerRequest, http.ClientRequest và http.ServerResponse để xử lý các yêu cầu HTTP. Tuy nhiên, đối số đầu tiên được truyền đến sự kiện yêu cầu thường là một đối tượng http.IncomingMessage hoặc http.ServerRequest, tùy thuộc vào loại yêu cầu được xử lý. Đối tượng http.IncomingMessage đại diện cho một yêu cầu HTTP đang được xử lý, trong khi đối tượng http.ServerRequest đại diện cho một yêu cầu HTTP đã được xử lý và đã được chuyển đến một hàm xử lý. Vì vậy, khi một yêu cầu event được nhận trong mô-đun HTTP, loại đối số đầu tiên được truyền đến sự kiện đó thường là http.ServerRequest.
Mở trang câu hỏi này →
Aexports
Bprocess
Crequire
Dmodule
Lời giải
Khi một module được yêu cầu, Node.js sẽ tạo ra một đối tượng module wrapper để chứa module đó. Đối tượng này sẽ được gọi là module.exports. Các argument được truyền vào hàm wrapper module bao gồm module, exports, process và require. Trong đó, module là đối tượng module wrapper, exports là đối tượng exports của module, process là đối tượng process của Node.js và require là hàm require của Node.js. Tuy nhiên, chỉ có module là bắt buộc phải được truyền vào hàm wrapper module.
Mở trang câu hỏi này →
ANode being a single thread, and uses async function calls to maintain the concurrency
BEvery API of Node js are asynchronous
CNode thread keeps an event loop and whenever any task get completed, it fires the corresponding event which signals the event listener function to get executed
DAll of the others
Lời giải
Node.js là một nền tảng phát triển ứng dụng dựa trên JavaScript. Nó được thiết kế để xử lý các yêu cầu đồng thời một cách hiệu quả. Theo đó, Node.js sử dụng một luồng (event loop) để quản lý các yêu cầu và các sự kiện. Khi một yêu cầu được xử lý xong, Node.js sẽ kích hoạt sự kiện tương ứng, sau đó thông báo cho hàm xử lý sự kiện (event listener) được thực thi. Điều này cho phép Node.js xử lý các yêu cầu đồng thời mà không cần phải chờ đợi kết quả của từng yêu cầu. Ngoài ra, Node.js cũng sử dụng các hàm async để thực hiện các tác vụ đồng thời, giúp tăng hiệu suất và giảm thiểu thời gian chờ đợi.
Mở trang câu hỏi này →
AAvoid Nesting Data
BDenormalize Data
CBothAandB
DAll the answers are wrong
Lời giải
Firebase là một nền tảng phát triển ứng dụng di động và web, giúp bạn xây dựng và quản lý ứng dụng một cách dễ dàng. Khi sử dụng Firebase, có một số nguyên tắc tốt nhất mà bạn nên tuân theo để đảm bảo hiệu suất và bảo mật của ứng dụng. Một trong những nguyên tắc tốt nhất là không nên tổ chức dữ liệu quá sâu (Avoid Nesting Data). Điều này có nghĩa là bạn nên tránh tổ chức dữ liệu theo một cách quá phức tạp, mà nên sử dụng các cấu trúc dữ liệu đơn giản và dễ hiểu. Ngoài ra, việc tổ chức dữ liệu quá sâu có thể dẫn đến hiệu suất chậm và khó khăn trong việc truy vấn dữ liệu. Một nguyên tắc khác là denormalize dữ liệu (Denormalize Data). Điều này có nghĩa là bạn nên lưu trữ dữ liệu theo một cách không đồng nhất với cấu trúc dữ liệu gốc. Ví dụ, bạn có thể lưu trữ dữ liệu theo một cách phân cấp, hoặc theo một cách không phân cấp. Việc denormalize dữ liệu có thể giúp cải thiện hiệu suất và giảm thiểu thời gian truy vấn dữ liệu. Vì vậy, cả hai nguyên tắc này đều là tốt nhất khi sử dụng Firebase.
Mở trang câu hỏi này →
Akey()
Bfirebase.key()
Cfb.key()
Dfirebase().key
Lời giải
Để lấy bất kỳ khóa nào từ Firebase, chúng ta có thể sử dụng phương thức key(). Phương thức này cho phép chúng ta lấy khóa của một đối tượng trong cơ sở dữ liệu Firebase. Ví dụ, nếu chúng ta muốn lấy khóa của một đối tượng có id 'user123', chúng ta có thể sử dụng phương thức key() như sau: firebase.database().ref('users/user123').key(). Phương thức key() rất hữu ích khi chúng ta cần lấy khóa của một đối tượng để thực hiện các hành động khác nhau, chẳng hạn như xóa hoặc cập nhật dữ liệu.
Mở trang câu hỏi này →
AMultifactor authentication
BTwo-factor authentication
CSingle Sign On
DPasswords
Lời giải
Hai phương thức xác thực là hai hay nhiều phương thức xác thực được sử dụng để xác thực một người dùng. Ví dụ, một người dùng có thể sử dụng mật khẩu và mã OTP (One Time Password) để xác thực. Phương thức này được gọi là xác thực đa yếu tố (Multifactor authentication).
Mở trang câu hỏi này →
ASET
BGET
CPUT
DUSE
Lời giải
Để viết hoặc thay thế dữ liệu trên một đường dẫn xác định, chúng ta cần sử dụng phương pháp PUT. Phương pháp PUT là một trong những phương pháp cơ bản trong RESTful API, được sử dụng để tạo hoặc thay thế một tài nguyên trên máy chủ. Khi sử dụng phương pháp PUT, chúng ta cần cung cấp đầy đủ thông tin về tài nguyên mà chúng ta muốn tạo hoặc thay thế, bao gồm cả dữ liệu và các thuộc tính liên quan. Phương pháp PUT khác với phương pháp POST ở chỗ, POST được sử dụng để tạo một tài nguyên mới, trong khi PUT được sử dụng để thay thế một tài nguyên hiện có. Ngoài ra, phương pháp PUT cũng khác với phương pháp PATCH ở chỗ, PATCH được sử dụng để cập nhật một phần của tài nguyên, trong khi PUT được sử dụng để thay thế toàn bộ tài nguyên. Vì vậy, khi cần viết hoặc thay thế dữ liệu trên một đường dẫn xác định, chúng ta nên sử dụng phương pháp PUT.
Mở trang câu hỏi này →
AFront-end
BBack-end
CDatabase
DAll the answers are wrong
Lời giải
Express.js (hay đơn giản là Express) là một khung ứng dụng web cho Node.js. Nó cho phép bạn xây dựng các ứng dụng web nhanh chóng và hiệu quả. Express.js cung cấp các tính năng như hỗ trợ các phương thức HTTP, quản lý các yêu cầu và phản hồi, cũng như các công cụ khác để xây dựng các ứng dụng web mạnh mẽ. Nó thường được sử dụng để xây dựng các ứng dụng web back-end, nơi nó chịu trách nhiệm xử lý các yêu cầu và phản hồi từ phía máy khách.
Mở trang câu hỏi này →
Amongo.js
Bmongoc.js
Cmongorc.js
Dall of the mentioned
Lời giải
Khi bạn khởi động mongo shell, nó sẽ tải và phân tích một số tệp nhất định. Trong số đó có mongorc.js, đây là tệp mà mongo shell sẽ đọc và thực thi khi khởi động. Ngoài ra, còn có mongoc.js và mongo.js, mặc dù không phải là tệp được đọc mặc định khi khởi động nhưng chúng vẫn có thể được sử dụng để lưu trữ các lệnh hoặc hàm có thể được gọi từ mongo shell. Vì vậy, câu trả lời đúng là tất cả các tệp được đề cập.
Mở trang câu hỏi này →
AHive
BMapReduce
COozie
DNone of the mentioned
Lời giải
Câu hỏi này hỏi về công cụ nào có thể được sử dụng cho quá trình xử lý tập hợp dữ liệu và các hoạt động tổng hợp. Hive là một công cụ quản lý dữ liệu dựa trên SQL, cho phép bạn tạo và quản lý các bảng, thực hiện các hoạt động tổng hợp và phân tích dữ liệu. Nó cũng hỗ trợ các tính năng như tạo chỉ mục, tạo view và tạo các chức năng tùy chỉnh. Hive có thể được sử dụng để thực hiện các hoạt động batch processing và aggregation operations trên dữ liệu lớn. Ngoài ra, Hive cũng hỗ trợ các tính năng như tạo các bảng tạm thời, tạo các view và tạo các chức năng tùy chỉnh.
Mở trang câu hỏi này →
102Point out the correct statement.4 lựa chọn
ACollection is a group of MongoDB documents
BMongoDB is an open-source document database, and leading NoSQL database
CCollections do not enforce a schema
DAll of the mentioned
Lời giải
Câu trả lời đúng là "Tập hợp không tuân theo một lược đồ". Tập hợp trong MongoDB là một nhóm tài liệu MongoDB. MongoDB là một cơ sở dữ liệu tài liệu mở nguồn mở và là một trong những cơ sở dữ liệu NoSQL hàng đầu. Tập hợp không tuân theo một lược đồ có nghĩa là trong MongoDB, không có cấu trúc dữ liệu cố định được áp dụng cho các tài liệu trong tập hợp. Điều này cho phép dữ liệu được lưu trữ và quản lý linh hoạt hơn. Ví dụ, một tập hợp có thể chứa các tài liệu có cấu trúc dữ liệu khác nhau, tùy thuộc vào nhu cầu của ứng dụng.
Mở trang câu hỏi này →
Astrings
Bstring patterns
Cregular expressions
DAll the answers are correct
Lời giải
Các dạng đường dẫn hợp lệ được định nghĩa bởi phương thức yêu cầu và đường dẫn gốc. Đường dẫn gốc xác định các điểm cuối nơi yêu cầu có thể được thực hiện. Các dạng đường dẫn hợp lệ bao gồm các chuỗi, mẫu chuỗi và biểu thức chính quy. Các chuỗi là các chuỗi ký tự không chứa các ký tự đặc biệt. Mẫu chuỗi là các chuỗi chứa các ký tự đặc biệt như , *, ?, +, |, (, ), [, ], {, }, ^, $, , , , , , a, v. Biểu thức chính quy là các chuỗi chứa các ký tự đặc biệt và các biểu thức chính quy phức tạp hơn. Ví dụ, chuỗi 'hello' là một chuỗi hợp lệ, mẫu chuỗi 'h*llo' là một mẫu chuỗi hợp lệ, và biểu thức chính quy '[a-zA-Z]+' là một biểu thức chính quy hợp lệ.
Mở trang câu hỏi này →
Acluster
Basync_hooks
Cdgram
Dinspector
Lời giải
Module async_hooks trong Node.js cung cấp một API để đăng ký các callback để theo dõi các tài nguyên bất đồng bộ được tạo ra bên trong một ứng dụng Node.js. Điều này cho phép bạn theo dõi và quản lý các tài nguyên như socket, file, và các tài nguyên khác được tạo ra trong ứng dụng của mình. Async_hooks cung cấp một cách linh hoạt để theo dõi và quản lý các tài nguyên này, giúp bạn có thể viết mã hiệu suất cao và đáng tin cậy hơn. Ví dụ, bạn có thể sử dụng async_hooks để theo dõi thời gian thực hiện của các tác vụ bất đồng bộ, hoặc để phát hiện và xử lý các lỗi xảy ra trong các tác vụ này.
Mở trang câu hỏi này →