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á
Câu hỏi của môn
44/512 câuCòn 468
25What 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
Mở trang câu hỏi này →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.
ADeploying to app stores
BRunning the default app on a device
CConfiguring authentication
DOptimizing database queries
Lời giải
Mở trang câu hỏi này →Sau khi tạo một dự án Flutter mới, hoạt động thường được thực hiện tiếp theo là chạy ứng dụng mặc định trên thiết bị. Điều này cho phép bạn kiểm tra xem ứng dụng có hoạt động đúng như mong đợi hay không. Khi chạy ứng dụng, bạn có thể xem xét giao diện người dùng, chức năng và các tính năng khác của ứng dụng. Ngoài ra, chạy ứng dụng trên thiết bị cũng giúp bạn phát hiện và sửa lỗi sớm hơn. Vì vậy, chạy ứng dụng mặc định trên thiết bị là một bước quan trọng trong quá trình phát triển ứng dụng Flutter.
27Which practice improves deployment security?4 lựa chọn
ADebug builds
BSecure signing keys
CHardcoding secrets
DSkipping validation
Lời giải
Mở trang câu hỏi này →Để cải thiện bảo mật khi triển khai ứng dụng, chúng ta cần xem xét các lựa chọn sau. Debug builds (chạy ứng dụng với chế độ debug) không liên quan trực tiếp đến bảo mật triển khai. Hardcoding secrets (đặt bí mật vào mã nguồn) là một thói quen xấu vì nó có thể tiết lộ thông tin nhạy cảm. Skipping validation (bỏ qua xác thực) cũng không phải là một lựa chọn tốt vì nó có thể dẫn đến việc ứng dụng không được kiểm tra đúng cách. Secure signing keys (khai thác khóa ký số an toàn) là một thực hành tốt vì nó giúp đảm bảo rằng ứng dụng được tải xuống và chạy trên thiết bị chính xác mà nó được thiết kế cho. Điều này giúp ngăn chặn các cuộc tấn công từ bên ngoài và bảo vệ ứng dụng khỏi bị xâm phạm.
28Why is Chapter 14 considered optional (Plus)?4 lựa chọnDễ
ADeployment is UI logic
BApps can be tested without publishing
CIt replaces authentication
DIt handles APIs
Lời giải
Mở trang câu hỏi này →Chương 14 được coi là tùy chọn (Plus) vì nó cung cấp một số tính năng đặc biệt mà không phải tất cả các dự án đều cần. Một trong những lý do chính là ứng dụng có thể được thử nghiệm mà không cần xuất bản. Điều này cho phép các nhà phát triển kiểm tra và thử nghiệm ứng dụng của mình mà không cần phải xuất bản nó lên môi trường sản xuất. Điều này giúp tiết kiệm thời gian và giảm thiểu rủi ro khi thử nghiệm ứng dụng.
AManage navigation
BDefine application-wide visual styles
CHandle state changes
DControl animations
Lời giải
Mở trang câu hỏi này →ThemaData trong Flutter là một lớp giúp định nghĩa các kiểu thiết kế chung cho ứng dụng. Nó cho phép bạn quản lý các yếu tố thiết kế như màu sắc, kiểu font, kích thước và kiểu dáng của các thành phần UI. Bằng cách sử dụng ThemeData, bạn có thể tạo ra một phong cách thiết kế thống nhất cho toàn bộ ứng dụng, giúp tạo ra một trải nghiệm người dùng đồng nhất và chuyên nghiệp. ThemeData cũng cho phép bạn điều chỉnh các yếu tố thiết kế dựa trên các điều kiện khác nhau, chẳng hạn như nền tảng, kích thước màn hình và chủ đề ứng dụng. Điều này giúp bạn có thể tạo ra các ứng dụng có thể tương tác tốt với người dùng trên nhiều thiết bị và nền tảng khác nhau.
30Which method is used to update the UI when state changes?4 lựa chọnDễ100% trả lời đúng
A
build()B
setState()C
initState()D
dispose()Lời giải
Mở trang câu hỏi này →Khi trạng thái thay đổi, phương thức được sử dụng để cập nhật giao diện người dùng là setState(). Phương thức setState() cho phép cập nhật trạng thái của ứng dụng một cách an toàn và hiệu quả. Nó được sử dụng rộng rãi trong các ứng dụng React để phản ứng với các sự kiện và cập nhật giao diện người dùng theo thời gian thực. Phương thức setState() có thể được gọi từ bất kỳ đâu trong ứng dụng, bao gồm cả các hàm và các phương thức khác. Nó sẽ tự động cập nhật giao diện người dùng sau khi trạng thái được thay đổi.
31Which Flutter package is commonly used for simple key-value storage?4 lựa chọnTrung bình
A
sqfliteB
shared_preferencesC
providerD
httpLời giải
Mở trang câu hỏi này →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.
32Why should architecture be decided early?4 lựa chọnDễ
AAvoid UI work
BReduce refactoring cost
CImprove animations
DChange theme
Lời giải
Mở trang câu hỏi này →Khi xây dựng một ứng dụng, việc quyết định kiến trúc sớm có ý nghĩa quan trọng. Điều này giúp tránh những vấn đề phức tạp và tốn thời gian trong tương lai. Nếu kiến trúc được quyết định sớm, các nhà phát triển có thể tránh phải thực hiện nhiều công việc sửa đổi (refactoring) sau này. Việc sửa đổi kiến trúc có thể tốn nhiều thời gian và công sức, đặc biệt là khi ứng dụng đã được triển khai. Ngoài ra, việc quyết định kiến trúc sớm cũng giúp cải thiện hiệu suất và độ tin cậy của ứng dụng. Vì vậy, việc quyết định kiến trúc sớm là một phần quan trọng trong quy trình phát triển phần mềm.
33What is pagination used for?4 lựa chọn
AUI animation
BHandling large datasets efficiently
CTheme management
DAuthentication
Lời giải
Mở trang câu hỏi này →Trang trí là một kỹ thuật được sử dụng để quản lý và phân trang dữ liệu lớn trong các ứng dụng web. Nó giúp người dùng dễ dàng duyệt qua các trang dữ liệu khác nhau, giảm thiểu thời gian tải dữ liệu và cải thiện hiệu suất của ứng dụng. Khi dữ liệu lớn, việc hiển thị tất cả dữ liệu trên một trang sẽ gây ra sự chậm chạp và khó sử dụng. Trang trí giúp giải quyết vấn đề này bằng cách phân chia dữ liệu thành các trang nhỏ, mỗi trang chỉ hiển thị một lượng dữ liệu nhất định. Điều này cho phép người dùng dễ dàng chuyển đổi giữa các trang và tìm kiếm thông tin mong muốn.
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.
35Which widget is used to handle asynchronous API responses in UI?4 lựa chọnKhó33% 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.
AWidgets
BPackages and imports
CHot reload
DLayout constraints
Lời giải
Mở trang câu hỏi này →Dart cung cấp một số tính năng giúp tổ chức mã nguồn vào các thư viện có thể tái sử dụng. Thư viện là một tập hợp các mã nguồn có thể được sử dụng lại trong nhiều dự án khác nhau. Trong Dart, tính năng giúp tổ chức mã nguồn vào các thư viện có thể tái sử dụng là Packages và imports. Packages là các thư viện có thể được tải xuống và sử dụng trong dự án của bạn, trong khi imports là cách để bạn thêm các thư viện vào dự án của mình. Điều này giúp giảm thiểu sự lặp lại và tăng cường tính tái sử dụng của mã nguồn.
37What is refresh token used for?4 lựa chọn
AUI refresh
BExtend session without re-login
CTheme update
DNavigation reset
Lời giải
Mở trang câu hỏi này →Refresh token được sử dụng để mở rộng phiên hoạt động mà không cần phải đăng nhập lại. Khi bạn đăng nhập vào một ứng dụng, bạn sẽ nhận được một token truy cập và một token refresh. Token truy cập được sử dụng để xác thực các yêu cầu đến server, trong khi token refresh được sử dụng để yêu cầu một token truy cập mới khi token hiện tại đã hết hạn. Điều này giúp bạn tiếp tục sử dụng ứng dụng mà không cần phải đăng nhập lại mỗi khi token truy cập hết hạn. Ngoài ra, sử dụng token refresh còn giúp giảm thiểu số lần yêu cầu đăng nhập, cải thiện trải nghiệm người dùng và tăng cường bảo mật.
38What is rebuild scope optimization in Flutter?4 lựa chọnDễ100% trả lời đúng
AReducing widget tree depth
BLimiting rebuild to affected widgets
CCaching API responses
DUsing global state
Lời giải
Mở trang câu hỏi này →Tối ưu hóa phạm vi xây dựng lại (rebuild scope optimization) trong Flutter là một kỹ thuật giúp tối ưu hóa hiệu suất ứng dụng bằng cách hạn chế việc xây dựng lại (rebuild) các widget không cần thiết. Khi một widget thay đổi, Flutter sẽ tự động xây dựng lại toàn bộ cây widget để phản ánh sự thay đổi này. Tuy nhiên, việc này có thể dẫn đến lãng phí tài nguyên và giảm hiệu suất ứng dụng. Tối ưu hóa phạm vi xây dựng lại giúp Flutter chỉ xây dựng lại các widget bị ảnh hưởng trực tiếp bởi sự thay đổi, từ đó giảm thiểu lãng phí tài nguyên và tăng hiệu suất ứng dụng.
39Why is BLoC suitable for large teams?4 lựa chọnDễ100% trả lời đúng
ALess code
BStandardized architecture
CFaster builds
DUI reuse
Lời giải
Mở trang câu hỏi này →BLoC (Business Logic Component) là một mô hình kiến trúc phổ biến trong lập trình ứng dụng di động. Nó được thiết kế để giúp các đội ngũ phát triển lớn hóa giải quyết các vấn đề phức tạp trong việc quản lý logic kinh doanh. Một trong những lý do khiến BLoC phù hợp cho các đội ngũ lớn là kiến trúc được tiêu chuẩn hóa. Điều này giúp các thành viên trong đội ngũ dễ dàng hiểu và làm việc với nhau, giảm thiểu sự phức tạp và tăng cường hiệu suất. Khi sử dụng BLoC, các thành viên trong đội ngũ có thể tập trung vào việc phát triển các phần tử ứng dụng riêng lẻ mà không cần lo lắng về việc quản lý logic kinh doanh chung. Điều này giúp tăng cường hiệu suất và giảm thiểu thời gian phát triển.
40Which widget reacts to async data from local storage?4 lựa chọnTrung bình50% trả lời đúng
A
FutureBuilderB
StreamBuilderC
ListViewD
ProviderLời giải
Mở trang câu hỏi này →Để chọn widget phù hợp với dữ liệu bất đồng bộ từ local storage, chúng ta cần xem xét các tính năng của từng widget. FutureBuilder là một widget được thiết kế để xử lý dữ liệu bất đồng bộ, nó có thể nhận dữ liệu từ các nguồn như local storage và cập nhật giao diện dựa trên dữ liệu đó. StreamBuilder cũng có thể xử lý dữ liệu bất đồng bộ, nhưng nó thường được sử dụng với các nguồn dữ liệu như Stream. ListView là một widget để hiển thị danh sách dữ liệu, nhưng nó không xử lý dữ liệu bất đồng bộ. Provider là một thư viện để quản lý trạng thái ứng dụng, nhưng nó không phải là một widget để xử lý dữ liệu bất đồng bộ. Vì vậy, trong trường hợp này, FutureBuilder là lựa chọn phù hợp.
41What is a token in authentication systems?4 lựa chọn
AUI key
BTemporary access credential
CDatabase ID
DTheme value
Lời giải
Mở trang câu hỏi này →Trong hệ thống xác thực, một token (hay còn gọi là token truy cập tạm thời) là một chuỗi ký tự được sử dụng để xác thực người dùng. Nó thường được tạo ra khi người dùng thực hiện một hành động xác thực, chẳng hạn như đăng nhập vào hệ thống. Token này sau đó được sử dụng để xác thực người dùng trong các yêu cầu tiếp theo, thay vì phải nhập lại thông tin đăng nhập. Điều này giúp tăng cường bảo mật và giảm thiểu rủi ro bị xâm nhập bởi các cuộc tấn công từ bên ngoài. Token thường có thời hạn sử dụng nhất định và sẽ hết hạn sau một khoảng thời gian nhất định. Khi hết hạn, người dùng sẽ cần phải thực hiện lại hành động xác thực để nhận được một token mới.
42What does a Tween define?4 lựa chọnDễ75% trả lời đúng
AAnimation speed
BValue range for animation
CUI layout
DState logic
Lời giải
Mở trang câu hỏi này →Tween trong lập trình đồ họa là một thuật ngữ dùng để chỉ một đoạn animation được định nghĩa bởi một giá trị ban đầu và một giá trị cuối cùng. Nó thường được sử dụng để mô tả một quá trình chuyển đổi từ một trạng thái ban đầu sang một trạng thái cuối cùng trong một khoảng thời gian nhất định. Trong nhiều trường hợp, Tween được sử dụng để tạo ra các hiệu ứng animation như di chuyển, thay đổi kích thước, màu sắc, v.v. của các đối tượng trong một ứng dụng. Nó giúp tạo ra một trải nghiệm người dùng thú vị và hấp dẫn hơn. Trong câu hỏi này, Tween được định nghĩa là phạm vi giá trị cho animation, điều này có nghĩa là nó xác định khoảng giá trị mà animation sẽ di chuyển từ ban đầu đến cuối cùng.
A
MixinsB
GenericsC
FuturesD
StreamsLời giải
Mở trang câu hỏi này →Tính năng Dart cho phép định nghĩa các thành phần có thể tái sử dụng và an toàn về kiểu dữ liệu là Generics. Generics cho phép bạn định nghĩa các lớp hoặc hàm có thể hoạt động với nhiều loại dữ liệu khác nhau mà không cần phải viết lại mã nguồn. Điều này giúp tăng cường tính linh hoạt và tái sử dụng của mã nguồn Dart. Ví dụ, bạn có thể định nghĩa một lớp danh sách có thể chứa các phần tử có kiểu dữ liệu khác nhau, chẳng hạn như số nguyên, chuỗi hoặc đối tượng.
44Which widget animates between two widgets?4 lựa chọn
A
AnimatedSwitcherB
AnimatedOpacityC
AnimatedAlignD
AnimatedSizeLời giải
Mở trang câu hỏi này →Widget được sử dụng để animates giữa hai widget là AnimatedSwitcher. AnimatedSwitcher cho phép bạn thay đổi widget một cách mượt mà và đẹp mắt. Nó thường được sử dụng khi bạn cần thay đổi nội dung của một widget mà không muốn gây ra sự giật hoặc mất ổn định. Ví dụ, bạn có thể sử dụng AnimatedSwitcher để thay đổi hình ảnh hoặc văn bản của một widget khi người dùng nhấp vào nó. Ngoài ra, AnimatedSwitcher cũng có thể được sử dụng để thay đổi kích thước hoặc vị trí của một widget.