Tất cả câu hỏi

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

Bấm vào từng câu để xem đáp án
#301
88%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
5 LỰA CHỌN
AA timer event
An infinite loopĐÚNG
CA function call
DA prototype declaration
EA conditional statement
Giải thích

Câu lệnh while(1) trong chương trình C được sử dụng để tạo ra một vòng lặp vô hạn. Vòng lặp vô hạn là một loại vòng lặp mà nó sẽ tiếp tục chạy mãi cho đến khi chương trình bị dừng lại. Điều này có nghĩa là trong khi vòng lặp đang chạy, nó sẽ không bao giờ kết thúc và sẽ tiếp tục thực hiện các hành động được chỉ định trong nó. Điều này có thể hữu ích trong một số tình huống, chẳng hạn như tạo ra một chương trình giám sát hoặc một chương trình chạy nền. Tuy nhiên, cần lưu ý rằng vòng lặp vô hạn có thể gây ra vấn đề nếu không được sử dụng đúng cách, vì nó có thể khiến chương trình bị treo hoặc không thể dừng lại.

#302
88%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
5 LỰA CHỌN
Non-volatile memories (e.g., FLASH)ĐÚNG
BHeap data section
CVolatile memories (e.g., SRAM)
DDynamic RAM (DRAM)
EStack data section
Giải thích

Bộ nhớ không lưu trữ tạm thời (non-volatile memory) là nơi lưu trữ mã chương trình và dữ liệu hằng số. Các ví dụ về bộ nhớ không lưu trữ tạm thời bao gồm FLASH. Đây là loại bộ nhớ được sử dụng để lưu trữ dữ liệu và chương trình một cách lâu dài, ngay cả khi nguồn điện bị cắt bỏ. Bộ nhớ này thường được sử dụng trong các thiết bị điện tử như máy tính, điện thoại di động và các thiết bị khác.

#303
63%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
5 LỰA CHỌN
Apulsewidth_ms (int ms)
period_ms (int ms)ĐÚNG
Cperiod_us (int us)
Dwrite (float value)
Eperiod (float seconds)
Giải thích

Hàm nào được sử dụng để đặt chu kỳ PWM được chỉ định bằng mili giây (int)? PWM (Pulse Width Modulation) là một kỹ thuật điều khiển tín hiệu điện áp, thường được sử dụng trong các ứng dụng như điều khiển tốc độ động cơ, điều khiển nhiệt độ, v.v. Trong các hàm được liệt kê, hàm nào có thể được sử dụng để đặt chu kỳ PWM được chỉ định bằng mili giây (int)? Hàm period_ms (int ms) là một hàm được sử dụng để đặt chu kỳ PWM được chỉ định bằng mili giây (int). Hàm này cho phép bạn đặt chu kỳ PWM theo mili giây, giúp bạn có thể điều khiển tín hiệu điện áp một cách chính xác. Ví dụ, nếu bạn muốn đặt chu kỳ PWM là 1000 mili giây, bạn có thể sử dụng hàm period_ms (int ms) như sau: period_ms(1000) Tóm lại, hàm period_ms (int ms) là một hàm được sử dụng để đặt chu kỳ PWM được chỉ định bằng mili giây (int).

#304
88%
ĐỘ CHÍNH XÁC
8
LƯỢT LÀM
5 LỰA CHỌN
NUCLEO-F411REĐÚNG
BESP32
CArduino Uno
DRaspberry Pi Pico
EAdafruit Feather
Giải thích

Trong phòng thí nghiệm, chúng ta thường sử dụng bảng phát triển (development board) để học hỏi và thực hành các kỹ thuật lập trình. Một trong những bảng phát triển được sử dụng phổ biến và giải thích chi tiết về bố cục chân cắm (pin layout) là NUCLEO-F411RE. Bảng phát triển này được thiết kế bởi STMicroelectronics và hỗ trợ cho các chương trình học về lập trình microcontroller. Nó cung cấp một cấu trúc đơn giản và dễ sử dụng, giúp sinh viên và người mới bắt đầu có thể dễ dàng học hỏi và thực hành các kỹ thuật lập trình.

#305
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AGroups multiple routes
BSwitches between states
Renders the first matching routeĐÚNG
DUsed to toggle views
Giải thích

Trong React Router, thành phần <Switch> đóng vai trò quan trọng trong việc định tuyến. Nó được sử dụng để nhóm nhiều tuyến đường lại với nhau và chỉ render tuyến đường đầu tiên mà nó gặp phải. Điều này có nghĩa là khi bạn sử dụng <Switch>, React Router sẽ chỉ render tuyến đường đầu tiên mà nó tìm thấy mà không cần phải render các tuyến đường khác. Điều này giúp tăng hiệu suất và giảm thiểu việc render không cần thiết. Ngoài ra, <Switch> cũng giúp bạn dễ dàng quản lý và tổ chức các tuyến đường trong ứng dụng của mình.

#306
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A@Configuration
B@DataJpaTest
@WebMvcTestĐÚNG
D@EnableAutoConfiguration
Giải thích

Để kiểm tra chỉ lớp web, bạn có thể sử dụng annotation @WebMvcTest thay thế cho @SpringBootTest. Annotation này cho phép bạn kiểm tra lớp web mà không cần phải khởi tạo toàn bộ ứng dụng. @WebMvcTest sẽ tự động tạo một ứng dụng web nhỏ để kiểm tra lớp web của bạn. Điều này giúp bạn kiểm tra các lớp controller, service và repository mà không cần phải khởi tạo toàn bộ ứng dụng.

#307
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AwebEnvironment = NONE
BwebEnvironment = MOCK
CuseMockMvc = true
webEnvironment = DEFINED_PORTĐÚNG
Giải thích

Để kiểm tra các điểm cuối của controller sử dụng các cuộc gọi HTTP thực tế, bạn cần cấu hình @SpringBootTest để sử dụng môi trường web thực tế. Trong đó, bạn cần thiết lập thuộc tính webEnvironment thành DEFINED_PORT. Điều này cho phép Spring Boot tạo một ứng dụng web thực tế với một cổng cụ thể, và bạn có thể sử dụng các công cụ như Postman hoặc cURL để gửi các yêu cầu HTTP đến ứng dụng này. Điều này giúp bạn kiểm tra các điểm cuối của controller một cách chính xác và hiệu quả hơn.

#308
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
A@MockBean
@ExtendWith(SpringExtension.class)ĐÚNG
C@DataJpaTest
D@TestConfiguration
Giải thích

Khi sử dụng JUnit 5, annotation thường được sử dụng cùng với @SpringBootTest là @ExtendWith(SpringExtension.class). Annotation này cho phép JUnit 5 sử dụng Spring Boot để chạy các test. Nó giúp tạo ra một môi trường thử nghiệm đầy đủ cho ứng dụng Spring Boot, bao gồm cả các tính năng như autowiring và dependency injection. Điều này cho phép các nhà phát triển viết các test đơn giản và hiệu quả hơn. Ngoài ra, @ExtendWith(SpringExtension.class) cũng giúp giảm thiểu số lượng mã cần thiết để cấu hình môi trường thử nghiệm.

#309
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AUse @MockBean
BUse webEnvironment = WebEnvironment.NONE
CUse @WebMvcTest
Use webEnvironment = WebEnvironment.RANDOM_PORTĐÚNG
Giải thích

Để có thể sử dụng TestRestTemplate trong một @SpringBootTest, bạn cần sử dụng webEnvironment = WebEnvironment.RANDOM_PORT. Điều này cho phép Spring Boot tạo một server tạm thời để phục vụ cho việc kiểm thử. Khi sử dụng RANDOM_PORT, bạn có thể sử dụng TestRestTemplate để gửi yêu cầu đến server tạm thời này. Nếu bạn sử dụng NONE, thì TestRestTemplate sẽ không thể gửi yêu cầu đến server vì server không được tạo. Sử dụng @MockBean hoặc @WebMvcTest sẽ không giúp bạn tạo được server tạm thời để TestRestTemplate có thể gửi yêu cầu.

#310
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AStarts the application with no web environment
BFails the test if no port is provided manually
CDisables the web server
Starts the embedded server on a random portĐÚNG
Giải thích

Khi sử dụng @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT), Spring Boot sẽ khởi động ứng dụng trong môi trường web ngẫu nhiên. Điều này có nghĩa là ứng dụng sẽ được chạy trên một cổng ngẫu nhiên, thay vì sử dụng cổng mặc định. Mục đích chính của việc này là để tránh xung đột cổng khi chạy nhiều ứng dụng cùng lúc. Ngoài ra, việc sử dụng môi trường web ngẫu nhiên cũng giúp tăng tính bảo mật cho ứng dụng, vì nó làm cho việc đoán cổng của ứng dụng trở nên khó khăn hơn. Khi ứng dụng được khởi động trong môi trường web ngẫu nhiên, Spring Boot sẽ tự động tạo một cổng ngẫu nhiên và cấu hình ứng dụng để sử dụng cổng đó. Điều này giúp đảm bảo rằng ứng dụng có thể được truy cập từ xa mà không cần phải biết cổng cụ thể của ứng dụng.

#311
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIt does not require session on server
BIt is stateless
CIt can be used with REST APIs
It is considered more secure than OAuth2ĐÚNG
Giải thích

Basic Authentication là một phương thức xác thực cơ bản trong đó người dùng gửi thông tin đăng nhập (tên người dùng và mật khẩu) qua mỗi yêu cầu HTTP. Phương thức này không yêu cầu lưu trữ phiên trên máy chủ, vì vậy nó được coi là một phương thức stateless. Điều này có nghĩa là máy chủ không cần lưu trữ thông tin về phiên hiện tại của người dùng, giúp giảm thiểu khả năng bị tấn công từ chối dịch vụ (DDoS). Ngoài ra, Basic Authentication có thể được sử dụng với các API REST, vì nó cung cấp một cách đơn giản để xác thực người dùng. Tuy nhiên, phương thức này không được coi là an toàn hơn OAuth2. Trên thực tế, Basic Authentication gửi thông tin đăng nhập qua mỗi yêu cầu HTTP, điều này có thể dễ bị bắt trộm và sử dụng bởi kẻ tấn công. Do đó, OAuth2 được coi là một phương thức an toàn hơn vì nó yêu cầu người dùng xác thực thông qua một ứng dụng trung gian và không gửi thông tin đăng nhập qua mỗi yêu cầu.

#312
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAuthorization
CookieĐÚNG
CX-Session-Token
DSet-Header
Giải thích

HTTP header được sử dụng phổ biến để truyền tải ID phiên là Cookie. Cookie là một phần của HTTP header được sử dụng để lưu trữ thông tin về phiên làm việc của người dùng. Khi người dùng đăng nhập vào một trang web, trang web sẽ tạo một ID phiên và lưu trữ nó trong Cookie. Mỗi lần người dùng gửi yêu cầu đến trang web, Cookie sẽ được gửi kèm theo yêu cầu và trang web sẽ sử dụng ID phiên để xác thực người dùng. Điều này giúp trang web có thể lưu trữ thông tin về người dùng và cung cấp trải nghiệm cá nhân hóa. Ngoài ra, Cookie cũng được sử dụng để lưu trữ thông tin về các lựa chọn của người dùng, chẳng hạn như ngôn ngữ hoặc kích thước font.

#313
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAuthorization: Bearer (token)
Authorization: Basic (base64(username:password))ĐÚNG
CAuthorization: Token username:password
DAuth: Basic (JWT)
Giải thích

Trong Basic Authentication, định dạng của tiêu đề Authorization sẽ trông như thế nào? Đây là một dạng xác thực cơ bản sử dụng tiêu đề Authorization để xác thực người dùng. Khi sử dụng Basic Authentication, người dùng sẽ gửi tiêu đề Authorization với nội dung là 'Basic' kèm theo mã hóa base64 của chuỗi 'username:password'. Ví dụ, nếu username là 'user' và password là 'pass', thì tiêu đề Authorization sẽ được gửi dưới dạng 'Authorization: Basic dXNlcjpwYXNzd29yZA=='. Mã hóa base64 được sử dụng để bảo mật thông tin người dùng.

#314
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
By including WWW-Authenticate: Basic realm='RealmName' in a 401 responseĐÚNG
BBy sending a Set-Cookie header with a token
CBy returning 403 with Login-Required: true
DBy using JavaScript redirect
Giải thích

Để một máy chủ yêu cầu trình duyệt hiển thị hộp thoại đăng nhập cho Basic Auth, máy chủ cần gửi một phản hồi 401 (Không được phép) với tiêu đề HTTP WWW-Authenticate. Tiêu đề này chứa thông tin về tên miền (realm) mà máy chủ đang yêu cầu. Ví dụ, máy chủ có thể gửi phản hồi 401 với tiêu đề WWW-Authenticate: Basic realm='RealmName'. Điều này sẽ yêu cầu trình duyệt hiển thị hộp thoại đăng nhập cho người dùng, nơi họ có thể nhập tên người dùng và mật khẩu. Sau khi người dùng nhập thông tin đăng nhập, trình duyệt sẽ gửi lại yêu cầu đến máy chủ với tiêu đề Authorization chứa thông tin đăng nhập. Máy chủ sẽ kiểm tra thông tin đăng nhập và trả lại phản hồi 200 nếu thông tin đúng, hoặc tiếp tục trả lại phản hồi 401 nếu thông tin sai.

#315
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AServer responds with 200 OK and empty body
Server responds with 401 Unauthorized and WWW-Authenticate headerĐÚNG
CServer closes the connection immediately
DServer automatically redirects to login page
Giải thích

Nếu một khách hàng gửi một yêu cầu mà không có tiêu đề Authorization và máy chủ yêu cầu Basic Auth, máy chủ sẽ phản hồi với mã trạng thái 401 Unauthorized và tiêu đề WWW-Authenticate. Điều này là bởi vì máy chủ yêu cầu khách hàng phải cung cấp thông tin xác thực trước khi truy cập vào tài nguyên được bảo vệ. Tiêu đề WWW-Authenticate sẽ chứa thông tin về phương thức xác thực được yêu cầu, trong trường hợp này là Basic Auth. Khách hàng sẽ phải gửi lại yêu cầu với tiêu đề Authorization chứa thông tin xác thực để máy chủ xác thực và cấp quyền truy cập vào tài nguyên.

#316
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Remove the current session and all its attributesĐÚNG
BRestart the session with the same session ID
CEncrypt the session data
DExtend session timeout
Giải thích

Hàm HttpSession.invalidate() trong bảo mật dựa trên phiên (session-based security) có mục đích xóa bỏ phiên hiện tại và tất cả các thuộc tính của nó. Khi gọi hàm này, phiên sẽ bị hủy bỏ và không thể tiếp tục sử dụng. Điều này giúp ngăn chặn việc truy cập trái phép vào dữ liệu của phiên đã bị xóa. Ngoài ra, hàm này cũng giúp giải phóng tài nguyên hệ thống đã được sử dụng bởi phiên bị xóa. Tùy chọn này thường được sử dụng trong trường hợp người dùng đăng xuất khỏi hệ thống hoặc khi phiên đã hết hạn.

#317
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
ADisable the controller
BUse @IgnoreMapping
Add @Hidden annotationĐÚNG
DRename the method
Giải thích

Để ẩn một endpoint khỏi tài liệu OpenAPI, bạn có thể sử dụng một số cách khác nhau. Một trong những cách phổ biến nhất là sử dụng annotation @Hidden. Annotation này cho phép bạn ẩn một phương thức hoặc một endpoint khỏi tài liệu OpenAPI mà không cần phải xóa hoặc sửa đổi mã nguồn. Điều này rất hữu ích khi bạn muốn ẩn một endpoint chỉ dành cho mục đích nội bộ hoặc để bảo vệ thông tin nhạy cảm. Ngoài ra, bạn cũng có thể sử dụng cách khác như Disable controller hoặc Rename method, nhưng cách này có thể phức tạp hơn và không được khuyến khích sử dụng. Vì vậy, cách tốt nhất để ẩn một endpoint khỏi tài liệu OpenAPI là sử dụng annotation @Hidden.

#318
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
springdoc-openapi-uiĐÚNG
Bspring-boot-devtools
Cspringfox-swagger2
Dspring-boot-starter-jdbc
Giải thích

Trong Spring Boot, có nhiều tùy chọn để tích hợp OpenAPI 3. Tuy nhiên, tùy chọn phổ biến nhất là sử dụng springdoc-openapi-ui. Đây là một thư viện mở nguồn cung cấp một số tính năng mạnh mẽ để tạo và quản lý API, bao gồm việc tạo tài liệu OpenAPI, tạo giao diện người dùng và hỗ trợ tích hợp với các công cụ khác. Để sử dụng springdoc-openapi-ui trong dự án Spring Boot của mình, bạn cần thêm dependency vào file pom.xml (nếu bạn đang sử dụng Maven) hoặc build.gradle (nếu bạn đang sử dụng Gradle). Sau đó, bạn có thể cấu hình và sử dụng các tính năng của springdoc-openapi-ui để tạo và quản lý API của mình.

#319
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AUsing @Group
Using @Tag(name = 'GroupName')ĐÚNG
CUsing @SwaggerGroup
DUsing application.yaml grouping
Giải thích

Để nhóm các API trong Swagger UI bằng cách sử dụng Springdoc OpenAPI, bạn có thể sử dụng một số cách khác nhau. Một trong những cách phổ biến nhất là sử dụng @Tag. @Tag cho phép bạn tạo ra các nhóm API dựa trên các thuộc tính như tên nhóm, mô tả nhóm, v.v. Ví dụ, bạn có thể tạo một nhóm API có tên là 'GroupName' bằng cách sử dụng @Tag như sau: @Tag(name = 'GroupName'). Sau đó, bạn có thể sử dụng @Operation để thêm các phương thức API vào nhóm này. Ngoài ra, bạn cũng có thể sử dụng @Api để tạo ra các nhóm API có tên và mô tả. Tuy nhiên, cách sử dụng @Tag là phổ biến nhất và được khuyến khích sử dụng.

#320
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aswagger.api.url
Bopenapi.swagger.path
Cspring.openapi.path
springdoc.api-docs.pathĐÚNG
Giải thích

Để thay đổi mặc định địa chỉ OpenAPI endpoint trong ứng dụng Spring, bạn cần sử dụng thuộc tính cấu hình Spring. Trong các lựa chọn trên, thuộc tính "springdoc.api-docs.path" là lựa chọn đúng. Nó cho phép bạn thay đổi địa chỉ mặc định của OpenAPI endpoint, giúp bạn có thể tùy chỉnh và quản lý API của mình một cách linh hoạt hơn. Ví dụ, bạn có thể sử dụng thuộc tính này để thay đổi địa chỉ OpenAPI endpoint thành một địa chỉ khác, chẳng hạn như "/api/docs" hoặc "/swagger".