Câu hỏi: PRM393 - REST API và JSON
31 câu trắc nghiệm kèm lời giải của môn Lập trình di động (Flutter) - Mobile Programming, xếp theo thứ tự nhập vào ngân hàng.
Danh sách câu hỏi
20/31 câuCòn 11
A
ContainerB
RepaintBoundaryC
ColumnD
FutureBuilderLời giải
Mở trang câu hỏi này →Widget giúp tránh tái xây dựng các phần giao diện không thay đổi là RepaintBoundary. Khi một widget được thay đổi, Flutter sẽ tự động tái xây dựng lại giao diện. Tuy nhiên, nếu một phần giao diện không thay đổi, việc tái xây dựng lại không cần thiết và có thể gây lãng phí tài nguyên. RepaintBoundary giúp ngăn chặn việc tái xây dựng lại các phần giao diện không thay đổi, giúp cải thiện hiệu suất của ứng dụng.
2Which widget is used to handle asynchronous API responses in UI?4 lựa chọnTrung bình50% trả lời đúng
A
FutureBuilderB
ListViewC
ProviderD
FormLời giải
Mở trang câu hỏi này →Trong lập trình di động, widget FutureBuilder được sử dụng để xử lý các phản hồi API bất đồng bộ trong giao diện người dùng. Nó cho phép bạn xây dựng một giao diện người dùng động dựa trên các dữ liệu được tải xuống từ API. Khi dữ liệu được tải xuống, widget FutureBuilder sẽ cập nhật giao diện người dùng để hiển thị dữ liệu mới. Điều này giúp bạn có thể xây dựng các ứng dụng di động phức tạp với giao diện người dùng động và phản hồi nhanh chóng.
3'FutureBuilder' automatically rebuilds its UI when the state of an asynchronous operation changes.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →FutureBuilder là một widget trong Flutter có khả năng tự động cập nhật giao diện khi trạng thái của một hoạt động bất đồng bộ thay đổi. Điều này có nghĩa là khi bạn thực hiện một yêu cầu mạng hoặc một quá trình tính toán phức tạp, FutureBuilder sẽ tự động cập nhật giao diện của mình khi kết quả của hoạt động đó thay đổi. Điều này giúp bạn có thể hiển thị trạng thái hiện tại của hoạt động mà không cần phải viết mã phức tạp để cập nhật giao diện.
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Mẹo sử dụng json.decode() trong Dart là một phương thức từ thư viện 'dart:convert' giúp chuyển đổi một chuỗi JSON thành một Map hoặc List. Phương thức này rất hữu ích khi bạn cần xử lý dữ liệu JSON trong ứng dụng của mình. Ví dụ, bạn có thể sử dụng json.decode() để chuyển đổi một chuỗi JSON thành một Map và sau đó sử dụng các khóa và giá trị trong Map để truy cập và xử lý dữ liệu. Ngoài ra, phương thức này cũng giúp giảm thiểu lỗi khi xử lý dữ liệu JSON, vì nó sẽ tự động chuyển đổi dữ liệu thành các loại dữ liệu phù hợp.
5`Uri.parse` is used to?4 lựa chọn
AReplace `jsonDecode`
BParse JSON
CBuild a `Uri` from a URL string for `http.get`/`post`
DOnly validate email
Lời giải
Mở trang câu hỏi này →Hàm `Uri.parse` được sử dụng để xây dựng một đối tượng `Uri` từ một chuỗi URL. Điều này thường được sử dụng trong các yêu cầu HTTP GET hoặc POST để xác định địa chỉ URL của một trang web hoặc một nguồn dữ liệu. Ví dụ, nếu bạn muốn gửi một yêu cầu GET đến trang web https://example.com/api/data, bạn có thể sử dụng hàm `Uri.parse` để tạo một đối tượng `Uri` từ chuỗi URL này. Đối tượng `Uri` này sau đó có thể được sử dụng trong các phương thức HTTP để gửi yêu cầu đến trang web.
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Một nút 'Retry' (Làm lại) là một yếu tố UX được khuyến nghị khi một cuộc gọi API dẫn đến trạng thái lỗi. Khi một ứng dụng web thực hiện một cuộc gọi API, nó có thể gặp phải một số vấn đề như kết nối mạng yếu, dữ liệu không chính xác hoặc các vấn đề khác. Trong trường hợp này, nút 'Retry' sẽ giúp người dùng có thể thực hiện lại cuộc gọi API một cách dễ dàng. Điều này giúp cải thiện trải nghiệm người dùng và tăng cường độ tin cậy của ứng dụng. Ngoài ra, nút 'Retry' cũng giúp ứng dụng có thể tự động hóa quá trình xử lý lỗi và giảm thiểu thời gian chờ đợi của người dùng.
7A 'Service Layer' (ApiService) should handle networking logic to separate it from the UI code.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Một 'Service Layer' (ApiService) nên xử lý logic mạng để tách biệt nó khỏi mã nguồn UI. Điều này giúp giảm thiểu sự phụ thuộc giữa các lớp và tăng tính bảo trì của ứng dụng. Khi logic mạng được tách biệt khỏi mã nguồn UI, bạn có thể dễ dàng thay đổi hoặc cập nhật logic mạng mà không ảnh hưởng đến giao diện người dùng. Điều này cũng giúp giảm thiểu sự phức tạp của mã nguồn và tăng hiệu suất của ứng dụng. Ngoài ra, việc tách biệt logic mạng cũng giúp dễ dàng thực hiện các tính năng mới mà không ảnh hưởng đến mã nguồn hiện có.
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Hot Reload là một tính năng giúp bạn cập nhật mã nguồn của ứng dụng mà không cần phải khởi động lại ứng dụng. Tuy nhiên, điều quan trọng cần lưu ý là Hot Reload không phải lúc nào cũng reset toàn bộ trạng thái của ứng dụng. Nó chỉ cập nhật các thay đổi trong mã nguồn mà không ảnh hưởng đến trạng thái hiện tại của ứng dụng. Vì vậy, câu trả lời đúng cho câu hỏi này là không phải là True.
AIt uniquely identifies the Form and allows access to its state for validation and saving.
BIt searches the widget tree for a widget that contains the specified string of text.
CIt allows a single codebase to render UI using its own engine across different platforms.
DHot Reload updates the UI without losing state, while Hot Restart resets the app state.
Lời giải
Mở trang câu hỏi này →Hot Reload và Hot Restart là hai tính năng quan trọng trong Flutter giúp tăng tốc độ phát triển ứng dụng. Hot Reload cho phép cập nhật mã nguồn mà không cần phải khởi động lại ứng dụng, giúp bạn xem được kết quả ngay lập tức. Trong khi đó, Hot Restart lại khởi động lại ứng dụng từ đầu, giúp bạn có thể thử nghiệm các thay đổi mà không ảnh hưởng đến trạng thái hiện tại của ứng dụng. Điều này giúp bạn có thể nhanh chóng thử nghiệm và sửa lỗi trong quá trình phát triển ứng dụng.
10HTTP **201 Created** usually means after POST?4 lựa chọn
AResource created successfully
BToken expired
CClient error
DNo body
Lời giải
Mở trang câu hỏi này →HTTP **201 Created** là trạng thái HTTP được sử dụng khi một yêu cầu POST được thực hiện thành công và một tài nguyên mới được tạo. Điều này thường xảy ra khi một yêu cầu POST được gửi đến một API để tạo một tài nguyên mới. Ví dụ, khi bạn tạo một tài khoản mới trên một trang web, yêu cầu POST sẽ được gửi đến API để tạo tài khoản mới. Nếu yêu cầu này được thực hiện thành công, API sẽ trả về trạng thái HTTP **201 Created** cùng với thông tin về tài nguyên mới được tạo. Điều này cho phép khách hàng biết rằng tài nguyên mới đã được tạo thành công và họ có thể tiếp tục sử dụng nó.
11HTTP 401 vs 403 (exam review)?4 lựa chọn
ASame
B401 is GET-only
C403 is DNS error
D401: not/s wrongly authenticated; 403: authenticated but not authorized
Lời giải
Mở trang câu hỏi này →HTTP 401 và 403 là hai mã trạng thái HTTP khác nhau, nhưng thường bị nhầm lẫn. HTTP 401 là mã trạng thái được sử dụng khi một yêu cầu HTTP được gửi đến một trang web hoặc ứng dụng, nhưng người dùng không được xác thực hoặc xác thực không chính xác. Điều này có nghĩa là người dùng chưa được xác thực hoặc đã được xác thực nhưng thông tin xác thực không chính xác. Ví dụ, khi bạn nhập sai mật khẩu hoặc tên người dùng, bạn sẽ nhận được mã trạng thái 401. Ngược lại, HTTP 403 là mã trạng thái được sử dụng khi người dùng đã được xác thực nhưng không được phép truy cập vào tài nguyên hoặc chức năng cụ thể. Điều này có nghĩa là người dùng đã được xác thực nhưng không có quyền truy cập vào tài nguyên đó. Ví dụ, khi bạn cố gắng truy cập vào một trang web mà bạn không có quyền truy cập, bạn sẽ nhận được mã trạng thái 403. Tóm lại, HTTP 401 được sử dụng khi người dùng không được xác thực hoặc xác thực không chính xác, trong khi HTTP 403 được sử dụng khi người dùng đã được xác thực nhưng không được phép truy cập vào tài nguyên hoặc chức năng cụ thể.
12In a 'Service Layer' architecture, what is the responsibility of the `ApiService` class?4 lựa chọn
AIt creates a stream that can be listened to by multiple subscribers simultaneously.
BIt builds itself based on the latest snapshot of interaction with a Future.
CTo improve performance and prevent sensitive information from being logged in production.
DIt encapsulates all network communication logic, separating it from the UI layer.
Lời giải
Mở trang câu hỏi này →Trong kiến trúc 'Service Layer', trách nhiệm của lớp `ApiService` là bao gồm tất cả logic giao tiếp mạng, tách rời khỏi lớp UI. Điều này có nghĩa là lớp `ApiService` sẽ chịu trách nhiệm thực hiện các yêu cầu mạng, xử lý dữ liệu và trả về kết quả cho lớp UI mà không cần lớp UI phải quan tâm đến chi tiết giao tiếp mạng. Điều này giúp tăng cường bảo mật và dễ dàng bảo trì hệ thống. Ngoài ra, lớp `ApiService` cũng có thể được sử dụng để thực hiện các tác vụ phức tạp như xác thực, kiểm tra quyền truy cập, v.v.
AArrange, Act, and Assert.
BService Layer pattern
CAn authentication token.
DFirebase Authentication
Lời giải
Mở trang câu hỏi này →Trong API DummyJSON được sử dụng trong Lab 10, dữ liệu nào thường được trả về khi đăng nhập thành công để xác định phiên làm việc? Để trả lời câu hỏi này, chúng ta cần hiểu về cơ chế đăng nhập và xác thực trong API. Khi đăng nhập thành công, API sẽ trả về một token xác thực để xác định phiên làm việc của người dùng. Token này thường được sử dụng để xác thực các yêu cầu tiếp theo của người dùng. Vì vậy, trong trường hợp này, câu trả lời đúng là "An authentication token.".
14Movie app uses which API?4 lựa chọn
AGoogle Movies
BIMDb
CTMDB
DNetflix
Lời giải
Mở trang câu hỏi này →Ứng dụng xem phim sử dụng API nào? Câu trả lời đúng là TMDB. TMDB là viết tắt của The Movie Database, là một cơ sở dữ liệu trực tuyến về phim và truyền hình. Nó cung cấp thông tin chi tiết về các bộ phim, bao gồm tóm tắt, diễn viên, đạo diễn, và nhiều hơn nữa. TMDB cũng cung cấp API cho phép các ứng dụng và trang web truy cập vào dữ liệu của họ. Vì vậy, ứng dụng xem phim sử dụng API của TMDB để truy cập vào thông tin về các bộ phim và cung cấp cho người dùng.
A`SocketException`
B`FormatException`
C`StateError`
DAlways `FlutterError`
Lời giải
Mở trang câu hỏi này →Khi gọi HTTP từ Dart mà không gặp lỗi mạng / DNS, những lỗi thường được bắt gặp dưới dạng gì? Để trả lời câu hỏi này, chúng ta cần hiểu về các loại lỗi có thể xảy ra khi gọi HTTP từ Dart. Lỗi mạng / DNS thường được bắt gặp dưới dạng SocketException. Điều này là vì khi gọi HTTP, Dart sẽ sử dụng socket để kết nối với server. Nếu có lỗi mạng / DNS, socket sẽ không thể kết nối được, dẫn đến SocketException. Ngoài ra, còn có các loại lỗi khác như FormatException và StateError, nhưng chúng thường không liên quan đến lỗi mạng / DNS.
AUse `Theme`
BCall `setState`
CUse `ListView`
DScatter `http.get`/`post` across `build()` — use a repository/service
Lời giải
Mở trang câu hỏi này →Repository pattern (khái niệm) là một cách tổ chức mã để tách biệt logic kinh doanh khỏi logic giao diện người dùng. Khi sử dụng Repository pattern, UI không nên thực hiện các hành động sau trực tiếp. Thay vào đó, UI nên giao tiếp với Repository để lấy dữ liệu hoặc thực hiện các hành động kinh doanh. Ví dụ, UI không nên gọi trực tiếp các hàm http.get hoặc http.post để lấy dữ liệu từ server. Thay vào đó, UI nên gọi hàm của Repository để lấy dữ liệu. Điều này giúp giảm sự phức tạp của mã và tăng tính tái sử dụng.
17The 'factory Model.fromJson' constructor is typically used to map API response maps to Dart objects.2 lựa chọn
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Model.fromJson là một phương thức được sử dụng rộng rãi trong lập trình Dart để ánh xạ dữ liệu từ API sang các đối tượng Dart. Khi nhận được một phản hồi từ API, chúng ta thường cần ánh xạ dữ liệu đó sang các đối tượng của ứng dụng để sử dụng. Phương thức Model.fromJson giúp thực hiện việc ánh xạ này một cách dễ dàng và hiệu quả. Nó nhận vào một đối tượng JSON và tạo ra một đối tượng Dart tương ứng, giúp giảm thiểu thời gian và công sức trong việc ánh xạ dữ liệu.
A
TrueB
FalseLời giải
Mở trang câu hỏi này →Trong Flutter, gói 'http' được sử dụng để gửi yêu cầu GET và POST đến các API REST. Gói này cung cấp các phương thức để gửi yêu cầu đến các API, đồng thời cũng cho phép bạn xử lý các phản hồi từ API. Sử dụng gói 'http' giúp bạn có thể dễ dàng tương tác với các API REST trong ứng dụng của mình.
19What does Hot Restart do?4 lựa chọn
AKeeps state
BUpdates UI only
CRestarts app from beginning
DClears IDE
Lời giải
Mở trang câu hỏi này →Hot Restart trong lập trình là một tính năng giúp bạn nhanh chóng thử nghiệm và kiểm tra lại ứng dụng của mình mà không cần phải khởi động lại toàn bộ ứng dụng. Khi bạn sử dụng Hot Restart, ứng dụng sẽ được khởi động lại từ đầu, nhưng các thay đổi mà bạn đã thực hiện sẽ được giữ lại. Điều này giúp bạn có thể nhanh chóng thử nghiệm và kiểm tra lại ứng dụng mà không cần phải chờ đợi quá lâu. Hot Restart thường được sử dụng trong quá trình phát triển ứng dụng để giúp bạn có thể nhanh chóng thử nghiệm và kiểm tra lại các tính năng mới mà không cần phải khởi động lại toàn bộ ứng dụng.
20What is an API timeout used for?4 lựa chọn
ARetry requests
BEncrypt data
CPrevent waiting indefinitely
DSpeed up UI
Lời giải
Mở trang câu hỏi này →Một API timeout là một giới hạn thời gian mà một ứng dụng sẽ chờ đợi trước khi kết thúc một yêu cầu đến từ một API. Mục đích chính của API timeout là ngăn chặn ứng dụng chờ đợi vô hạn khi nhận được phản hồi từ API. Điều này giúp ứng dụng không bị treo hoặc không phản hồi trong thời gian dài, đồng thời cũng giúp giảm thiểu tình trạng quá tải của hệ thống. Khi API timeout được kích hoạt, ứng dụng sẽ tự động hủy bỏ yêu cầu và hiển thị thông báo lỗi cho người dùng. Điều này giúp đảm bảo rằng ứng dụng luôn hoạt động ổn định và phản hồi nhanh chóng.