Ngân hàng câu hỏi của chương

Câu hỏi: PRM393 - Bất đồng bộ: Future, async/await, Stream

46 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. Trang 3/3 — câu 41–46.

Danh sách câu hỏi

46/46 câuHết danh sách
AFuture(() => 10).then((value) => print(value));
BFuture(() => 10).await(print);
Cthen Future(() => print(10));
DFuture.print(10).then();
Lời giải
Để sử dụng .then() với Future, bạn cần hiểu rằng .then() là một phương thức được sử dụng để xử lý kết quả của một Future. Nó cho phép bạn thực hiện một hành động khi Future đã được thực hiện thành công. Trong ví dụ này, bạn có thể thấy Future được tạo ra bằng cách sử dụng hàm có giá trị trả về là 10. Sau đó, .then() được sử dụng để thực hiện một hành động khi Future đã được thực hiện thành công. Hành động trong trường hợp này là in ra giá trị của Future. Điều này cho thấy .then() được sử dụng đúng cách để xử lý kết quả của Future.
Mở trang câu hỏi này →
AMicrotask queue
Bflutter doctor
CAppBundle (.aab)
DWidget Inspector
Lời giải
Trong Flutter DevTools, công cụ được sử dụng để kiểm tra và phân tích cây widget và phát hiện các vấn đề về bố cục là Widget Inspector. Widget Inspector cho phép bạn xem và phân tích cây widget của ứng dụng Flutter, giúp bạn dễ dàng phát hiện và sửa lỗi về bố cục. Bạn có thể sử dụng nó để xem cấu trúc cây widget, kiểm tra kích thước và vị trí của các widget, và thậm chí là debug các vấn đề về bố cục. Điều này giúp bạn có thể tạo ra các ứng dụng có bố cục đẹp và ổn định hơn.
Mở trang câu hỏi này →
AHeavy work is scheduled for later without blocking the Dart isolate synchronously for too long
BBecause network runs on the UI thread
CBecause `await` disables animation
DBecause Flutter has no event loop
Lời giải
Khi thực hiện các yêu cầu mạng trong Flutter, việc sử dụng `async`/`await` giúp giữ cho giao diện người dùng (UI) phản hồi nhanh chóng. Điều này đạt được vì Dart isolate không bị chặn (block) đồng bộ trong thời gian dài. Thay vào đó, các tác vụ nặng được lịch biểu (schedule) thực hiện sau này mà không làm gián đoạn hoạt động của isolate. Điều này cho phép Flutter tiếp tục cập nhật giao diện người dùng một cách liên tục, duy trì trải nghiệm mượt mà cho người dùng. Ngoài ra, việc sử dụng `async`/`await` cũng giúp giảm thiểu khả năng xảy ra lỗi do các tác vụ mạng bị chặn.
Mở trang câu hỏi này →
44What is technical debt?4 lựa chọn
AMemory usage
BFuture cost of poor design decisions
CUI lag
DAPI limit
Lời giải
Technical debt là một khái niệm được sử dụng trong lập trình để mô tả những quyết định thiết kế hoặc kỹ thuật không tốt trong quá trình phát triển phần mềm. Nó được coi như một loại nợ phải trả trong tương lai, vì những quyết định này sẽ gây ra những chi phí và khó khăn trong việc duy trì, sửa chữa và mở rộng phần mềm. Technical debt thường được tạo ra do việc chọn giải pháp nhanh chóng, dễ dàng nhưng không tối ưu, hoặc do thiếu hiểu biết về các kỹ thuật và công nghệ mới. Nó có thể gây ra những vấn đề như khó khăn trong việc thêm mới tính năng, tăng thời gian phát triển, giảm hiệu suất và tăng chi phí bảo trì. Vì vậy, việc quản lý và giảm thiểu technical debt là rất quan trọng để đảm bảo phần mềm được phát triển và duy trì một cách hiệu quả.
Mở trang câu hỏi này →
ASimplify syntax
BReduce code
CImprove theme
DAvoid blocking UI thread
Lời giải
Các hoạt động cơ sở dữ liệu nên được thực hiện theo cách đồng bộ vì nó giúp tránh chặn luồng UI. Khi một ứng dụng thực hiện các yêu cầu cơ sở dữ liệu đồng bộ, nó sẽ tạm dừng mọi hoạt động khác cho đến khi yêu cầu được hoàn thành. Điều này có thể dẫn đến trải nghiệm người dùng không mượt mà và ứng dụng có thể trở nên chậm chạp. Ngược lại, các hoạt động cơ sở dữ liệu được thực hiện theo cách đồng bộ cho phép ứng dụng tiếp tục thực hiện các tác vụ khác trong khi chờ đợi kết quả từ cơ sở dữ liệu. Điều này giúp cải thiện hiệu suất và trải nghiệm người dùng.
Mở trang câu hỏi này →
Aasync
Bawait
Cfuture
Ddelay
Lời giải
Đáp án đúng: B. Từ khoá await tạm dừng việc thực thi hàm hiện tại cho tới khi Future hoàn tất rồi trả về giá trị của Future đó, giúp viết mã bất đồng bộ theo phong cách tuần tự dễ đọc. Nó chỉ dùng được bên trong hàm đã được đánh dấu async, và đó chính là vai trò của từ khoá async (A): đánh dấu hàm trả về Future chứ bản thân nó không tạm dừng gì cả. Future (C) là KIỂU dữ liệu biểu diễn một giá trị sẽ có trong tương lai, không phải từ khoá điều khiển; còn delay (D) không phải từ khoá của Dart - liên quan là hàm Future.delayed.
Mở trang câu hỏi này →