Đề thi trắc nghiệm

Đề thi lại SDN302 SP26 RE - 50 câu có đáp án

50Câu hỏi
Server-Side development with NodeJS, Express, and MongoDBMôn học

Phiên có lưu tiến độ dùng toàn bộ 50 câu của bộ đề để tiến độ khớp với máy chủ.

Phiên sắp tạo
50 câu Chế độ học Không giới hạn

Bạn cần đăng nhập để bắt đầu làm bài và lưu tiến độ.

Tổng câu hỏi

50

Thời gian làm bài

Không giới hạn

Lượt xem

3

Câu có lời giải

50

Câu có link chi tiết

50

Xem trước câu hỏi

Bấm vào từng câu để xem đáp án
#001
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
<p>Hi</p>ĐÚNG
B<p>{{greeting}}</p>
CTemplate expression if not compiled
DEmpty
Giải thích

Trong Handlebars template, {{greeting}} được hiểu là biểu thức mẫu (template expression). Khi bạn truyền dữ liệu { greeting: 'Hi' } vào template, biểu thức mẫu sẽ được thay thế bằng giá trị thực tế. Trong trường hợp này, {{greeting}} sẽ được thay thế bằng 'Hi'. Do đó, kết quả cuối cùng sẽ là <p>Hi</p>.

#002
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
It logs all incoming requests to the console.ĐÚNG
It returns 'Welcome to the homepage!' for GET requests to the root URL.ĐÚNG
It returns a 404 error for any undefined routes.ĐÚNG
DIt only handles POST requests.
Giải thích

Mô tả về mã nguồn Express.js này là một ứng dụng web đơn giản. Khi truy cập qua trình duyệt web, ứng dụng sẽ thực hiện các hành động sau. Trước hết, ứng dụng sẽ ghi lại tất cả các yêu cầu vào console thông qua app.use(). Sau đó, khi người dùng truy cập vào trang chủ (GET /), ứng dụng sẽ hiển thị thông điệp 'Welcome to the homepage!' thông qua app.get('/'). Nếu người dùng truy cập vào trang 'About us' (GET /about), ứng dụng sẽ hiển thị thông điệp 'About us' thông qua app.get('/about'). Tuy nhiên, nếu người dùng truy cập vào bất kỳ đường dẫn nào khác, ứng dụng sẽ hiển thị thông điệp 'Page not found' thông qua app.use(). Cuối cùng, ứng dụng sẽ lắng nghe trên cổng 3000 thông qua app.listen().

#003
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Afs
httpĐÚNG
Curl
Dnet
Giải thích

Để 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?

#004
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
The process of converting data into a secure format that can only be read with a decryption key.ĐÚNG
BThe process of backing up data.
CThe process of normalizing data.
DThe process of querying data.
Giải thích

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.

#005
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Defined order in codeĐÚNG
BAlphabetical order
CBased on request type
DRandom order
Giải thích

Trong Express.js, trình trung gian (middleware) được thực hiện theo một trình tự nhất định. Trình tự này được xác định bởi vị trí của chúng trong mã nguồn. Điều này có nghĩa là trình trung gian được định nghĩa trước sẽ được thực hiện trước trình trung gian được định nghĩa sau. Ví dụ, nếu bạn có một ứng dụng Express.js với hai trình trung gian được định nghĩa như sau: app.use(express.json()); app.use(logger('dev')); Thì trình trung gian express.json() sẽ được thực hiện trước trình trung gian logger('dev'). Điều này giúp đảm bảo rằng dữ liệu được xử lý một cách nhất quán và chính xác. Do đó, trình tự thực hiện của trình trung gian trong Express.js là dựa trên vị trí của chúng trong mã nguồn, không phải theo thứ tự từ A-Z, dựa trên loại yêu cầu hoặc ngẫu nhiên.

#006
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Parses JSON bodiesĐÚNG
BSets CORS headers
CHandles static file
DValidates routes
Giải thích

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: { "name": "John", "age": 30 } , Express sẽ giải quyết nó thành một đối tượng như sau: { 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.

#007
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
['cat1', 'cat2']ĐÚNG
BArray of resources if route matched
CStandard response from controller method
DEmpty
Giải thích

Trong trường hợp này, phương thức GET /cats trong controller CatsController sẽ trả về một mảng các giá trị ['cat1', 'cat2']. Điều này là vì phương thức findAll() được đánh dấu bằng @Get() và không có bất kỳ thông tin nào về việc trả về một đối tượng cụ thể. Vì vậy, NestJS sẽ tự động trả về giá trị được trả về bởi phương thức findAll(). Trong trường hợp này, giá trị được trả về là một mảng các giá trị, vì vậy NestJS sẽ trả về một mảng các giá trị ['cat1', 'cat2'].

#008
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
APUT updates partial resources, PATCH updates full resources
PUT updates full resources, PATCH updates partial resourcesĐÚNG
CPUT deletes resources, PATCH creates resources
DPUT and PATCH are identical
Giải thích

PUT và PATCH là hai phương thức thường được sử dụng trong REST APIs để cập nhật dữ liệu. PUT được sử dụng để cập nhật toàn bộ tài nguyên, trong khi PATCH được sử dụng để cập nhật một phần của tài nguyên. Ví dụ, nếu bạn muốn cập nhật thông tin của một người dùng, bạn có thể sử dụng PUT để cập nhật toàn bộ thông tin của người dùng, bao gồm cả thông tin không được thay đổi. Ngược lại, nếu bạn chỉ muốn cập nhật một phần của thông tin người dùng, chẳng hạn như cập nhật địa chỉ email, bạn có thể sử dụng PATCH để chỉ cập nhật phần đó. Điều này giúp giảm thiểu số lượng dữ liệu được gửi và nhận, cũng như giảm thiểu thời gian xử lý.

#009
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Anpm start
Bnpm install
npm initĐÚNG
Dnpm run
Giải thích

Để 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.

#010
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
To handle stateless auth with tokensĐÚNG
BTo manage sessions
CTo upload files securely
DTo enable CORS
Giải thích

Passport JWT (JSON Web Token) là một công nghệ được sử dụng trong bảo mật để xử lý xác thực người dùng mà không cần lưu trữ trạng thái. Nó cho phép tạo ra một token chứa thông tin người dùng sau khi họ đã đăng nhập thành công. Token này sẽ được gửi đến máy chủ trong mỗi yêu cầu sau đó, giúp máy chủ xác thực người dùng mà không cần lưu trữ thông tin trạng thái. Điều này giúp tăng hiệu suất và giảm thiểu khả năng bị tấn công bởi các kỹ thuật như session fixation attack.

#011
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Adefault: 18
required: trueĐÚNG
Cvalidate: {}
Dimmutable: true
Giải thích

Để xác minh giá trị trong Mongoose schema, bạn cần sử dụng một trong các cấu hình sau. Cấu hình 'required: true' chỉ yêu cầu trường đó phải có giá trị, nhưng không kiểm tra giá trị đó có hợp lệ hay không. Để kiểm tra giá trị, bạn cần sử dụng 'validate: {}', nơi bạn có thể xác định các quy tắc kiểm tra giá trị. Ví dụ, bạn có thể xác định giá trị mặc định, hoặc xác định giá trị hợp lệ cho trường đó. Cấu hình 'immutable: true' chỉ cho phép trường đó không được thay đổi sau khi được tạo, nhưng không liên quan đến việc xác minh giá trị.

#012
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AA database
A MongoDB object modeling toolĐÚNG
CAn HTTP client
DA web server framework
Giải thích

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.

#013
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ANoSQL databases guarantee immediate data consistency across all nodes
NoSQL databases support flexible schemas for rapidly changing dataĐÚNG
CNoSQL databases enforce foreign key constraints for data integrity
DNoSQL databases are optimized for complex joins across multiple tables
Giải thích

Một nhà phát triển có thể chọn một cơ sở dữ liệu NoSQL như MongoDB thay vì cơ sở dữ liệu SQL để ứng dụng phân tích thời gian thực vì một số lý do. Cơ sở dữ liệu NoSQL cho phép sử dụng cấu trúc dữ liệu linh hoạt, phù hợp với dữ liệu thay đổi nhanh chóng. Điều này giúp giảm thiểu thời gian và công sức khi thiết kế và triển khai cơ sở dữ liệu. Ngoài ra, cơ sở dữ liệu NoSQL thường có khả năng mở rộng tốt hơn, cho phép xử lý lượng dữ liệu lớn và nhanh chóng. Điều này đặc biệt quan trọng trong ứng dụng phân tích thời gian thực, nơi dữ liệu được cập nhật liên tục và cần được xử lý nhanh chóng để cung cấp thông tin chính xác và kịp thời.

#014
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Population makes the code cleaner and more intuitive when dealing with related data.ĐÚNG
BPopulation makes it harder to read and understand the code.
Population reduces the need for multiple round trips to the database.ĐÚNG
DPopulation can only be used with single-level documents.
Giải thích

Mongoose population là một tính năng mạnh mẽ giúp bạn dễ dàng quản lý dữ liệu liên quan trong MongoDB. Khi sử dụng population, bạn có thể dễ dàng truy cập và xử lý dữ liệu liên quan mà không cần phải viết nhiều mã code phức tạp. Điều này giúp code của bạn trở nên sạch sẽ và dễ hiểu hơn khi xử lý dữ liệu liên quan. Ngoài ra, population còn giúp giảm thiểu số lần yêu cầu đến cơ sở dữ liệu, từ đó cải thiện hiệu suất và tốc độ của ứng dụng. Tuy nhiên, population không phải là một tính năng bắt buộc và bạn có thể chọn sử dụng nó tùy thuộc vào nhu cầu của dự án.

#015
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ABuild a server using Node.js and MongoDB
Use Firebase as a BaaS platformĐÚNG
CRent physical servers from a data center
DDevelop all logic on the client side
Giải thích

Một startup muốn nhanh chóng phát hành một ứng dụng di động mà không phải xây dựng một backend tùy chỉnh. Trong trường hợp này, giải pháp phù hợp nhất là sử dụng Firebase như một nền tảng BaaS. Firebase cung cấp các dịch vụ như lưu trữ dữ liệu, tính toán, và phân tích dữ liệu mà không cần phải xây dựng backend từ đầu. Điều này cho phép startup tập trung vào phát triển ứng dụng di động mà không phải lo lắng về việc xây dựng và quản lý backend. Ngoài ra, Firebase cũng cung cấp các tính năng như đăng nhập, đăng ký, và bảo mật mà không cần phải viết mã từ đầu.

#016
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo validate that the anti-forgery token is present and valid in a form submission.
BTo encrypt sensitive data in web forms.
To handle user authentication and establish an identity for the user.ĐÚNG
DTo prevent Cross-Site Request Forgery (CSRF) attacks.
Giải thích

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.

#017
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AGET
BPUT
PATCHĐÚNG
DDELETE
Giải thích

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.

#018
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AManual deploy
BCLI-only deployment
Automatic deploysĐÚNG
DStatic file upload
Giải thích

Một đội ngũ muốn triển khai tự động khi mã nguồn được đẩy lên GitHub. Tính năng Heroku nào hỗ trợ điều này? Để triển khai tự động khi mã nguồn được đẩy lên GitHub, đội ngũ có thể sử dụng tính năng Automatic deploys của Heroku. Tính năng này cho phép Heroku tự động triển khai ứng dụng khi có thay đổi trong mã nguồn được đẩy lên GitHub. Điều này giúp đội ngũ tiết kiệm thời gian và công sức trong việc triển khai ứng dụng.

#019
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
find is used to retrieve documents from a collection.ĐÚNG
BupdateOne is used to delete a single document from a collection.
deleteMany is used to delete multiple documents from a collection.ĐÚNG
DinsertMany is used to update multiple documents in a collection.
Giải thích

CRUD (Create, Read, Update, Delete) là các phương thức cơ bản để tương tác với dữ liệu trong MongoDB. Trong đó, CRUD bao gồm các phương thức sau: Find (Tìm kiếm) - được sử dụng để lấy ra các tài liệu từ một tập hợp dữ liệu. UpdateOne (Cập nhật một) - được sử dụng để cập nhật một tài liệu trong một tập hợp dữ liệu. DeleteMany (Xóa nhiều) - được sử dụng để xóa nhiều tài liệu trong một tập hợp dữ liệu. InsertMany (Chèn nhiều) - được sử dụng để chèn nhiều tài liệu vào một tập hợp dữ liệu. Vì vậy, các câu trả lời đúng cho câu hỏi này là: Find được sử dụng để lấy ra các tài liệu từ một tập hợp dữ liệu và DeleteMany được sử dụng để xóa nhiều tài liệu từ một tập hợp dữ liệu.

#020
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIt uses multiple threads to handle requests simultaneously
It leverages asynchronous, non-blocking I/O operationsĐÚNG
CIt relies on synchronous callbacks for all operations
DIt buffers all I/O operations in memory
Giải thích

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.

#021
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A load balancer distributes network traffic across multiple servers.ĐÚNG
An API Gateway primarily routes requests to backend services.ĐÚNG
CA load balancer handles request aggregation.
DAn API Gateway manages server health checks.
Giải thích

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.

#022
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
<h1>Home</h1>ĐÚNG
B<h1><%= title %></h1>
CTemplate string if data not passed correctly
DDynamic content based on passed object
Giải thích

Trong câu hỏi này, chúng ta được hỏi về việc render trong template EJS. Template EJS là một loại template được sử dụng trong Node.js để render dữ liệu thành HTML. Trong ví dụ này, chúng ta có một route '/' trong ứng dụng Express.js, và một template 'home.ejs'. Template này sử dụng biểu thức <%= %> để render dữ liệu từ đối tượng được truyền vào. Đối tượng này có một thuộc tính 'title' với giá trị 'Home'. Khi render template, biểu thức <%= title %> sẽ được thay thế bằng giá trị của thuộc tính 'title', tức là 'Home'. Do đó, kết quả render sẽ là <h1>Home</h1>.

#023
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AMongoose automatically shards collections for scalability
Mongoose provides schema validation and middleware for data modelingĐÚNG
CMongoose eliminates the need for a MongoDB server
DMongoose supports SQL queries for relational data
Giải thích

Sử dụng Mongoose ODM thay vì driver MongoDB Node.js gốc mang lại một lợi ích chính là cung cấp xác thực schema và middleware cho mô hình dữ liệu. Điều này giúp đảm bảo dữ liệu được nhập vào cơ sở dữ liệu có cấu trúc và hợp lệ, giảm thiểu khả năng xảy ra lỗi do dữ liệu không đúng định dạng. Mongoose cũng cung cấp các tính năng như tạo index, thực hiện các thao tác CRUD (Create, Read, Update, Delete) dữ liệu một cách dễ dàng và hiệu quả. Ngoài ra, Mongoose hỗ trợ các tính năng như middleware, hooks và các tính năng khác giúp phát triển ứng dụng trở nên linh hoạt và mạnh mẽ hơn.

#024
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A[String]
B{ type: String }
{ type: Schema.Types.ObjectId, ref: 'SubDoc' }ĐÚNG
D[Schema.Types.Mixed]
Giải thích

Để định nghĩa một tham chiếu đến một tài liệu con trong Mongoose, bạn cần sử dụng loại dữ liệu ObjectId và tham số ref. Tham số ref được sử dụng để chỉ định tên của tài liệu con mà bạn muốn tham chiếu đến. Ví dụ, nếu bạn muốn tham chiếu đến một tài liệu con có tên là 'SubDoc', bạn sẽ sử dụng { type: Schema.Types.ObjectId, ref: 'SubDoc' }. Điều này cho phép Mongoose tự động tạo ra các liên kết giữa các tài liệu và thực hiện các hoạt động CRUD (Tạo, Đọc, Cập nhật, Xóa) một cách dễ dàng.

#025
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
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.
If 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ĐÚNG
Giải thích

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.

#026
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
http://localhost:3000/ĐÚNG
Bhttp://localhost:3000/GET
Chttp://localhost:3000/POST
Dhttp://localhost:3000/PUT
Giải thích

Để tìm hiểu về URL đúng để hiển thị văn bản 'Xin chào, đây là một yêu cầu GET', chúng ta cần hiểu về cách thức hoạt động của ứng dụng Express.js. Trong đoạn mã được cung cấp, chúng ta thấy một ứng dụng Express.js được tạo và lắng nghe trên cổng 3000. Khi một yêu cầu GET được gửi đến đường dẫn '/', ứng dụng sẽ trả về văn bản 'Hello, this is a GET request'. Điều này có nghĩa là URL đúng để hiển thị văn bản này là đường dẫn '/' trên cổng 3000. Vì vậy, URL đúng là http://localhost:3000/.

#027
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
InformationĐÚNG
BStandard 404 for unmatched routes elsewhere
CSends custom message based on path match
DEmpty if no content specified in handler
Giải thích

Khi gửi một yêu cầu GET đến đường dẫn "/info" trong ứng dụng Express này, ứng dụng sẽ trả về thông tin "Information". Điều này là vì trong mã nguồn, chúng ta đã định nghĩa một hàm xử lý yêu cầu GET đến đường dẫn "/info" bằng cách sử dụng phương thức `app.get()`. Trong hàm này, chúng ta sử dụng phương thức `res.send()` để trả về thông tin "Information" cho người dùng. Điều này cho thấy ứng dụng sẽ trả về thông tin này bất kể người dùng gửi yêu cầu GET đến đường dẫn "/info" như thế nào.

#028
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
The /users endpoint handles GET requests.ĐÚNG
The /users endpoint handles POST requests.ĐÚNG
CThe /users endpoint handles PUT requests.
DThe /users endpoint handles DELETE requests.
Giải thích

Để xác định các đường dẫn xử lý GET và POST yêu cầu, chúng ta cần xem xét các dòng mã sau: app.get('/users', ...); app.post('/users', ...). Trong đó, app.get() được sử dụng để xử lý GET yêu cầu, trong khi app.post() được sử dụng để xử lý POST yêu cầu. Điều này có nghĩa là đường dẫn /users sẽ xử lý cả GET và POST yêu cầu. Vì vậy, hai đáp án đúng là: "The /users endpoint handles GET requests." và "The /users endpoint handles POST requests."

#029
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAccess-Control-Allow-Methods
BAccess-Control-Max-Age
Access-Control-Allow-OriginĐÚNG
DAccess-Control-Allow-Headers
Giải thích

Trong CORS (Cross-Origin Resource Sharing), HTTP header được sử dụng để chỉ định các miền được phép truy cập tài nguyên là Access-Control-Allow-Origin. Header này cho phép máy chủ web chỉ định các miền được phép truy cập tài nguyên của nó, giúp ngăn chặn truy cập không hợp lệ từ các miền khác. Ví dụ, nếu máy chủ web có miền example.com và muốn cho phép miền khác truy cập tài nguyên của nó, thì máy chủ web sẽ trả về HTTP header Access-Control-Allow-Origin với giá trị * hoặc miền cụ thể như example.com. Điều này giúp đảm bảo rằng tài nguyên của máy chủ web được truy cập an toàn và hợp lệ.

#030
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A{ type: String }
B{ ref: 'User' }
{ type: Schema.Types.ObjectId, ref: 'User' }ĐÚNG
D{ id: ObjectId }
Giải thích

Để xác định một tham chiếu ObjectId hợp lệ trong Mongoose, bạn cần sử dụng thuộc tính 'type' và 'ref'. 'type' phải được đặt thành 'Schema.Types.ObjectId' để chỉ định rằng nó là một chuỗi ObjectId. 'ref' được sử dụng để chỉ định tên của mô hình mà ObjectId này tham chiếu. Ví dụ, nếu bạn muốn tham chiếu đến mô hình 'User', bạn sẽ sử dụng '{ type: Schema.Types.ObjectId, ref: 'User' }'. Điều này cho phép Mongoose tự động tạo ra các liên kết giữa các mô hình dựa trên ObjectId.

#031
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ANone
Get, GetĐÚNG
CPost, Post
DGet, Post
Giải thích

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.

#032
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
HyperText Transfer Protocol SecureĐÚNG
BHyperText Transfer Protocol Simple
CHyperText Transfer Protocol Standard
DHyperText Transfer Protocol Script
Giải thích

HTTPS là viết tắt của HyperText Transfer Protocol Secure, là một giao thức truyền tải siêu văn bản an toàn. Nó là một phiên bản được mã hóa của giao thức HTTP (HyperText Transfer Protocol), được sử dụng để truyền tải dữ liệu giữa máy chủ và trình duyệt web. HTTPS sử dụng chứng chỉ SSL/TLS để mã hóa dữ liệu, đảm bảo rằng dữ liệu được truyền tải an toàn và không bị truy cập trái phép. Điều này giúp bảo vệ thông tin cá nhân và bảo mật cho các giao dịch trực tuyến. Ngoài ra, HTTPS cũng giúp cải thiện uy tín và tin cậy của trang web, vì nó cho biết rằng trang web đó đã được chứng nhận và được bảo vệ bởi một tổ chức uy tín.

#033
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A3306
B5432
27017ĐÚNG
D1521
Giải thích

Câu hỏi này yêu cầu bạn chọn cổng mặc định cho MongoDB. MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL phổ biến. Để kết nối với MongoDB, bạn cần biết cổng mặc định mà nó sử dụng. Trong các lựa chọn, cổng 27017 là cổng mặc định của MongoDB. Các cổng khác như 3306, 5432 và 1521 thường được sử dụng bởi các hệ quản trị cơ sở dữ liệu khác như MySQL, PostgreSQL và Oracle.

#034
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AHTML
BCSV
CXML
JSONĐÚNG
Giải thích

Trong RESTful APIs, định dạng dữ liệu trao đổi được khuyến nghị là JSON. JSON (JavaScript Object Notation) là một định dạng dữ liệu nhẹ, dễ đọc và dễ hiểu. Nó được sử dụng rộng rãi trong các ứng dụng web và API để trao đổi dữ liệu giữa máy chủ và khách hàng. JSON cho phép lưu trữ và truyền tải dữ liệu dưới dạng các đối tượng JSON, bao gồm các thuộc tính và giá trị. Điều này làm cho nó trở thành một lựa chọn phổ biến cho các ứng dụng cần trao đổi dữ liệu nhanh chóng và hiệu quả. Ví dụ, khi một ứng dụng yêu cầu dữ liệu từ một API, API sẽ trả về dữ liệu dưới dạng JSON, và ứng dụng sẽ xử lý dữ liệu đó. JSON cũng hỗ trợ các tính năng như dữ liệu có thể được đọc và viết dễ dàng, dữ liệu có thể được kiểm tra và xác minh, và dữ liệu có thể được bảo mật bằng cách sử dụng các phương thức mã hóa.

#035
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Router files like index.js and users.jsĐÚNG
BTemplate files for views and layouts
CModel definitions for database interactions
DAsset folders for static content serving
Giải thích

Khi sử dụng Express Generator để tạo một ứng dụng Express mới, nó sẽ tự động tạo ra một số thư mục và tệp tin quan trọng. Trong thư mục `/routes`, Express Generator sẽ tạo ra các tệp tin router như `index.js` và `users.js`. Các tệp tin này chứa các hàm xử lý yêu cầu HTTP và trả về phản hồi cho các route tương ứng. Ví dụ, `index.js` có thể chứa hàm xử lý yêu cầu GET cho route `/` và trả về một trang chủ, trong khi `users.js` có thể chứa hàm xử lý yêu cầu GET cho route `/users` và trả về danh sách người dùng. Các tệp tin router này giúp phân tách logic ứng dụng và làm cho mã nguồn trở nên dễ đọc và dễ bảo trì hơn.

#036
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo modify server-side data
To filter or sort resources without changing themĐÚNG
CTo authenticate users
DTo handle file uploads
Giải thích

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.

#037
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Validation errorĐÚNG
BSaves document with default values if possible
CHandles error and continues execution silently
DLogs schema min violation details
Giải thích

Khi mã Mongoose gặp lỗi xác thực, nó sẽ tự động tạo ra một lỗi và dừng việc thực hiện. Trong trường hợp này, khi tạo một tài liệu với độ tuổi 17, Mongoose sẽ phát hiện ra rằng độ tuổi này không đáp ứng được yêu cầu tối thiểu là 18. Do đó, nó sẽ tạo ra một lỗi và in ra 'Validation error' lên console.

#038
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A Promise represents the eventual completion (or failure) of an asynchronous operation and its resulting value.ĐÚNG
BPromises are used to handle synchronous operations.
A Promise is in one of three states: pending, fulfilled, or rejected.ĐÚNG
DPromises can only handle one asynchronous operation at a time.
Giải thích

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ả.

#039
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
refĐÚNG
Blink
Cpopulate
Djoin
Giải thích

Trong khi xây dựng schema, để định nghĩa một tham chiếu cho dân số, chúng ta sử dụng từ khóa nào? Câu trả lời đúng là "ref". Từ khóa "ref" được sử dụng để chỉ định một tham chiếu đến một tài nguyên khác trong schema. Điều này cho phép chúng ta định nghĩa một mối quan hệ giữa các tài nguyên khác nhau. Ví dụ, nếu chúng ta có một tài nguyên "users" và một tài nguyên "orders", chúng ta có thể sử dụng từ khóa "ref" để định nghĩa một tham chiếu từ "orders" đến "users". Điều này giúp chúng ta xây dựng một schema phức tạp và linh hoạt hơn.

#040
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
JSON.stringify(obj) is responsible for serialization.ĐÚNG
JSON.parse(serializedObj) is responsible for deserialization.ĐÚNG
Cconsole.log(serializedObj) is responsible for serialization.
Dconsole.log(deserializedObj) is responsible for deserialization.
Giải thích

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ã.

#041
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aapp.static()
express.static()ĐÚNG
Cstatic.use()
Dapp.serveStatic()
Giải thích

Để phục vụ các tệp tin tĩnh trong Express, bạn cần sử dụng phương thức express.static(). Phương thức này cho phép bạn chỉ định thư mục chứa các tệp tin tĩnh mà bạn muốn phục vụ. Ví dụ, nếu bạn muốn phục vụ các tệp tin tĩnh trong thư mục 'public', bạn có thể sử dụng mã sau: app.use(express.static('public')). Phương thức express.static() là một trong những phương thức mạnh mẽ và phổ biến nhất trong Express để phục vụ các tệp tin tĩnh.

#042
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ATo host the resource being requested
To issue tokens to clients after successfully authenticating the resource ownerĐÚNG
CTo store user credentials
DTo provide an interface for user registration
Giải thích

Trong khuôn khổ khung thức OAuth 2.0, vai trò của 'Authorization Server' là xác thực người dùng và cấp phát token cho các ứng dụng khách sau khi người dùng đã được xác thực thành công. Authorization Server đóng vai trò là một trung gian giữa người dùng và ứng dụng khách, giúp đảm bảo rằng người dùng đã được phép truy cập vào tài nguyên mà họ yêu cầu. Quá trình này bao gồm việc người dùng được yêu cầu nhập thông tin xác thực, sau đó Authorization Server sẽ xác thực thông tin đó và cấp phát token cho ứng dụng khách. Token này sẽ được sử dụng để truy cập vào tài nguyên mà người dùng đã được phép.

#043
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AString
BNumber
CBoolean
CharĐÚNG
Giải thích

Mongoose là một thư viện quan hệ cơ sở dữ liệu (ORM) được sử dụng để tương tác với cơ sở dữ liệu MongoDB. Trong Mongoose, có một số loại dữ liệu được hỗ trợ như String, Number, Boolean, Date, Array, Mixed, ObjectId, Buffer, Mixed và Map. Tuy nhiên, Char không phải là một loại dữ liệu được hỗ trợ bởi Mongoose. Thay vào đó, bạn có thể sử dụng String để lưu trữ các giá trị ký tự. Vì vậy, câu trả lời đúng cho câu hỏi này là Char.

#044
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A200
301ĐÚNG
C404
D500
Giải thích

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.

#045
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
The client receives an error in the browser consoleĐÚNG
BThe server crashes
CThe client application stops working
DThe server denies all incoming requests
Giải thích

Nếu CORS không được cấu hình đúng trên máy chủ, điều đó có nghĩa là máy chủ không cho phép các yêu cầu từ nguồn khác nhau. Điều này có thể dẫn đến việc trình duyệt của khách hàng nhận được lỗi trong console. Lỗi này thường là do browser không thể gửi yêu cầu đến máy chủ vì nó không được phép. Điều này có thể gây ra sự cố trong việc tải dữ liệu từ máy chủ. Ngoài ra, nếu CORS không được cấu hình đúng, nó có thể dẫn đến việc dữ liệu không được tải đúng cách hoặc dữ liệu bị lỗi. Điều này có thể gây ra sự cố trong việc sử dụng ứng dụng của khách hàng.

#046
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
client.connect() is responsible for connecting to the MongoDB server.ĐÚNG
col.insertOne({ name: "Nguyen Van A", age: 20 }) is responsible for inserting a document.ĐÚNG
col.find({}).toArray() is responsible for querying documents.ĐÚNG
Dclient.close() is responsible for deleting a document.
Giải thích

Để kết nối đến cơ sở dữ liệu MongoDB và thực hiện các hoạt động CRUD (Tạo, Đọc, Sửa, Xóa) sử dụng Node MongoDB Driver, bạn cần xác định các phần chịu trách nhiệm kết nối, chèn và truy vấn tài liệu. client.connect() là phương thức chịu trách nhiệm kết nối đến máy chủ MongoDB. col.insertOne({ name: "Nguyen Van A", age: 20 }) là phương thức chịu trách nhiệm chèn một tài liệu mới vào cơ sở dữ liệu. col.find({}).toArray() là phương thức chịu trách nhiệm truy vấn các tài liệu trong cơ sở dữ liệu. client.close() là phương thức chịu trách nhiệm đóng kết nối đến cơ sở dữ liệu, nhưng nó không phải là phương thức xóa tài liệu. Phương thức xóa tài liệu thường được thực hiện bằng cách sử dụng col.deleteOne() hoặc col.deleteMany().

#047
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aapp.use(express.static(__dirname + '/public'));
app.use(morgan('dev'));ĐÚNG
Capp.use(express.json());
Dapp.use((req, res) => { res.send('Logging'); });
Giải thích

Để chọn middleware phù hợp cho ứng dụng Express cần ghi nhật ký tất cả các yêu cầu HTTP, chúng ta cần sử dụng middleware morgan. Middleware morgan là một trong những middleware phổ biến nhất được sử dụng để ghi nhật ký các yêu cầu HTTP. Nó cho phép chúng ta tùy chọn mức độ chi tiết của nhật ký, chẳng hạn như 'combined', 'common', 'dev', 'short', 'tiny', v.v. Trong trường hợp này, chúng ta chọn 'dev' để có nhật ký chi tiết hơn. Middleware morgan sẽ ghi nhật ký các yêu cầu HTTP vào console, bao gồm thông tin như thời gian yêu cầu, phương thức yêu cầu, URL yêu cầu, v.v. Điều này giúp chúng ta dễ dàng theo dõi và debug ứng dụng Express.

#048
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Population is used to join data from multiple collections.ĐÚNG
BPopulation is used to update multiple documents.
Population can be done using the populate() method in a query.ĐÚNG
DPopulation requires the use of schemas only.
Giải thích

Population trong Mongoose queries là một tính năng giúp bạn kết nối dữ liệu từ nhiều bộ sưu tập (collection) khác nhau. Điều này cho phép bạn truy cập và sử dụng dữ liệu từ các bộ sưu tập khác nhau trong một truy vấn duy nhất. Để sử dụng population, bạn cần 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 (users) và một bộ sưu tập bài viết (posts) mà mỗi bài viết đều có một người dùng tạo ra nó, bạn có thể sử dụng population để lấy được thông tin người dùng tạo ra bài viết. Population không chỉ giúp bạn kết nối dữ liệu từ nhiều bộ sưu tập mà còn giúp bạn giảm thiểu số lượng truy vấn đến cơ sở dữ liệu, từ đó cải thiện hiệu suất của ứng dụng.

#049
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Regex can be used in the $regex operator to match string patterns.ĐÚNG
BRegex is used to perform mathematical operations.
Regex allows for case-insensitive searches by using the 'i' option.ĐÚNG
DRegex can be used to insert documents into a collection.
Giải thích

Regex trong MongoDB được sử dụng để tìm kiếm và xử lý chuỗi dữ liệu. Theo đó, bạn có thể sử dụng $regex operator để tìm kiếm các mẫu chuỗi. Ví dụ, bạn có thể sử dụng $regex để tìm kiếm các chuỗi bắt đầu bằng 'abc' hoặc kết thúc bằng 'xyz'. Ngoài ra, regex cũng cho phép bạn thực hiện các tìm kiếm không phân biệt chữ hoa chữ thường bằng cách sử dụng tùy chọn 'i'. Điều này có nghĩa là bạn có thể tìm kiếm các chuỗi mà không cần quan tâm đến việc chữ cái được viết hoa hay viết thường. Tuy nhiên, regex không được sử dụng để thực hiện các phép toán toán học, cũng như không được sử dụng để chèn dữ liệu vào một collection.

#050
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AThe process of updating documents in a collection.
BThe process of embedding documents within other documents.
The process of automatically replacing the specified paths in the document with documents from other collections.ĐÚNG
DThe process of validating documents before saving.
Giải thích

Trong Mongoose, population là một tính năng quan trọng giúp bạn liên kết các tài liệu (documents) trong một bộ sưu tập (collection) với các tài liệu khác trong các bộ sưu tập khác. Khi bạn thực hiện population, Mongoose sẽ tự động thay thế các đường dẫn (paths) trong tài liệu hiện tại bằng các tài liệu từ các bộ sưu tập khác. Điều này giúp bạn có thể truy cập và sử dụng dữ liệu từ các bộ sưu tập khác một cách dễ dàng và hiệu quả. Ví dụ, nếu bạn có một tài liệu đại diện cho một người và bạn muốn lấy thông tin về các bài viết mà người đó đã viết, bạn có thể sử dụng population để lấy thông tin về các bài viết đó từ bộ sưu tập bài viết.