Tất cả câu hỏi

Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.

8.820/17.722 câuCòn 8.902
Đề bài
app.get('/', (req, res) => {
  throw new Error('Test error');
}

);

Đề bài
app.listen(3000);
AContinues serving other routes normally
BPasses to next error middleware if defined
CReturns default 500 with stack trace
DHalts the server until restarted
Lời giải
Khi một lỗi được ném trong một xử lý tuyến đường Express, ứng dụng Express sẽ tự động trả về trạng thái lỗi 500 với thông tin lỗi chi tiết. Điều này xảy ra vì Express sử dụng cơ chế middleware để xử lý các lỗi. Nếu một lỗi được ném trong một xử lý tuyến đường, Express sẽ tự động tìm kiếm middleware lỗi tiếp theo để xử lý. Nếu không có middleware lỗi nào được định nghĩa, Express sẽ tự động trả về trạng thái lỗi 500. Điều này giúp đảm bảo rằng ứng dụng luôn có thể trả về thông tin lỗi cho người dùng, ngay cả khi có lỗi xảy ra trong ứng dụng.
Mở trang câu hỏi này →
AParses JSON bodies
BSets CORS headers
CHandles static file
DValidates routes
Lời giải

Trong Node với Express, `app.use(express.json())` có tác dụng giải quyết các yêu cầu JSON. Khi một yêu cầu được gửi đến ứng dụng Express, nó sẽ được kiểm tra xem có chứa dữ liệu JSON hay không. Nếu có, Express sẽ giải quyết dữ liệu đó thành một đối tượng JavaScript có thể sử dụng. Điều này cho phép bạn dễ dàng truy cập và xử lý dữ liệu JSON trong ứng dụng của mình. Ví dụ, nếu bạn có một yêu cầu POST với một cơ thể JSON như sau:

Lời giải
{
  "name": "John",
  "age": 30
}

, Express sẽ giải quyết nó thành một đối tượng như sau:

Lời giải
{
  name: 'John',
  age: 30
}

. Điều này giúp bạn dễ dàng truy cập và xử lý dữ liệu JSON trong ứng dụng của mình.

Mở trang câu hỏi này →
8803Consider the Express.js route below. What will be the response4 lựa chọncó codeDễ100% trả lời đúng
Đề bài
if the user visits /welcome? app.get('/welcome', (req, res) => {
  res.send("Hello, Express!");
}

);

AA JSON response
BThe text "Hello, Express!"
CAn error message
DA 404 page
Lời giải
Khi người dùng truy cập đường dẫn /welcome, ứng dụng Express.js sẽ thực hiện chức năng xử lý yêu cầu (app.get) và gửi phản hồi (res.send) với nội dung 'Hello, Express!'. Điều này có nghĩa là người dùng sẽ thấy nội dung 'Hello, Express!' khi truy cập đường dẫn /welcome. Vì vậy, câu trả lời đúng là 'The text "Hello, Express!"'.
Mở trang câu hỏi này →
A200
B301
C404
D500
Lời giải
Trạng thái HTTP 301 cho biết một tài nguyên đã được chuyển dời vĩnh viễn đến một địa chỉ mới. Điều này có nghĩa là tài nguyên đã được di chuyển và không còn tồn tại tại địa chỉ ban đầu. Khi một trang web hoặc ứng dụng web được chuyển dời, nó sẽ trả về trạng thái 301 để thông báo cho trình duyệt và các trình thu thập dữ liệu web biết rằng tài nguyên đã được di chuyển. Điều này giúp đảm bảo rằng người dùng và các trình thu thập dữ liệu web có thể truy cập tài nguyên mới một cách dễ dàng.
Mở trang câu hỏi này →
8805Which HTTP method is used to partially update a resource?4 lựa chọnTrung bình67% trả lời đúng
AGET
BPUT
CPATCH
DDELETE
Lời giải
Mẹo chọn phương thức HTTP phù hợp: Khi bạn muốn cập nhật một tài nguyên một phần, bạn cần sử dụng phương thức HTTP phù hợp. Phương thức GET chỉ được sử dụng để đọc dữ liệu, không được sử dụng để cập nhật dữ liệu. Phương thức PUT thường được sử dụng để cập nhật toàn bộ tài nguyên, thay thế toàn bộ dữ liệu hiện tại. Phương thức DELETE được sử dụng để xóa một tài nguyên. Phương thức PATCH được sử dụng để cập nhật một phần của tài nguyên, cho phép bạn chỉ cập nhật những phần cần thiết mà không ảnh hưởng đến dữ liệu hiện tại.
Mở trang câu hỏi này →
8806Which command is used to initialize a package.json file in a Node.js project?4 lựa chọnTrung bình67% trả lời đúng
Anpm start
Bnpm install
Cnpm init
Dnpm run
Lời giải
Để 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.
Mở trang câu hỏi này →
8807What 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ộ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.
Mở trang câu hỏi này →
Đề bài
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');
  }
}

);

Đề bài
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
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!`.
Mở trang câu hỏi này →
8809In API design, what is the primary purpose of using query parameters in a URL?4 lựa chọnTrung bình50% 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
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.
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 →
8811Consider the following code snippet for serializing an object in JavaScript4 lựa chọncó codeTrung bình67% trả lời đúng
Đề bài
using JSON. Identify which parts are responsible for serialization and deserialization. const obj = {
  name: "Alice", age: 25
}

; const serializedObj = JSON.stringify(obj); const deserializedObj =

Đề bài
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
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ã.
Mở trang câu hỏi này →
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
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.
Mở trang câu hỏi này →
8813Why is Node.js described as "single-threaded but highly scalable"?4 lựa chọnTrung bình67% trả lời đúng
AIt uses multiple threads to handle requests simultaneously
BIt leverages asynchronous, non-blocking I/O operations
CIt relies on synchronous callbacks for all operations
DIt buffers all I/O operations in memory
Lời giải
Node.js được mô tả là 'một luồng nhưng có khả năng mở rộng cao' vì nó tận dụng các hoạt động I/O không chặn, không đồng bộ. Điều này cho phép Node.js xử lý nhiều yêu cầu đồng thời mà không cần tạo nhiều luồng. Mặc dù Node.js chỉ có một luồng chính, nhưng nó có thể xử lý nhiều yêu cầu khác nhau bằng cách sử dụng các hàm callback và các thư viện như async và await. Điều này giúp Node.js có khả năng mở rộng cao mà không cần tăng số lượng luồng. Ngoài ra, Node.js sử dụng bộ nhớ đệm để lưu trữ các yêu cầu đang chờ xử lý, giúp giảm thiểu thời gian chờ đợi và tăng hiệu suất.
Mở trang câu hỏi này →
8814Which statements about Promises in Node.js are true?4 lựa chọnTrung bình67% 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
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ả. Điều này có nghĩa là Promises được sử dụng để xử lý các hoạt động bất đồng bộ, giúp chúng ta có thể viết mã đồng bộ hơn. Một Promises có thể ở một trong ba trạng thái: đang chờ đợi (pending), đã được thực hiện (fulfilled) hoặc đã bị từ chối (rejected). Điều này cho phép chúng ta có thể theo dõi trạng thái của Promises và thực hiện các hành động phù hợp. Promises có thể xử lý nhiều hoạt động bất đồng bộ cùng một lúc, giúp chúng ta có thể thực hiện các tác vụ phức tạp một cách hiệu quả.
Mở trang câu hỏi này →
8815Which runtime environment allows JavaScript to run on the server side?4 lựa chọnDễ100% trả lời đúng
AAngular
BNodeJS
CReact
DVueJS
Lời giải
Môi trường chạy thời gian cho phép JavaScript chạy trên phía máy chủ là NodeJS. NodeJS là một môi trường chạy thời gian mã nguồn mở được xây dựng trên nền tảng JavaScript, cho phép các nhà phát triển viết mã JavaScript để chạy trên máy chủ. Điều này cho phép các ứng dụng web được xây dựng bằng JavaScript có thể chạy trên cả phía máy khách và phía máy chủ, tạo điều kiện thuận lợi cho việc phát triển ứng dụng web đa nền tảng. NodeJS cung cấp một loạt các tính năng và thư viện để hỗ trợ việc phát triển ứng dụng web, bao gồm hỗ trợ các giao thức mạng, cơ sở dữ liệu và các công cụ khác.
Mở trang câu hỏi này →
8816Which Node.js built-in module is used for creating servers?4 lựa chọnTrung bình67% trả lời đúng
Afs
Bhttp
Curl
Dnet
Lời giải
Để tạo một server trong Node.js, chúng ta cần sử dụng một module được tích hợp sẵn. Trong các lựa chọn trên, module nào được sử dụng để tạo server?
Mở trang câu hỏi này →
8817Which an asynchronous method of fs module is used to check a file exists?4 lựa chọnTrung bình67% trả lời đúng
Afs.existsFile(filePath, function(exists) { . . . } );
Bfs.exists(filePath, function(exists) { . . . } );
Cfs.fileExists(filePath, function(exists) { . . . } );
Dfs.access(filePath, fs.constants.F_OK, (err) => {…});
Lời giải

Để kiểm tra một file có tồn tại hay không, bạn có thể sử dụng phương thức bất đồng bộ (asynchronous) của module fs. Trong đó, phương thức

Lời giải
fs.exists(filePath, function(exists) {
  ...
}

); là một trong những phương thức được sử dụng phổ biến. Phương thức này sẽ kiểm tra xem file tại đường dẫn filePath có tồn tại hay không, và nếu tồn tại thì sẽ trả về giá trị true, ngược lại sẽ trả về false. Ngoài ra, bạn cũng có thể sử dụng phương thức

Lời giải
fs.access(filePath, fs.constants.F_OK, (err) => {
  ...
}

); để kiểm tra file có tồn tại hay không, nhưng phương thức này sẽ trả về một lỗi nếu file không tồn tại.

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 →
8819In Node.js, which function is used to read a file asynchronously?4 lựa chọnTrung bình67% trả lời đúng
Afs.readFileSync()
Bfs.readFile()
Cfs.open()
Dfs.load()
Lời giải

Trong Node.js, để đọc một tệp tin theo cách không đồng bộ, bạn cần sử dụng hàm fs.readFile(). Hàm này cho phép bạn đọc nội dung của một tệp tin mà không cần phải chờ đợi cho đến khi tệp tin được đọc xong. Điều này giúp tăng hiệu suất và khả năng xử lý của ứng dụng. Hàm fs.readFile() nhận vào hai tham số: tên tệp tin và một hàm callback. Hàm callback sẽ được gọi khi tệp tin được đọc xong, và nó sẽ nhận vào hai tham số: lỗi (nếu có) và nội dung của tệp tin. Ví dụ:

Lời giải
fs.readFile('tên_tệp_tin.txt', 'utf8', (err, data) => {
  if (err) console.error(err); else console.log(data);
}

);

Mở trang câu hỏi này →
AOne service publishes an event to a message queue, and another service subscribes to it.
BService A makes a direct HTTP (e.g., REST or gRPC) call to Service B and waits for an immediate response.
CService A sends an email notification.
DService B processes a batch job overnight based on data from Service A.
Lời giải
Sự giao tiếp đồng bộ giữa các microservice là một quá trình trao đổi thông tin giữa các dịch vụ trong thời gian thực. Ví dụ về giao tiếp đồng bộ giữa các microservice là khi Service A thực hiện một yêu cầu HTTP trực tiếp đến Service B và chờ đợi phản hồi ngay lập tức. Điều này cho phép Service A và Service B trao đổi thông tin và thực hiện các hành động dựa trên thông tin đó trong thời gian thực. Điều này khác với giao tiếp bất đồng bộ, nơi các dịch vụ trao đổi thông tin nhưng không chờ đợi phản hồi ngay lập tức. Giao tiếp đồng bộ thường được sử dụng trong các ứng dụng cần phản hồi nhanh chóng và chính xác, chẳng hạn như các ứng dụng thương mại điện tử hoặc các ứng dụng tài chính.
Mở trang câu hỏi này →