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.

6.000/20.347 câuCòn 14.347
5981What is two-factor authentication?4 lựa chọn
AA security measure that requires users to enter a username and password.
BA security measure that requires users to enter a password and answer a security question.
CA security measure that requires users to provide two forms of identification, typically a password and a unique code sent to their mobile device or email address.
DA security measure that requires users to complete a CAPTCHA challenge to prove they are human.
Lời giải
Đáp án đúng: "A security measure that requires users to provide two forms of identification, typically a password and a unique code sent to their mobile device or email address.". Xác thực hai yếu tố (two-factor authentication, 2FA) đòi người dùng chứng minh danh tính bằng hai yếu tố thuộc hai nhóm khác nhau: thứ mình biết như mật khẩu, và thứ mình có như điện thoại nhận mã OTP qua SMS, email hoặc ứng dụng tạo mã TOTP; kẻ lấy được mật khẩu vẫn không đăng nhập được nếu không có thiết bị. "A security measure that requires users to enter a username and password." chỉ là đăng nhập một yếu tố, vì tên người dùng không phải bí mật. "A security measure that requires users to enter a password and answer a security question." vẫn là một yếu tố vì cả mật khẩu lẫn câu hỏi bảo mật đều thuộc nhóm thứ mình biết. "A security measure that requires users to complete a CAPTCHA challenge to prove they are human." chống bot tự động chứ không xác minh đúng người sở hữu tài khoản.
Mở trang câu hỏi này →
AValidates after save
BRuns middleware before saving
CPopulates references
DAggregates data
Lời giải
Đáp án đúng: "Runs middleware before saving". schema.pre('save', fn) đăng ký một pre hook (middleware chạy trước) của Mongoose: mỗi lần gọi doc.save() hoặc Model.create(), hàm này chạy trước khi tài liệu được ghi xuống MongoDB, nên thường dùng để băm mật khẩu bằng bcrypt hoặc gán thời điểm cập nhật; trong document middleware, từ khoá this trỏ tới chính tài liệu sắp lưu. "Validates after save" sai hai chỗ: kiểm tra hợp lệ (validation) trong Mongoose chạy trước khi lưu, còn hook chạy sau khi lưu là schema.post('save'). "Populates references" là việc của populate() khi truy vấn, thay ObjectId bằng tài liệu được tham chiếu. "Aggregates data" là việc của Model.aggregate() với pipeline như $match, $group, không liên quan hook save.
Mở trang câu hỏi này →
AGET http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26
BPOST http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26
CDELETE http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26
DPUT http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26
Lời giải
Đáp án đúng: "GET http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26". Theo quy ước REST, lấy một tài nguyên cụ thể là thao tác đọc nên dùng phương thức GET, còn đường dẫn /articles/:id chỉ đúng bài viết có _id là ObjectId 65e98f60982bf2f0d7cf5f26; trong Express, route app.get('/articles/:id') sẽ đọc giá trị này qua req.params.id rồi gọi Article.findById. Trong Postman chỉ cần chọn GET, dán URL và gửi, không cần body. "POST http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26" dùng POST, phương thức để tạo tài nguyên mới (thường gửi tới /articles kèm body JSON), không dùng để đọc. "DELETE http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26" sẽ xoá bài viết đó thay vì trả nó về. "PUT http://localhost:3000/articles/65e98f60982bf2f0d7cf5f26" dùng để thay thế toàn bộ bài viết bằng dữ liệu trong body, cũng là thao tác ghi chứ không phải đọc.
Mở trang câu hỏi này →
AAccess-Control-Allow-Methods
BAccess-Control-Allow-Origin
CContent-Type
DCache-Control
Lời giải
Đáp án đúng gồm hai ý: "Access-Control-Allow-Methods" và "Access-Control-Allow-Origin". CORS (Cross-Origin Resource Sharing, chia sẻ tài nguyên khác nguồn) là cơ chế trình duyệt dùng để quyết định trang ở origin này có được đọc phản hồi từ API ở origin khác hay không, và quyết định đó dựa vào các header Access-Control mà máy chủ trả về: một header cho biết origin nào được phép, header kia liệt kê các method như GET, POST, DELETE được chấp nhận, thường trả trong phản hồi preflight OPTIONS; middleware cors của Express đặt các header này tự động. "Content-Type" chỉ mô tả định dạng của body như application/json, không liên quan việc cho phép truy cập khác nguồn. "Cache-Control" điều khiển việc lưu đệm phản hồi ở trình duyệt hoặc proxy, cũng không bật được CORS.
Mở trang câu hỏi này →
5985What does CORS stand for?4 lựa chọn
ACross-Origin Resource Sharing
BClient-Origin Resource Service
CCustom-Origin Request Script
DCross-Origin Request Sharing
Lời giải
Đáp án đúng: "Cross-Origin Resource Sharing". CORS là cơ chế chia sẻ tài nguyên khác nguồn gốc: trình duyệt mặc định áp chính sách cùng nguồn gốc (same-origin policy), và máy chủ dùng các header như Access-Control-Allow-Origin để cho phép một origin khác (khác giao thức, tên miền hoặc cổng) đọc phản hồi; ở Express thường bật bằng gói cors. "Client-Origin Resource Service" sai vì chữ C là Cross (vượt qua, khác nguồn) chứ không phải Client, và chữ S cuối là Sharing chứ không phải Service. "Custom-Origin Request Script" sai cả ba thành phần, CORS không phải một đoạn script. "Cross-Origin Request Sharing" gần đúng nhất nhưng sai chữ R: thứ được chia sẻ là Resource (tài nguyên) như dữ liệu JSON hay hình ảnh, không phải Request.
Mở trang câu hỏi này →
Alist collections
Bshow collections
Cdb.collections()
Dcollections show
Lời giải
Đáp án đúng: "show collections". Trong MongoDB shell (mongosh hay mongo cũ), show là một lệnh trợ giúp (shell helper) theo sau là thứ cần liệt kê: show dbs liệt kê cơ sở dữ liệu, show collections liệt kê các collection của cơ sở dữ liệu đang chọn bằng use, show users liệt kê người dùng. "list collections" không phải lệnh shell; tên gần nhất là lệnh cơ sở dữ liệu listCollections, phải gọi qua db.runCommand, hoặc dùng hàm db.getCollectionNames(). "db.collections()" không phải hàm của shell; trong Node.js driver có phương thức collections() trên đối tượng Db trả về mảng đối tượng Collection trong mã ứng dụng, nhưng câu hỏi hỏi lệnh hiển thị trong shell. "collections show" đảo ngược thứ tự: cú pháp của shell helper là show đứng trước, đối tượng cần liệt kê đứng sau, nên shell sẽ báo lỗi vì không hiểu collections là lệnh gì.
Mở trang câu hỏi này →
Ares.text()
Bres.html()
Cres.json()
Dres.response()
Lời giải
Đáp án đúng: "res.json()". Trong Express, res.json() chuyển đối tượng hoặc mảng JavaScript thành chuỗi JSON bằng JSON.stringify, đặt header Content-Type là application/json rồi gửi phản hồi và kết thúc request, ví dụ res.status(200).json(user). "res.text()" không tồn tại trên đối tượng response của Express; muốn gửi văn bản thường thì dùng res.send() với một chuỗi. "res.html()" cũng không phải API của Express; HTML được gửi bằng res.send() với chuỗi HTML, res.sendFile() hoặc res.render() khi dùng template engine. "res.response()" không có trong Express, có lẽ là nhầm với chính đối tượng response; mọi thao tác gửi phản hồi đều đi qua các method như send, json, sendFile hay end.
Mở trang câu hỏi này →
Đề bài
const express = require('express');
const app = express();

app.use((req, res, next) => {
  console.log(`${req.method} request for '${req.url}'`);
  next();
});

app.get('/', (req, res) => {
  res.send('Welcome to the homepage!');
});

app.get('/about', (req, res) => {
  res.send('About us');
});

app.use((req, res) => {
  res.status(404).send('Page not found');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
AIt logs all incoming requests to the console.
BIt returns 'Welcome to the homepage!' for GET requests to the root URL.
CIt returns a 404 error for any undefined routes.
DIt only handles POST requests.
Lời giải
Đáp án đúng gồm ba ý: "It logs all incoming requests to the console.", "It returns 'Welcome to the homepage!' for GET requests to the root URL." và "It returns a 404 error for any undefined routes.". Lần theo mã: middleware đầu tiên khai báo bằng app.use không kèm đường dẫn nên chạy cho mọi request, in ra phương thức và URL (ví dụ GET request for '/about') rồi gọi next() để chuyển request xuống các route phía sau. Route app.get('/') gửi chuỗi Welcome to the homepage!, route app.get('/about') gửi About us. Middleware cuối cùng đặt sau mọi route, chỉ được chạy khi không route nào trả lời trước đó, nên nó đặt mã trạng thái 404 và gửi Page not found cho mọi đường dẫn chưa định nghĩa; app.listen mở máy chủ ở cổng 3000. Trình duyệt khi gõ địa chỉ sẽ gửi GET, nên cả ba hành vi trên đều quan sát được. "It only handles POST requests." sai vì mã chỉ đăng ký app.get, không có app.post nào; một request POST tới gốc vẫn được middleware đầu ghi log nhưng rồi rơi xuống middleware 404 vì không có route POST khớp.
Mở trang câu hỏi này →
AExpress automatically compiles JavaScript into machine code for faster execution
BExpress provides a routing system and middleware pipeline to streamline request processing
CExpress eliminates the need for external modules like `http` or `url`
DExpress includes a built-in database driver for MongoDB
Lời giải
Đáp án đúng: "Express provides a routing system and middleware pipeline to streamline request processing". Với module http thuần, lập trình viên phải tự đọc req.url và req.method, tự viết chuỗi if để định tuyến, tự phân tích query và body; Express gói những việc đó thành hệ định tuyến (app.get, app.post, express.Router, tham số đường dẫn như /users/:id) và chuỗi middleware chạy lần lượt qua next(), nhờ đó các bước như phân tích JSON, xác thực, ghi log được tách thành hàm tái sử dụng. "Express automatically compiles JavaScript into machine code" sai vì biên dịch JIT là việc của engine V8 trong Node.js, Express không can thiệp. "Express eliminates the need for external modules" sai vì Express vẫn được dựng trên module http của Node.js, chỉ che bớt chi tiết chứ không loại bỏ nó. "Express includes a built-in database driver for MongoDB" sai vì Express không kèm driver cơ sở dữ liệu nào; muốn dùng MongoDB phải cài thêm gói mongodb hoặc Mongoose.
Mở trang câu hỏi này →
AInserts a document into the collection
BUpdates a document in the collection
CDeletes a document from the collection
DRetrieves documents from the collection
Lời giải
Đáp án đúng: "Retrieves documents from the collection". db.collection.find() là thao tác đọc, tức chữ R (Read) trong CRUD: nó nhận một bộ lọc (query filter) và tuỳ chọn projection để chọn trường, rồi trả về một cursor (con trỏ) duyệt qua các document khớp điều kiện; gọi find() không kèm bộ lọc sẽ lấy toàn bộ collection. Lệnh này không làm thay đổi dữ liệu nào. "Inserts a document into the collection" là việc của insertOne() hoặc insertMany(). "Updates a document in the collection" là việc của updateOne(), updateMany() hay replaceOne(), những lệnh nhận bộ lọc cùng toán tử cập nhật như $set. "Deletes a document from the collection" là việc của deleteOne() hoặc deleteMany(). Tên find nói đúng bản chất của nó: tìm và trả về, không thêm, sửa hay xoá document.
Mở trang câu hỏi này →
AA server can support multiple databases.
BA database consists of a set of collections.
CA collection is a set of tables.
DA document is effectively a JSON document with some additional features.
Lời giải
Đáp án đúng gồm ba ý: "A server can support multiple databases.", "A database consists of a set of collections." và "A document is effectively a JSON document with some additional features.". MongoDB tổ chức dữ liệu theo tầng: một máy chủ (server, tiến trình mongod) chứa nhiều database, mỗi database gồm nhiều collection (tập hợp), mỗi collection gồm nhiều document; document được lưu dưới dạng BSON, tức JSON nhị phân có thêm kiểu dữ liệu như Date, ObjectId, số nguyên 64 bit, nên gọi là JSON có thêm tính năng. "A collection is a set of tables." sai vì MongoDB không có khái niệm bảng; chính collection mới là thứ tương đương một bảng trong SQL, và nó chứa các document chứ không chứa bảng nào.
Mở trang câu hỏi này →
A404 Not Found
B400 Bad Request
C403 Forbidden
D1
Lời giải
Đáp án đúng: "404 Not Found". Theo chuẩn HTTP, nhóm mã 4xx báo lỗi phía client và mã 404 nghĩa là máy chủ không tìm thấy tài nguyên ứng với URI được yêu cầu, ví dụ GET /users/123 khi không có người dùng mang id đó; trong Express thường viết res.status(404).json(...) để báo điều này. "400 Bad Request" dành cho yêu cầu sai cú pháp hoặc dữ liệu không hợp lệ, như body thiếu trường bắt buộc, chứ không phải tài nguyên vắng mặt. "403 Forbidden" nghĩa là máy chủ hiểu yêu cầu nhưng từ chối vì người gọi không có quyền, tài nguyên có thể vẫn tồn tại. "1" không phải mã trạng thái HTTP nào cả, vì mã trạng thái luôn là số có ba chữ số trong khoảng từ 100 đến 599.
Mở trang câu hỏi này →
Đề bài
const { MongoClient } = require('mongodb');
async function main() {
    const client = await MongoClient.connect('mongodb://localhost:27017');
    const db = client.db('db');
    await db.collection('coll').insertOne({ key: 'value' });
    const doc = await db.collection('coll').findOne({ key: 'value' });
    console.log(doc.key);
    client.close();
}
main();
Avalue
BThe inserted document's key if found
CConnection details if database accessed
DDocument object with full properties
Lời giải
Đáp án đúng: "value". Lần theo mã: MongoClient.connect mở kết nối tới máy chủ localhost cổng 27017 và trả về client, client.db('db') chọn cơ sở dữ liệu tên db, insertOne thêm vào collection coll một document có trường key mang chuỗi value, rồi findOne với bộ lọc key bằng value trả về đúng document vừa chèn, gồm _id và key. Dòng console.log(doc.key) chỉ in giá trị của trường key nên màn hình hiện chữ value, sau đó client.close() đóng kết nối. "The inserted document's key if found" mô tả bằng một điều kiện mơ hồ, trong khi document chắc chắn tồn tại vì đã được await insertOne trước đó, và thứ in ra là một chuỗi cụ thể chứ không phải lời mô tả chung. "Connection details if database accessed" sai vì mã không hề in thông tin kết nối, nó chỉ in một trường của document. "Document object with full properties" chỉ đúng nếu viết console.log(doc), khi đó sẽ thấy cả _id lẫn key; ở đây mã truy cập doc.key nên kết quả chỉ là chuỗi value.
Mở trang câu hỏi này →
AImports modules
BWrites files
CHandles HTTP requests
DExecutes JavaScript code
Lời giải
Đáp án đúng: "Imports modules". Trong hệ module CommonJS mà Node.js dùng mặc định cho tệp .js, require() nạp một module (module lõi như fs, gói trong node_modules hoặc tệp cục bộ theo đường dẫn), chạy mã của nó một lần, lưu vào bộ đệm và trả về giá trị module.exports để nơi gọi sử dụng. "Writes files" là việc của module fs, chẳng hạn fs.writeFile; require() chỉ giúp lấy module fs về chứ không tự ghi tệp. "Handles HTTP requests" là việc của module http hoặc framework như Express. "Executes JavaScript code" chỉ đúng một phần vì khi nạp lần đầu mã của module có được chạy, nhưng đó là hệ quả phụ; mục đích của require() là nhập module và trả về phần được export, không phải một hàm chạy mã tuỳ ý như eval.
Mở trang câu hỏi này →
AUsing random status codes for different endpoints
BReturning HTML responses for all API calls
CAdhering to HTTP status codes and consistent response formats
DRequiring clients to parse server logs for errors
Lời giải
Đáp án đúng: "Adhering to HTTP status codes and consistent response formats". REST API dùng chính giao thức HTTP làm hợp đồng với client: mã trạng thái (status code) như 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error cho client biết kết quả mà chưa cần đọc nội dung, còn định dạng phản hồi nhất quán (thường là JSON cùng một cấu trúc cho dữ liệu và cho lỗi) giúp client viết một bộ xử lý dùng chung cho mọi endpoint. "Using random status codes for different endpoints" phá vỡ ý nghĩa chuẩn của mã trạng thái, client không còn dựa vào mã để biết thành công hay thất bại. "Returning HTML responses for all API calls" không hợp với API vốn phục vụ chương trình đọc; HTML dành cho trình duyệt hiển thị, client phải bóc tách giao diện mới lấy được dữ liệu. "Requiring clients to parse server logs for errors" sai vì log là công cụ nội bộ của phía máy chủ, client không có quyền truy cập, và lỗi phải được trả về ngay trong phản hồi HTTP.
Mở trang câu hỏi này →
ASOAP API
BREST API
CXML API
DJSON API
Lời giải
Đáp án đúng: "REST API". YouTube Data API được thiết kế theo kiểu REST (Representational State Transfer, chuyển trạng thái biểu diễn): mỗi tài nguyên như video, playlist hay channel có một URL riêng, ứng dụng thao tác với nó bằng các phương thức HTTP chuẩn như GET, POST, PUT, DELETE và nhận dữ liệu trả về dạng JSON. Vì dịch vụ đã cung cấp REST API, phía Node.js chỉ cần gửi request HTTP (bằng fetch, axios hoặc thư viện googleapis) theo đúng kiểu đó. "SOAP API" là giao thức dựa trên thông điệp XML bọc trong envelope và mô tả bằng WSDL, YouTube không mở giao diện này nên chọn nó là không khớp với dịch vụ cần tích hợp. "XML API" chỉ gọi tên một định dạng dữ liệu chứ không phải một kiểu kiến trúc API, và YouTube cũng không dùng XML làm định dạng chính. "JSON API" cũng là tên định dạng (hoặc một đặc tả riêng tên JSON:API); REST API của YouTube có trả JSON, nhưng kiểu API phải chọn để tích hợp vẫn là REST.
Mở trang câu hỏi này →
ASimplicity and Ease of Pronunciation and Spelling brand name
BFamiliarity and Meaningfulness brand name
CDifferentiated and Distinctive brand name
DUnique of brand name
Lời giải
Đáp án đúng: "Familiarity and Meaningfulness brand name". Một tiêu chí giúp tên thương hiệu dễ nhớ là sự quen thuộc và có nghĩa: khi tên là một từ người tiêu dùng đã lưu sẵn trong trí nhớ, như Fiesta (lễ hội) của Ford, việc mã hoá tên sản phẩm mới chỉ cần gắn thêm vào một nút nhớ có sẵn, nên dễ ghi nhận và dễ nhớ lại hơn so với một từ hoàn toàn mới. "Simplicity and Ease of Pronunciation and Spelling brand name" là tiêu chí khác, nói về tên ngắn, dễ đọc, dễ đánh vần, giúp giảm công sức xử lý chứ không dựa vào việc từ đã có trong trí nhớ. "Differentiated and Distinctive brand name" nhấn vào sự khác lạ để nổi bật, thậm chí là từ mới tạo, ngược với ý tận dụng từ quen thuộc. "Unique of brand name" cũng nói về tính độc nhất, không giải thích được hiệu ứng nhờ từ đã quen trong ví dụ.
Mở trang câu hỏi này →
AAdaptability
BMeaningfulness
CMemorability
DTransferability
ELikability
Lời giải
Đáp án đúng: "Meaningfulness". Có sáu tiêu chí chọn yếu tố thương hiệu: dễ nhớ, có ý nghĩa, dễ mến, chuyển giao được, thích ứng được và bảo hộ được. Meaningfulness (có ý nghĩa) đo mức yếu tố thương hiệu truyền tải hai loại thông tin: thông tin chung về chức năng của sản phẩm, dịch vụ và thông tin cụ thể về thuộc tính, lợi ích riêng của thương hiệu, đúng hai tiêu chí trong câu hỏi, như tên ắc quy DieHard gợi cả loại sản phẩm lẫn độ bền. "Adaptability" là khả năng yếu tố thương hiệu được cập nhật theo thời gian để không lỗi thời. "Memorability" là mức dễ được chú ý và dễ nhớ lại, nhận ra, chứ không nói về thông tin được truyền tải. "Transferability" là khả năng dùng yếu tố đó cho sản phẩm mới hay ở thị trường, văn hoá khác. "Likability" là mức yếu tố thương hiệu gây thiện cảm về thẩm mỹ, vui vẻ, không phụ thuộc vào ý nghĩa nó mang.
Mở trang câu hỏi này →
ADescriptive and competitive
Bcreative and Persuasive
CDescriptive and positive
DDescriptive and Persuasive
Lời giải
Đáp án đúng: "Descriptive and Persuasive". Meaningfulness (tính có ý nghĩa) là tiêu chí chọn yếu tố thương hiệu với hai dạng ý nghĩa: ý nghĩa mô tả (descriptive), tức yếu tố gợi cho khách hàng biết ngành hàng hay chức năng của sản phẩm, và ý nghĩa thuyết phục (persuasive), tức yếu tố gợi lợi ích hay thuộc tính cụ thể khiến khách muốn mua. Ví dụ tên DieHard của pin ô tô vừa gợi loại sản phẩm vừa hứa hẹn độ bền. "Descriptive and competitive" sai vì tính cạnh tranh không phải một dạng ý nghĩa của yếu tố thương hiệu; sự khác biệt với đối thủ thuộc tiêu chí khác. "creative and Persuasive" sai vì sáng tạo là phẩm chất của quá trình thiết kế, gần với likability, không phải dạng ý nghĩa. "Descriptive and positive" sai vì tích cực là tính chất của liên tưởng nói chung, không thay được ý nghĩa thuyết phục trong định nghĩa.
Mở trang câu hỏi này →
A3
B4
C5
D6
E7
Lời giải
Đáp án đúng: "6". Theo Keller, có sáu tiêu chí chọn yếu tố thương hiệu (brand elements), chia làm hai nhóm. Ba tiêu chí mang tính xây dựng: dễ nhớ (memorability), có ý nghĩa (meaningfulness) và được yêu thích (likability). Ba tiêu chí mang tính phòng thủ: có thể chuyển giao (transferability) sang sản phẩm, thị trường khác, có thể điều chỉnh (adaptability) theo thời gian và có thể bảo hộ (protectability) về pháp lý lẫn cạnh tranh. "3" sai vì đó chỉ là số tiêu chí của riêng một nhóm, xây dựng hoặc phòng thủ. "4" sai vì thiếu hai tiêu chí, không phủ đủ cả hai nhóm. "5" sai vì vẫn thiếu một tiêu chí, thường bị nhầm khi quên khả năng điều chỉnh hoặc bảo hộ. "7" sai vì thừa một tiêu chí, có thể do gộp nhầm một yêu cầu khác như tính nổi bật vào danh sách.
Mở trang câu hỏi này →