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

Câu hỏi: PRM393 - Lưu trữ cục bộ

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
1Which Flutter plugin provides SQLite support?4 lựa chọnDễ75% trả lời đúng
Ahive
Bmoor
Csqflite
Dshared_preferences
Lời giải
Flutter cung cấp nhiều plugin để hỗ trợ lưu trữ dữ liệu trên thiết bị di động. Trong đó, plugin SQLite hỗ trợ lưu trữ dữ liệu trong cơ sở dữ liệu SQLite. Plugin sqflite là một trong những plugin phổ biến nhất được sử dụng để hỗ trợ SQLite trên Flutter. Nó cho phép bạn tạo, đọc, cập nhật và xóa dữ liệu trong cơ sở dữ liệu SQLite.
Mở trang câu hỏi này →
2What is Hive mainly used for?4 lựa chọnDễ100% trả lời đúng
ARemote database
BLightweight local NoSQL storage
CState management
DRouting
Lời giải
Hive là một công cụ được sử dụng rộng rãi trong lĩnh vực phân tích dữ liệu lớn (Big Data). Nó được thiết kế để cung cấp một giao diện SQL cho dữ liệu được lưu trữ trong Hadoop Distributed File System (HDFS). Hive chủ yếu được sử dụng để tạo và quản lý cơ sở dữ liệu, tạo các truy vấn và báo cáo, cũng như thực hiện các phép tính toán tính trên dữ liệu. Nó cho phép người dùng sử dụng ngôn ngữ SQL để truy vấn và xử lý dữ liệu, mà không cần phải biết về chi tiết kỹ thuật của Hadoop.
Mở trang câu hỏi này →
3What is Cubit in BLoC?4 lựa chọnDễ100% trả lời đúng
AUI widget
BSimplified BLoC without events
CDatabase layer
DAnimation helper
Lời giải
Cubit là một khái niệm quan trọng trong kiến trúc BLoC của Flutter. Nó được định nghĩa là một lớp trừu tượng hóa các logic nghiệp vụ, giúp phân tách logic kinh doanh khỏi logic giao diện người dùng. Trong BLoC, Cubit được sử dụng như một lớp trạng thái trung gian, giúp lưu trữ và cập nhật trạng thái ứng dụng. Nó không phải là một UI widget, cũng không phải là một lớp cơ sở dữ liệu, cũng không phải là một lớp trợ giúp cho animation. Thay vào đó, Cubit là một lớp trừu tượng hóa các logic nghiệp vụ, giúp phân tách logic kinh doanh khỏi logic giao diện người dùng. Nó giúp chúng ta xây dựng các ứng dụng có khả năng mở rộng, dễ dàng bảo trì và sửa lỗi.
Mở trang câu hỏi này →
4Which Flutter package is commonly used for simple key-value storage?4 lựa chọnTrung bình50% trả lời đúng
Asqflite
Bshared_preferences
Cprovider
Dhttp
Lời giải
Flutter cung cấp nhiều cách để lưu trữ dữ liệu, nhưng khi nói đến việc lưu trữ giá trị cơ bản như chuỗi, số, boolean, v.v., thì package "shared_preferences" là lựa chọn phổ biến nhất. Package này cho phép bạn lưu trữ dữ liệu dưới dạng key-value, dễ dàng sử dụng và không yêu cầu cấu hình phức tạp. Bạn có thể sử dụng nó để lưu trữ thông tin người dùng, trạng thái ứng dụng, v.v. Package "shared_preferences" cũng hỗ trợ các phương thức như lưu trữ dữ liệu, đọc dữ liệu, xóa dữ liệu, v.v. Nó là một phần quan trọng của bất kỳ ứng dụng Flutter nào và được sử dụng rộng rãi trong cộng đồng phát triển Flutter.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Phương thức 'rootBundle.loadString()' được sử dụng để đọc các tệp JSON được lưu trữ cục bộ trong tài nguyên ứng dụng. Điều này cho phép bạn đọc dữ liệu từ tệp JSON mà không cần phải tải xuống từ mạng. Phương thức này thường được sử dụng để đọc các tệp cấu hình hoặc dữ liệu cần thiết cho ứng dụng. Để sử dụng phương thức này, bạn cần phải có quyền truy cập vào tài nguyên ứng dụng và tệp JSON cần đọc. Ngoài ra, bạn cũng cần phải đảm bảo rằng tệp JSON được lưu trữ trong thư mục 'assets' của dự án Android.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
SharedPreferences không phù hợp để lưu trữ các cơ sở dữ liệu JSON lớn trên thiết bị cục bộ. Điều này là vì SharedPreferences chỉ hỗ trợ lưu trữ dữ liệu dưới dạng chuỗi và không hỗ trợ lưu trữ dữ liệu phức tạp như JSON. Nếu bạn cần lưu trữ một lượng lớn dữ liệu JSON, bạn nên sử dụng cơ sở dữ liệu như SQLite hoặc các thư viện khác như Room.
Mở trang câu hỏi này →
ATemp may be cleaned by the OS; documents usually for user data to keep
BDocuments is RAM
CSame
DWeb only
Lời giải
So sánh giữa `getTemporaryDirectory` và `getApplicationDocumentsDirectory` là một vấn đề quan trọng trong lập trình di động. `getTemporaryDirectory` thường được sử dụng để lưu trữ dữ liệu tạm thời, chẳng hạn như tệp tin tải xuống hoặc tệp tin cache. Tuy nhiên, dữ liệu này có thể bị xóa bởi hệ điều hành bất cứ lúc nào, vì vậy nó không phải là nơi lưu trữ dữ liệu quan trọng. Ngược lại, `getApplicationDocumentsDirectory` thường được sử dụng để lưu trữ dữ liệu của người dùng, chẳng hạn như hình ảnh, video hoặc tệp tin khác. Dữ liệu này thường được giữ lại cho đến khi người dùng xóa nó.
Mở trang câu hỏi này →
8`sqflite` on classic Flutter Web?4 lựa chọn
ARequired on Web
BSame as mobile 100%
CUsually **not** equivalent — use other solutions (IndexedDB, Drift web, etc.)
DImages only
Lời giải
Khi sử dụng sqflite trên Flutter Web, bạn cần lưu ý rằng sqflite không phải là giải pháp tối ưu cho web. Sqflite được thiết kế cho các ứng dụng di động và có thể không tương thích hoàn toàn với các ứng dụng web. Vì vậy, khi sử dụng sqflite trên Flutter Web, bạn nên sử dụng các giải pháp khác như IndexedDB, Drift web, v.v. để lưu trữ dữ liệu. IndexedDB là một cơ sở dữ liệu được tích hợp sẵn trong trình duyệt web, cho phép bạn lưu trữ dữ liệu trong một cơ sở dữ liệu cục bộ. Drift web là một thư viện giúp bạn tạo ra các cơ sở dữ liệu dựa trên các mô hình dữ liệu. Sử dụng các giải pháp này sẽ giúp bạn có được hiệu suất và tính ổn định tốt hơn khi lưu trữ dữ liệu trên Flutter Web.
Mở trang câu hỏi này →
9Folder ui/screens usually contains?4 lựa chọn
AModels
BScreens
CAPI
DDatabase
Lời giải
Trong dự án ứng dụng di động, thư mục ui/screens thường chứa các màn hình giao diện người dùng (screens) được tạo bằng ngôn ngữ lập trình như React Native. Mỗi màn hình trong thư mục này đại diện cho một trang hoặc một hoạt động cụ thể trong ứng dụng. Ví dụ, có thể có màn hình đăng nhập, màn hình đăng ký, màn hình chủ, v.v. Mục đích của thư mục này là tổ chức và quản lý các màn hình giao diện người dùng một cách hiệu quả, giúp phát triển và bảo trì ứng dụng trở nên dễ dàng hơn.
Mở trang câu hỏi này →
Atester.pumpAndSettle()
BrootBundle.loadString()
CNavigator.pushNamed
Dtester.enterText()
Lời giải
Trong quá trình kiểm tra widget, hàm được sử dụng để kích hoạt một khung và chờ đợi cho đến khi các hiệu ứng hoạt hình hoàn tất là tester.pumpAndSettle(). Hàm này sẽ giúp hệ thống có thời gian để xử lý các hiệu ứng hoạt hình trước khi kiểm tra tiếp. Điều này rất quan trọng vì một số hiệu ứng hoạt hình có thể mất một khoảng thời gian để hoàn tất và nếu không chờ đợi, hệ thống có thể không thể kiểm tra được chính xác. Ví dụ, khi bạn sử dụng một nút bấm, hệ thống sẽ cần một khoảng thời gian để hiển thị hiệu ứng hoạt hình trước khi bạn có thể nhập tiếp thông tin. Vì vậy, sử dụng tester.pumpAndSettle() sẽ giúp hệ thống có thể kiểm tra được chính xác và hiệu quả hơn.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Thông báo địa phương là một yêu cầu tích hợp bắt buộc để đáp ứng Kết quả học tập 7 (LO7). Điều này có nghĩa là các ứng dụng phải có khả năng hiển thị thông báo cho người dùng ngay cả khi ứng dụng không hoạt động. Thông báo địa phương giúp người dùng nhận được thông tin quan trọng từ ứng dụng mà không cần phải mở ứng dụng lên. Ví dụ, ứng dụng có thể hiển thị thông báo nhắc nhở về một sự kiện quan trọng hoặc thông báo về một cập nhật mới. Việc tích hợp thông báo địa phương giúp tăng trải nghiệm người dùng và đảm bảo rằng người dùng nhận được thông tin quan trọng một cách kịp thời.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Câu hỏi này hỏi về khả năng của gói 'path_provider' trong việc truy cập các thư mục lưu trữ dữ liệu lâu dài như 'Application Documents'. Gói này cho phép ứng dụng truy cập các thư mục như thư mục lưu trữ dữ liệu, thư mục tải xuống, thư mục ảnh, v.v. Điều này giúp ứng dụng có thể lưu trữ và truy cập dữ liệu một cách dễ dàng và an toàn. Vì vậy, câu trả lời đúng là 'True', vì gói 'path_provider' thực sự cho phép ứng dụng truy cập các thư mục lưu trữ dữ liệu lâu dài.
Mở trang câu hỏi này →
AOS always deletes anytime
BOnly store APK
CUnreadable from Dart
DUser data to keep long-term (notes, export) beyond simple prefs
Lời giải
Trong lập trình di động, thư mục ứng dụng được lưu trữ trong bộ nhớ trong của thiết bị. Khi sử dụng JSON file trong thư mục này, `getApplicationDocumentsDirectory` thường được sử dụng để lưu trữ dữ liệu người dùng trong thời gian dài. Điều này có nghĩa là bạn có thể lưu trữ dữ liệu như ghi chú, xuất khẩu dữ liệu, v.v. mà không bị xóa khi ứng dụng được cập nhật hoặc xóa. Thay vào đó, dữ liệu sẽ được lưu trữ trong thư mục ứng dụng và có thể được truy cập lại sau này. Điều này rất hữu ích khi bạn cần lưu trữ dữ liệu người dùng một cách lâu dài và không muốn sử dụng các bộ nhớ tạm thời.
Mở trang câu hỏi này →
ADisable SQLite
BRead local first, sync when network is available
CNever online
DFirebase only
Lời giải
Offline-first là một khái niệm trong lập trình di động, đặc biệt là khi xây dựng ứng dụng di động. Nó có nghĩa là ứng dụng sẽ hoạt động bình thường ngay cả khi không có kết nối internet. Khi không có kết nối, ứng dụng sẽ lưu trữ dữ liệu trong bộ nhớ cục bộ của thiết bị. Khi kết nối internet trở lại, ứng dụng sẽ đồng bộ hóa dữ liệu cục bộ với dữ liệu trên máy chủ. Điều này giúp đảm bảo rằng dữ liệu luôn được cập nhật và đồng bộ, ngay cả khi không có kết nối internet.
Mở trang câu hỏi này →
15What happens if local storage fails?4 lựa chọn
AFallback logic is required
BData syncs
CApp crashes
DUI freezes
Lời giải
Nếu bộ nhớ lưu trữ địa phương thất bại, ứng dụng của bạn sẽ gặp phải một số vấn đề nghiêm trọng. Trong trường hợp này, logic dự phòng là cần thiết để đảm bảo ứng dụng của bạn vẫn hoạt động bình thường. Logic dự phòng là một phần quan trọng của thiết kế ứng dụng, giúp ứng dụng của bạn có thể tiếp tục hoạt động ngay cả khi bộ nhớ lưu trữ địa phương thất bại. Điều này có thể bao gồm việc lưu trữ dữ liệu vào bộ nhớ tạm thời, sử dụng cơ sở dữ liệu thay thế hoặc thực hiện các hành động khác để đảm bảo ứng dụng của bạn vẫn hoạt động tốt.
Mở trang câu hỏi này →
AHost web servers
BPersist user settings and small data
CManage network hardware
DCompile code
Lời giải
Tính năng lưu trữ cục bộ (local storage) trong ứng dụng được sử dụng chủ yếu để lưu trữ và quản lý dữ liệu nhỏ và các thiết lập người dùng. Điều này cho phép ứng dụng lưu trữ thông tin như danh sách yêu thích, cài đặt âm thanh và hình ảnh, và các dữ liệu khác mà không cần kết nối đến máy chủ. Tính năng này cũng giúp giảm tải cho máy chủ và cải thiện hiệu suất ứng dụng. Ngoài ra, lưu trữ cục bộ còn giúp bảo vệ dữ liệu người dùng khỏi bị mất khi họ rời khỏi ứng dụng hoặc khi ứng dụng bị đóng.
Mở trang câu hỏi này →
AStyle the UI
BManage network paths
CEncrypt data
DFind commonly used locations on the host file system
Lời giải
Package path_provider được sử dụng để tìm kiếm các vị trí thường được sử dụng trên hệ thống file host. Nó cung cấp các phương thức để truy cập các thư mục như thư mục tải xuống, thư mục cache, thư mục ứng dụng và thư mục lưu trữ tạm thời. Điều này giúp các nhà phát triển có thể dễ dàng quản lý và truy cập các dữ liệu được lưu trữ trên hệ thống file host. Ví dụ, bạn có thể sử dụng package này để lưu trữ các tệp tin tải xuống trong thư mục tải xuống hoặc lưu trữ các tệp tin cache trong thư mục cache.
Mở trang câu hỏi này →
AFlutter SDK version
BDatabase schema version for migrations
CPackage version
DApp version
Lời giải
Tính chất của thuộc tính version trong hàm openDatabase() là để xác định phiên bản schema của cơ sở dữ liệu. Khi bạn mở cơ sở dữ liệu, bạn cần cung cấp phiên bản hiện tại của schema để Flutter có thể thực hiện các bản cập nhật hoặc di chuyển sang phiên bản mới. Điều này giúp đảm bảo rằng cơ sở dữ liệu luôn được cập nhật và đồng bộ với ứng dụng. Ví dụ, nếu bạn muốn thêm hoặc xóa một bảng trong cơ sở dữ liệu, bạn cần tăng phiên bản schema để Flutter biết rằng cần thực hiện các thay đổi này.
Mở trang câu hỏi này →
AWhen there is no disk
BAlways
CPrefs store unlimited arbitrary types
DWhen you need structured lists/objects beyond simple key–value
Lời giải
Khi chọn JSON file + `path_provider` so với SharedPreferences, bạn nên chọn khi cần lưu trữ danh sách hoặc đối tượng có cấu trúc phức tạp hơn so với các cặp giá trị - khóa đơn giản. Ví dụ, bạn cần lưu trữ một danh sách các sản phẩm với thông tin chi tiết như tên, giá, hình ảnh, v.v. hoặc một đối tượng người dùng với thông tin như tên, tuổi, địa chỉ, v.v. Trong trường hợp này, JSON file + `path_provider` sẽ giúp bạn lưu trữ và quản lý dữ liệu một cách hiệu quả hơn so với SharedPreferences.
Mở trang câu hỏi này →
Apath_provider
Bpubspec.yaml
Cdart:convert
DMediaQuery
Lời giải
Để sử dụng hàm `json.decode()` trong Dart, bạn cần sử dụng thư viện nào?
Mở trang câu hỏi này →