Câu hỏi: SDN302 Chương 2 - API và giao thức HTTP
22 câu trắc nghiệm kèm lời giải của môn Server-Side development with NodeJS, Express, and MongoDB, xếp theo thứ tự nhập vào ngân hàng.
Danh sách câu hỏi
20/22 câuCòn 2
1Which 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
Mở trang câu hỏi này →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.
2Which of the following statements correctly describe an SDK? (Choose 2 answers)4 lựa chọnDễ100% trả lời đúng
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ở trang câu hỏi này →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.
3Which 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.
4In http ______ method is used to retrieve information from the given server using a given URL. Requests using ____ should only retrieve data.4 lựa chọnDễ100% trả lời đúng
ANone
BGet, Get
CPost, Post
DGet, Post
Lời giải
Mở trang câu hỏi này →Trong giao thức HTTP, phương thức GET được sử dụng để lấy thông tin từ máy chủ đã cho sử dụng một URL đã cho. Yêu cầu sử dụng phương thức GET chỉ nên lấy dữ liệu.
5How to handle HTTP requests and responses in Node.js?4 lựa chọnTrung bình57% trả lời đúng
AUsing the built-in morgan module
BUsing the built-in http module
CUsing the built-in body-parser module
DUsing the built-in cookies-parser module
Lời giải
Mở trang câu hỏi này →Để xử lý yêu cầu và phản hồi HTTP trong Node.js, bạn có thể sử dụng các module tích hợp sẵn của Node.js. Một trong những cách phổ biến nhất là sử dụng module http. Module http cho phép bạn tạo và quản lý các kết nối HTTP, xử lý yêu cầu và phản hồi, cũng như gửi phản hồi lại cho khách hàng. Bạn có thể sử dụng các phương thức như http.createServer(), http.request(), http.response để xử lý các yêu cầu và phản hồi HTTP. Ngoài ra, bạn cũng có thể sử dụng các module khác như morgan để ghi nhật ký các yêu cầu và phản hồi HTTP, nhưng module http là module cơ bản và quan trọng nhất để xử lý HTTP trong Node.js.
6HTTP code means that the data does not pass validation, or is in the wrong format?4 lựa chọnTrung bình50% trả lời đúng
A100
B101
C404
D400
Lời giải
Mở trang câu hỏi này →Mã HTTP 400 được sử dụng để chỉ ra rằng dữ liệu không đáp ứng các yêu cầu xác thực hoặc không được định dạng đúng. Điều này có thể xảy ra khi dữ liệu được gửi đến một API nhưng không đáp ứng các yêu cầu về cấu trúc hoặc nội dung. Ví dụ, nếu một ứng dụng gửi một yêu cầu đăng ký với thông tin không đầy đủ, API có thể trả về mã HTTP 400 để chỉ ra rằng dữ liệu không hợp lệ. Ngoài ra, mã HTTP 400 cũng có thể được sử dụng để chỉ ra rằng dữ liệu không được định dạng đúng, chẳng hạn như khi gửi dữ liệu JSON nhưng không đúng định dạng.
7What is an API Gateway?4 lựa chọnDễ75% trả lời đúng
AA tool that manages and routes API requests.
BA database management system.
CA web server that hosts static files.
DA software development framework.
Lời giải
Mở trang câu hỏi này →Một API Gateway (Cổng Trực tiếp API) là một phần mềm hoặc dịch vụ trung gian giúp quản lý và định tuyến các yêu cầu API. Nó đóng vai trò như một điểm vào duy nhất cho các ứng dụng và dịch vụ API, giúp phân phối và quản lý lưu lượng truy cập đến các nguồn dữ liệu khác nhau. API Gateway thường được sử dụng để bảo vệ và bảo mật các API khỏi các cuộc tấn công từ bên ngoài, đồng thời giúp tối ưu hóa hiệu suất và khả năng mở rộng của các ứng dụng và dịch vụ API. Nó cũng giúp cung cấp các tính năng như xác thực và ủy quyền, cũng như theo dõi và phân tích lưu lượng truy cập API.
8Which of the following statements correctly describe Serialization?4 lựa chọnKhó29% trả lời đúng
ASerialization converts an object into a stream of bytes.
BSerialization is used to convert data into JSON format.
CSerialization saves the state of the object in an easily transmittable form.
DSerialization compresses data to save storage space.
Lời giải
Mở trang câu hỏi này →Serialization là quá trình chuyển đổi một đối tượng thành một luồng byte. Điều này cho phép lưu trữ và truyền tải đối tượng một cách dễ dàng. Ví dụ, khi bạn muốn lưu trữ một đối tượng vào file hoặc truyền tải nó qua mạng, bạn cần chuyển đổi nó thành một chuỗi byte. Điều này giúp đối tượng có thể được lưu trữ và truyền tải một cách hiệu quả. Ngoài ra, Serialization còn giúp bảo vệ dữ liệu khỏi bị thay đổi hoặc mất mát trong quá trình truyền tải.
9Each subsequent request from the client side should include the ______ in the request header4 lựa chọnDễ100% trả lời đúng
A
tokenB
passportC
cookieD
sessionLời giải
Mở trang câu hỏi này →Mỗi yêu cầu tiếp theo từ phía khách hàng nên bao gồm thông tin ______ trong tiêu đề yêu cầu. Thông tin này giúp máy chủ xác thực và xác minh tính hợp lệ của yêu cầu. Trong một số trường hợp, thông tin này có thể được sử dụng để lưu trữ thông tin về trạng thái phiên hoạt động của khách hàng. Ví dụ, trong một ứng dụng cần xác thực người dùng, thông tin này có thể là một token được tạo ra khi khách hàng đăng nhập thành công. Token này sẽ được gửi lại trong mỗi yêu cầu tiếp theo để máy chủ có thể xác thực và cung cấp thông tin cần thiết cho khách hàng.
10Consider the following code snippet4 lựa chọncó codeDễ70% trả lời đúng
using async/await: async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
}
catch (error) {
console.error('Error:', error);
}
}fetchData(); What are the advantages of using async/await in this code?
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 →Sử dụng async/await trong mã nguồn này mang lại nhiều lợi ích. Trước hết, nó giúp mã nguồn trở nên dễ đọc và dễ hiểu hơn. Điều này là do async/await cho phép chúng ta viết mã nguồn theo trình tự thời gian thực, giống như viết mã nguồn đồng bộ. Điều này giúp giảm thiểu sự phức tạp và khó hiểu của mã nguồn. Ngoài ra, async/await cũng giúp đơn giản hóa việc xử lý lỗi bằng cách sử dụng khối try/catch. Khi sử dụng async/await, chúng ta có thể dễ dàng bắt và xử lý lỗi bằng cách sử dụng khối try/catch, thay vì phải sử dụng các hàm callback phức tạp. Điều này giúp giảm thiểu sự phức tạp và khó hiểu của mã nguồn. Tuy nhiên, async/await không loại bỏ hoàn toàn nhu cầu sử dụng hàm callback. Trong một số trường hợp, chúng ta vẫn cần sử dụng hàm callback để xử lý các tác vụ phức tạp. Vì vậy, async/await không phải là giải pháp hoàn hảo, nhưng nó là một công cụ mạnh mẽ giúp chúng ta viết mã nguồn dễ đọc, dễ hiểu và dễ bảo trì.
11Which header is used to send JSON data in an API request?4 lựa chọnDễ100% trả lời đúng
AAccept-Encoding
BContent-Type
CAuthorization
DConnection
Lời giải
Mở trang câu hỏi này →Để gửi dữ liệu JSON trong một yêu cầu API, bạn cần sử dụng tiêu đề 'Content-Type' với giá trị 'application/json'. Điều này cho biết server biết rằng dữ liệu được gửi dưới dạng JSON. Ví dụ, khi gửi yêu cầu API bằng phương thức POST, bạn có thể thêm tiêu đề 'Content-Type' vào header của yêu cầu như sau:
Content-Type: application/json. Điều này giúp server hiểu và xử lý dữ liệu JSON một cách chính xác.
12What is Serialization?4 lựa chọnDễ100% trả lời đúng
AThe process of converting a data object into a series of bytes for saving or transmitting.
BThe process of converting text into an image.
CThe process of encrypting data.
DThe process of compressing data.
Lời giải
Mở trang câu hỏi này →Serialization là quá trình chuyển đổi một đối tượng dữ liệu thành một chuỗi byte để lưu trữ hoặc truyền tải. Quá trình này giúp cho dữ liệu có thể được lưu trữ trong các tệp tin hoặc truyền tải qua mạng mà không bị mất thông tin. Serialization thường được sử dụng trong các ứng dụng cần lưu trữ và tải lại dữ liệu, chẳng hạn như các trò chơi điện tử, các ứng dụng di động và các hệ thống quản lý cơ sở dữ liệu. Quá trình này cũng giúp cho dữ liệu có thể được truy cập và sử dụng lại một cách dễ dàng.
13Which of the following statements correctly describe the process of creating and starting an HTTP server in Node.js? (Choose 2 answers)4 lựa chọnTrung bình60% trả lời đúng
AThe http.createServer method is used to create a server instance.
BThe server.listen method is used to start the server and listen for incoming requests.
CThe require('http') statement is used to install the http module.
DThe npm i http command is used to require the http module in your code.
Lời giải
Mở trang câu hỏi này →Để tạo và bắt đầu một máy chủ HTTP trong Node.js, bạn cần sử dụng các phương thức và lệnh cụ thể. Đầu tiên, bạn cần tạo một đối tượng máy chủ bằng cách sử dụng phương thức http.createServer(). Phương thức này sẽ tạo một máy chủ mới và cho phép bạn cấu hình các thuộc tính và hành vi của nó. Sau đó, bạn cần sử dụng phương thức server.listen() để bắt đầu máy chủ và chờ đợi các yêu cầu từ khách hàng. Phương thức này sẽ giúp máy chủ lắng nghe trên một cổng cụ thể và xử lý các yêu cầu khi chúng đến. Ngoài ra, bạn cần sử dụng lệnh require('http') để nhập mô-đun http vào mã của bạn. Điều này sẽ cho phép bạn truy cập vào các phương thức và thuộc tính của mô-đun http.
14Analyze the following use case and determine whether an API or SDK would be more appropriate: Use Case: A developer needs to create a mobile application that interacts with the device's camera and GPS. The application must also fetch weather data from an external service.4 lựa chọnTrung bình63% trả lời đúng
AAn API is more appropriate for interacting with the device's camera and GPS.
BAn SDK is more appropriate for interacting with the device's camera and GPS.
CAn API is more appropriate for fetching weather data from an external service.
DAn SDK is more appropriate for fetching weather data from an external service.
Lời giải
Mở trang câu hỏi này →Trong trường hợp này, chúng ta cần phân tích xem nên sử dụng API hay SDK để tương tác với camera và GPS của thiết bị cũng như lấy dữ liệu thời tiết từ một dịch vụ bên ngoài. Một SDK (Toolkit phần mềm) là một tập hợp các thư viện và công cụ được thiết kế để giúp các nhà phát triển xây dựng các ứng dụng trên một nền tảng cụ thể. Trong trường hợp này, SDK sẽ cung cấp các chức năng để tương tác với camera và GPS của thiết bị, giúp giảm thiểu thời gian và công sức của nhà phát triển. Ngược lại, API (Application Programming Interface) là một giao diện được thiết kế để cho phép các ứng dụng tương tác với các dịch vụ hoặc hệ thống khác. Đối với việc lấy dữ liệu thời tiết từ một dịch vụ bên ngoài, API sẽ là lựa chọn phù hợp hơn vì nó cho phép ứng dụng của chúng ta tương tác với dịch vụ đó một cách linh hoạt và dễ dàng. Vì vậy, kết luận là chúng ta nên sử dụng SDK để tương tác với camera và GPS của thiết bị, và API để lấy dữ liệu thời tiết từ một dịch vụ bên ngoài.
15Consider the following code snippet for serializing an object in JavaScript4 lựa chọncó codeTrung bình67% trả lời đúng
using JSON. Identify which parts are responsible for serialization and deserialization. const obj = {
name: "Alice", age: 25
}; const serializedObj = JSON.stringify(obj); const deserializedObj =
JSON.parse(serializedObj);
console.log(serializedObj);// {"name":"Alice","age":25} console.log(deserializedObj); // { name: 'Alice', age: 25 }
AJSON.stringify(obj) is responsible for serialization.
BJSON.parse(serializedObj) is responsible for deserialization.
Cconsole.log(serializedObj) is responsible for serialization.
Dconsole.log(deserializedObj) is responsible for deserialization.
Lời giải
Mở trang câu hỏi này →Khi chúng ta muốn lưu trữ một đối tượng JavaScript thành một chuỗi JSON, chúng ta sử dụng hàm JSON.stringify(). Hàm này sẽ chuyển đổi đối tượng thành một chuỗi JSON. Ví dụ, trong đoạn mã trên, JSON.stringify(obj) sẽ chuyển đổi đối tượng obj thành một chuỗi JSON. Điều này được thực hiện bởi hàm JSON.stringify(), vì vậy nó chịu trách nhiệm cho quá trình serial hóa. Sau đó, chúng ta sử dụng hàm JSON.parse() để chuyển đổi chuỗi JSON trở lại thành một đối tượng JavaScript. Điều này được thực hiện bởi hàm JSON.parse(), vì vậy nó chịu trách nhiệm cho quá trình giải mã. Các câu lệnh console.log() chỉ đơn giản là in ra kết quả, chúng không chịu trách nhiệm cho quá trình serial hóa hay giải mã.
16Implement a Node.js server to handle a GET request and return the contents of a file. Which code snippet correctly achieves this?4 lựa chọnDễ100% trả lời đúng
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
Mở trang câu hỏi này →Để 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().
17In API design, what is the primary purpose of using query parameters in a URL?4 lựa chọnTrung bình67% trả lời đúng
ATo modify server-side data
BTo filter or sort resources without changing them
CTo authenticate users
DTo handle file uploads
Lời giải
Mở trang câu hỏi này →Trong thiết kế API, mục đích chính của việc sử dụng tham số truy vấn trong URL là để lọc hoặc sắp xếp các tài nguyên mà không thay đổi chúng. Điều này cho phép người dùng có thể yêu cầu dữ liệu được sắp xếp theo một cách cụ thể hoặc được lọc theo một tiêu chí nhất định mà không cần phải thay đổi dữ liệu gốc. Ví dụ, khi yêu cầu danh sách các sản phẩm, người dùng có thể thêm tham số truy vấn để yêu cầu danh sách sản phẩm được sắp xếp theo giá tăng dần hoặc giảm dần. Điều này giúp người dùng có thể dễ dàng tìm kiếm và sử dụng dữ liệu mà không cần phải thực hiện các thao tác phức tạp trên server.
18What happens when a GET request is made to `http://localhost:8080/?name=Alice` in the following Node.js code? const http = require('http'); const url = require('url'); const server =4 lựa chọncó codeDễ75% trả lời đúng
http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true); if (parsedUrl.pathname === '/') {
const name = parsedUrl.query.name; res.writeHead(200, {
'Content-Type': 'text/plain'
}
); res.end(`Hello, ${
name || 'Guest'
}
!`);
}
else {
res.writeHead(404); res.end('Not found');
}
});
server.listen(8080);ADisplays "Hello, Guest!"
BDisplays "Hello, Alice!"
CThrows a TypeError due to invalid query parsing
DReturns 404 with "Not found"
Lời giải
Mở trang câu hỏi này →Khi một yêu cầu GET được thực hiện đến địa chỉ `http://localhost:8080/?name=Alice` trong mã Node.js sau đây, chương trình sẽ phân tích URL yêu cầu và thực hiện các hành động tương ứng.
Mã Node.js sử dụng thư viện `http` để tạo một server và thư viện `url` để phân tích URL yêu cầu. Khi một yêu cầu GET được gửi đến server, chương trình sẽ phân tích URL yêu cầu và kiểm tra nếu đường dẫn yêu cầu (`pathname`) là `/`. Nếu đúng, chương trình sẽ lấy giá trị của tham số `name` từ URL yêu cầu và sử dụng nó để tạo một thông điệp chào đón. Nếu giá trị của `name` là `undefined` (do không có tham số `name` trong URL yêu cầu), chương trình sẽ sử dụng giá trị mặc định là `Guest`. Cuối cùng, chương trình sẽ trả về thông điệp chào đón với mã trạng thái 200 (OK).
Trong trường hợp này, giá trị của tham số `name` là `Alice`, vì vậy thông điệp chào đón sẽ là `Hello, Alice!`.
19What is a significant difference between a load balancer and an API Gateway?4 lựa chọnDễ100% trả lời đúng
AA load balancer distributes network traffic across multiple servers.
BAn API Gateway primarily routes requests to backend services.
CA load balancer handles request aggregation.
DAn API Gateway manages server health checks.
Lời giải
Mở trang câu hỏi này →Một trong những điểm khác biệt quan trọng giữa một bộ cân bằng tải và một cổng API là chức năng của chúng. Bộ cân bằng tải (load balancer) chủ yếu tập trung vào việc phân phối lưu lượng mạng trên nhiều máy chủ. Điều này giúp phân phối tải cân bằng, tăng hiệu suất và giảm thiểu khả năng quá tải. Ngược lại, cổng API (API Gateway) chủ yếu tập trung vào việc quản lý và định tuyến các yêu cầu đến các dịch vụ backend. Điều này bao gồm việc xác thực, mã hóa và kiểm soát truy cập. Ngoài ra, cổng API còn có thể thực hiện các chức năng khác như quản lý phiên, quản lý quyền và quản lý dữ liệu.
20Which command is used to initialize a package.json file in a Node.js project?4 lựa chọnTrung bình60% trả lời đúng
Anpm start
Bnpm install
Cnpm init
Dnpm run
Lời giải
Mở trang câu hỏi này →Để tạo một file package.json trong dự án Node.js, bạn cần sử dụng lệnh npm init. Lệnh này sẽ giúp tạo ra một file package.json mới với các thông tin cơ bản về dự án như tên dự án, phiên bản Node.js, và các tùy chọn khác. Khi bạn chạy lệnh npm init, bạn sẽ được hỏi một loạt các câu hỏi để nhập thông tin về dự án của mình. Sau khi nhập xong, lệnh sẽ tạo ra một file package.json mới với các thông tin đã nhập. File này sẽ được sử dụng để quản lý các tùy chọn và phụ thuộc của dự án.