PRM393Chưa đoKỳ 8Chuyên ngành Cập nhật 07/09/2026
Lập trình di động (Flutter) - Mobile Programming
512Câu hỏi
1Bộ đề
15Chủ đề
5,02 đánh giá
Thử sức tại chỗ
Trả lời ngay tại đây
1PRM393 - Xác thực và phiên đăng nhập
Which widget pattern protects authenticated routes?
2PRM393 - Dart nâng cao: OOP, thư viện, cấu trúc điều khiển
Why are tests important for refactoring?
3PRM393 - Hiệu năng và triển khaiDễ
What is the role of BuildContext in Flutter?
Còn 3 câu nữa ở trên
Trả lời hết các câu trên để xem tổng kết, hoặc vào phiên học ngay.
Học từ ngân hàng câu hỏi
Bắt đầu một phiên học theo môn
Tiến độ của bạn luôn được tính và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.
512Ngân hàng hiện tại--Tiến độ môn
Câu hỏi của môn
24/512 câuCòn 488
5How is the Flutter UI constructed internally?4 lựa chọnTrung bình67% trả lời đúng
AUsing XML layout files
BUsing HTML and CSS
CUsing a hierarchical widget tree
DUsing native UI components only
Lời giải
Mở trang câu hỏi này →Flutter UI được xây dựng nội bộ bằng cách sử dụng một cây widget cấp bậc. Mỗi ứng dụng Flutter đều có một cây widget cấp bậc duy nhất, bắt đầu từ một widget gốc (root widget). Cây widget này được xây dựng bằng cách sử dụng các widget con, mỗi widget con được tạo ra từ một lớp widget cụ thể. Các widget con này được kết nối với nhau bằng cách sử dụng các thuộc tính như padding, margin, và vị trí. Điều này cho phép các nhà phát triển tạo ra các giao diện người dùng phức tạp và linh hoạt. Ngoài ra, cây widget cấp bậc cũng cho phép Flutter thực hiện hiệu suất cao và tối ưu hóa tài nguyên.
6Which widget enables custom scroll effects in Flutter?4 lựa chọnKhó33% trả lời đúng
A
ListViewB
SingleChildScrollViewC
CustomScrollViewD
ColumnLời giải
Mở trang câu hỏi này →Trong Flutter, CustomScrollView là một widget cho phép tạo ra các hiệu ứng cuộn tùy chỉnh. Nó cung cấp các phương thức để tạo ra các hiệu ứng cuộn phức tạp như cuộn theo chiều ngang, cuộn theo chiều dọc, hoặc thậm chí là cuộn theo cả hai chiều cùng lúc. CustomScrollView cũng cho phép bạn thêm các widget khác vào bên trong nó, tạo ra một cấu trúc dữ liệu phức tạp và linh hoạt. Điều này làm cho CustomScrollView trở thành một lựa chọn tuyệt vời cho các ứng dụng cần có hiệu ứng cuộn tùy chỉnh.
ALarge widget trees
BSplitting widgets
CGlobal state
DFrequent rebuilds
Lời giải
Mở trang câu hỏi này →Để cải thiện hiệu suất rendering, người dùng cần hiểu về các yếu tố ảnh hưởng đến hiệu suất này. Trong các lựa chọn trên, "Splitting widgets" là phương pháp hiệu quả nhất. Khi widget được chia nhỏ, mỗi phần sẽ được render độc lập, giảm thiểu thời gian cần thiết để render toàn bộ widget. Điều này đặc biệt hữu ích khi widget có nhiều thành phần hoặc cần render nhanh chóng. Ngoài ra, việc chia nhỏ widget cũng giúp giảm thiểu việc sử dụng tài nguyên hệ thống, cải thiện hiệu suất tổng thể của ứng dụng.
8What does an integration test verify?4 lựa chọnTrung bình50% trả lời đúng
ASingle function
BWidget rendering
CEnd-to-end app behavior
DTheme consistency
Lời giải
Mở trang câu hỏi này →Một bài kiểm tra tích hợp (integration test) là một loại kiểm tra phần mềm được sử dụng để xác minh rằng các thành phần khác nhau của một ứng dụng hoạt động cùng nhau một cách chính xác. Bài kiểm tra này không chỉ kiểm tra một chức năng đơn lẻ mà còn kiểm tra cách các chức năng khác nhau tương tác với nhau. Ví dụ, một bài kiểm tra tích hợp có thể kiểm tra việc đăng nhập vào ứng dụng, sau đó thêm một sản phẩm vào giỏ hàng và cuối cùng thực hiện thanh toán. Điều này giúp đảm bảo rằng ứng dụng hoạt động một cách trơn tru và không có lỗi khi người dùng tương tác với nó.
AReduce code size
BImprove maintainability
CFaster execution
DBetter animations
Lời giải
Mở trang câu hỏi này →Việc tách rời logic UI và logic trạng thái được khuyến nghị vì nó giúp cải thiện tính bảo trì của ứng dụng. Khi logic UI và trạng thái được tách rời, mỗi phần có thể được phát triển và bảo trì độc lập mà không ảnh hưởng đến phần còn lại của ứng dụng. Điều này giúp giảm thiểu sự phức tạp và tăng cường khả năng mở rộng của ứng dụng. Ngoài ra, việc tách rời logic UI và trạng thái cũng giúp giảm thiểu sự lặp lại mã và tăng cường khả năng tái sử dụng mã. Điều này giúp giảm thiểu thời gian và chi phí phát triển ứng dụng.
10When does Flutter rebuild the widget tree?4 lựa chọn
AOn every frame
BWhen state changes
COnly when app restarts
DOnly during hot restart
Lời giải
Mở trang câu hỏi này →Flutter sẽ rebuild cây widget khi nào? Cây widget trong Flutter là một cấu trúc dữ liệu được sử dụng để hiển thị giao diện người dùng. Khi một widget thay đổi trạng thái, Flutter sẽ rebuild cây widget để cập nhật giao diện người dùng. Điều này xảy ra vì Flutter sử dụng một phương pháp gọi là "build once, run many" để tối ưu hóa hiệu suất. Khi một widget thay đổi trạng thái, Flutter sẽ gọi lại phương thức build() của widget đó để tạo lại cây widget mới. Điều này giúp đảm bảo rằng giao diện người dùng luôn được cập nhật và chính xác.
11Which concept does BLoC heavily rely on?4 lựa chọnTrung bình67% trả lời đúng
A
FutureB
StreamC
AnimationD
ThemeLời giải
Mở trang câu hỏi này →BLoC (Business Logic Component) là một mô hình thiết kế ứng dụng được sử dụng rộng rãi trong lập trình di động. Nó được thiết kế để tách biệt logic kinh doanh khỏi giao diện người dùng, giúp ứng dụng trở nên dễ dàng bảo trì và mở rộng hơn. BLoC dựa trên khái niệm Stream, một loại dữ liệu có thể thay đổi theo thời gian. Stream cho phép ứng dụng cập nhật trạng thái một cách dễ dàng và đồng bộ, giúp đảm bảo ứng dụng luôn hiển thị trạng thái mới nhất. Ngoài ra, Stream cũng cho phép ứng dụng xử lý các sự kiện và dữ liệu một cách linh hoạt và hiệu quả.
12Why is version control critical?4 lựa chọn
AUI changes
BTrack and manage code changes
CImprove animations
DStore data
Lời giải
Mở trang câu hỏi này →Sử dụng phiên bản kiểm soát là một phần quan trọng trong quy trình phát triển phần mềm. Nó cho phép các nhà phát triển theo dõi và quản lý các thay đổi trong mã nguồn. Điều này giúp họ dễ dàng nhận biết và sửa lỗi, đồng thời cũng giúp họ có thể dễ dàng hợp tác với nhau. Khi sử dụng phiên bản kiểm soát, các nhà phát triển có thể dễ dàng xem lại lịch sử thay đổi, quay lại các phiên bản trước đó, và thậm chí là hợp nhất các thay đổi từ các phiên bản khác nhau. Điều này giúp tăng cường độ tin cậy và hiệu suất của dự án.
13Why is immutability important in BLoC states?4 lựa chọnTrung bình67% trả lời đúng
AUI speed
BPredictable state changes
CMemory usage
DTheme control
Lời giải
Mở trang câu hỏi này →Immutability trong các trạng thái BLoC là một tính chất quan trọng vì nó đảm bảo rằng trạng thái của ứng dụng luôn được dự đoán được. Khi một trạng thái được thay đổi, nó sẽ tạo ra một bản sao mới của trạng thái đó, thay vì thay đổi trực tiếp trạng thái hiện tại. Điều này giúp ngăn chặn các vấn đề liên quan đến trạng thái không được cập nhật một cách đồng bộ, từ đó cải thiện tốc độ và độ ổn định của ứng dụng. Ngoài ra, tính immutability còn giúp giảm thiểu các vấn đề liên quan đến đồng bộ hóa trạng thái giữa các phần tử trong ứng dụng, giúp ứng dụng trở nên dễ dàng hơn trong việc quản lý và bảo trì.
14Which Flutter plugin provides SQLite support?4 lựa chọnDễ75% trả lời đúng
A
hiveB
moorC
sqfliteD
shared_preferencesLời giải
Mở trang câu hỏi này →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.
15What is the main benefit of using Maps in Dart?4 lựa chọn
AStoring values without keys
BStoring key-value pairs
CRendering UI components
DManaging asynchronous tasks
Lời giải
Mở trang câu hỏi này →Maps trong Dart là một cấu trúc dữ liệu mạnh mẽ giúp lưu trữ và truy xuất dữ liệu một cách hiệu quả. Khi sử dụng Maps, bạn có thể lưu trữ các giá trị theo cặp khóa-giá trị (key-value pairs), điều này giúp bạn có thể truy xuất và cập nhật dữ liệu một cách dễ dàng và nhanh chóng. Ví dụ, bạn có thể sử dụng Maps để lưu trữ thông tin về người dùng, bao gồm tên, tuổi, địa chỉ, v.v. Mỗi khóa sẽ đại diện cho một thuộc tính, và giá trị tương ứng sẽ chứa thông tin chi tiết về thuộc tính đó. Điều này giúp bạn có thể quản lý và truy xuất dữ liệu một cách hiệu quả, giảm thiểu thời gian và công sức.
AInspector
BDevTools
CEmulator
DHot reload
Lời giải
Mở trang câu hỏi này →Để phân tích hiệu suất giao diện người dùng (UI) trong Flutter, bạn cần sử dụng công cụ phù hợp. Trong số các lựa chọn trên, công cụ giúp phân tích hiệu suất UI trong Flutter là DevTools. DevTools là một công cụ mạnh mẽ giúp bạn phân tích hiệu suất ứng dụng, bao gồm cả hiệu suất UI. Nó cho phép bạn xem xét các thông số như thời gian phản hồi, thời gian tải trang và các thông số khác. Ngoài ra, DevTools còn giúp bạn tìm kiếm và sửa lỗi hiệu suất ứng dụng một cách hiệu quả.
17What does a Dart class primarily represent?4 lựa chọn
AA UI widget only
BA blueprint for creating objects
CA database table
DA network request
Lời giải
Mở trang câu hỏi này →Một lớp Dart (class) chủ yếu đại diện cho một bản thiết kế chung (blueprint) để tạo ra các đối tượng (objects). Nó cung cấp một mô hình cơ bản cho việc tạo ra các đối tượng có tính chất và hành vi nhất định. Lớp Dart có thể được sử dụng để tạo ra các đối tượng có thể được sử dụng trong ứng dụng, chẳng hạn như các đối tượng UI, dữ liệu, v.v. Khi bạn tạo một lớp Dart, bạn có thể định nghĩa các thuộc tính (properties) và phương thức (methods) của lớp đó, giúp bạn có thể tạo ra các đối tượng có tính chất và hành vi mong muốn. Điều này giúp cho việc lập trình trở nên dễ dàng và hiệu quả hơn.
18What is the purpose of SliverAppBar?4 lựa chọnTrung bình67% trả lời đúng
AStatic app bar
BScrollable flexible app bar
CBottom navigation
DDrawer control
Lời giải
Mở trang câu hỏi này →SliverAppBar là một widget trong Flutter giúp tạo một thanh điều hướng có thể cuộn. Nó cho phép thanh điều hướng được ẩn khi người dùng cuộn lên, tạo ra một giao diện đẹp mắt và dễ sử dụng. Khi người dùng cuộn xuống, thanh điều hướng sẽ xuất hiện trở lại, giúp người dùng dễ dàng điều hướng qua các trang khác nhau trong ứng dụng. SliverAppBar cũng cho phép người dùng tùy chỉnh các thuộc tính như màu sắc, hình ảnh, và nội dung của thanh điều hướng.
19What 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
Mở trang câu hỏi này →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.
20Which HTTP header is commonly used for authorization?4 lựa chọnDễ75% trả lời đúng
AContent-Type
BAccept
CAuthorization
DCache-Control
Lời giải
Mở trang câu hỏi này →HTTP header được sử dụng phổ biến cho việc xác thực quyền truy cập là Authorization. Header này được sử dụng để xác thực người dùng khi thực hiện yêu cầu HTTP. Nó chứa thông tin về token hoặc chứng chỉ xác thực được sử dụng để xác thực người dùng. Ví dụ, khi thực hiện yêu cầu HTTP, người dùng có thể gửi header Authorization với giá trị là token hoặc chứng chỉ xác thực của họ. Server sẽ sử dụng thông tin này để xác thực người dùng và quyết định có cho phép truy cập hay không. Header Authorization là một phần quan trọng của cơ chế xác thực quyền truy cập trong HTTP.
21What does TextEditingController manage?4 lựa chọnDễ100% trả lời đúng
ATheme
BText input value
CValidation rules
DLayout constraints
Lời giải
Mở trang câu hỏi này →ControllerText được sử dụng để quản lý giá trị nhập vào của một trường văn bản trong ứng dụng Android. Nó cho phép bạn lấy và cập nhật giá trị của trường văn bản một cách dễ dàng. Ngoài ra, nó cũng cung cấp các phương thức để kiểm tra và sửa lỗi giá trị nhập vào. Trong một ứng dụng Android, ControllerText thường được sử dụng trong các trường văn bản để quản lý giá trị nhập vào của người dùng.
22Why is Dart considered suitable for Flutter development?4 lựa chọnDễ100% trả lời đúng
AIt is only used for backend systems
BIt supports both UI and application logic efficiently
CIt replaces native languages
DIt does not support asynchronous programming
Lời giải
Mở trang câu hỏi này →Dart được coi là một ngôn ngữ phù hợp cho phát triển Flutter vì nó hỗ trợ cả logic ứng dụng và giao diện người dùng một cách hiệu quả. Dart cung cấp các tính năng như lập trình hướng đối tượng, lập trình hàm và hỗ trợ đa luồng, giúp các nhà phát triển có thể xây dựng các ứng dụng đa nền tảng một cách dễ dàng. Ngoài ra, Dart cũng hỗ trợ các tính năng như mã hóa và giải mã dữ liệu, giúp các ứng dụng Flutter có thể tương tác với các dịch vụ mạng và cơ sở dữ liệu một cách hiệu quả.
23What does the build() method return in a widget?4 lựa chọnDễ100% trả lời đúng
AA screen
BA widget tree describing the UI
CApplication state
DRendered pixels
Lời giải
Mở trang câu hỏi này →Phương thức build() trong một widget là một phần quan trọng trong quá trình tạo ra giao diện người dùng. Nó được sử dụng để xác định cấu trúc của giao diện người dùng. Khi bạn gọi phương thức build(), nó sẽ trả về một cây widget mô tả giao diện người dùng. Cây widget này bao gồm tất cả các widget con và các thuộc tính của chúng. Điều này cho phép bạn tạo ra giao diện người dùng phức tạp và linh hoạt. Ví dụ, bạn có thể tạo ra một cây widget mô tả một màn hình đăng nhập với các widget con như trường nhập liệu và nút đăng nhập. Phương thức build() là một công cụ mạnh mẽ giúp bạn tạo ra giao diện người dùng tùy chỉnh và hiệu quả.
24What represents the output of a BLoC?4 lựa chọnDễ75% trả lời đúng
A
EventsB
WidgetsC
StatesD
ControllersLời giải
Mở trang câu hỏi này →BLoC (Business Logic Component) là một mô hình thiết kế được sử dụng trong lập trình di động. Nó giúp tách biệt logic kinh doanh khỏi giao diện người dùng. Output của BLoC thường được biểu diễn dưới dạng trạng thái (States). Trạng thái này có thể được sử dụng để cập nhật giao diện người dùng hoặc thực hiện các hành động khác. Các trạng thái có thể bao gồm thông tin về dữ liệu, trạng thái của ứng dụng, v.v. Trong khi các sự kiện (Events), widget và controller đều đóng vai trò quan trọng trong ứng dụng di động, nhưng chúng không phải là output của BLoC.