Qiz HUB Logo
QizHUB
QUESTION LIBRARY

Trang chủ
Môn học
Chủ đề
Đề thi
Câu hỏi
Thẻ

Đăng nhập
Qiz HUB Logo
QizHUB
QUESTION LIBRARY PLATFORM
Trang chủMôn họcChủ đềNhóm họcThẻ
Luyện đề ngayĐăng nhập
PrivacyTermsCookieAdsads.txtrobotssitemap
Trang chủMôn họcLập trình di động (Flutter) - Mobile Programming
Hỗ trợ đào tạo

Lập trình di động (Flutter) - Mobile Programming

15Chủ đề
490Câu hỏi

Lập trình di động với Flutter là môn học xây dựng ứng dụng đa nền tảng Android và iOS bằng Flutter và ngôn ngữ Dart. Ngân hàng câu hỏi trắc nghiệm PRM393 có đáp án bao quát trọn bộ chương trình: cài đặt Flutter SDK, cấu trúc project, hot reload và DevTools, nền tảng Dart (kiểu dữ liệu, null safety, class, collection, Map, generics, mixin, package và import), lập trình bất đồng bộ với Future, async/await, Stream, StreamController và StreamBuilder, dựng giao diện bằng widget tree, Scaffold, ListView, ThemeData, bố cục Row/Column, GridView, Stack, LayoutBuilder, MediaQuery và responsive UI, điều hướng với Navigator 1.0/2.0, named route, deep link và guarded route, form với TextEditingController và validation, gọi REST API bằng http, parse JSON, FutureBuilder, phân trang và caching, lưu trữ cục bộ bằng SharedPreferences, SQLite (sqflite) và Hive, xác thực bằng token và refresh token, quản lý state với setState, Provider, BLoC và Cubit, animation với Tween cùng AnimatedSwitcher, tối ưu hiệu năng bằng RepaintBoundary và thu hẹp phạm vi rebuild, kiểm thử unit/widget/integration, quản lý mã nguồn bằng Git và build - release ứng dụng. Tài liệu ôn thi FE dành cho sinh viên FPT University.

Chủ đề học tập

Mobile Programming

PRM393 - Bất đồng bộ: Future, async/await, Stream

Xử lý bất đồng bộ trong Dart: Future đại diện cho một giá trị sẽ có trong tương lai, Stream cung cấp chuỗi sự kiện liên tục. Chủ đề làm rõ cách đánh dấu hàm async, dùng await để chờ Future, kiểu trả về luôn là Future dù thân hàm trả giá trị thường, xử lý lỗi bằng try-catch trong hàm async, chuỗi .then(), Future.delayed để mô phỏng độ trễ mạng, StreamController.broadcast cho nhiều listener, và thứ tự ưu tiên microtask trên event queue.

0Bộ đề
45+Câu hỏi
Mobile Programming

PRM393 - Bố cục và layout

Dựng bố cục trong Flutter theo mô hình cha truyền ràng buộc — con chọn kích thước. Chủ đề bao quát Column xếp dọc và Row xếp ngang, Container gộp padding, margin và trang trí, SizedBox điều khiển kích thước, Expanded chiếm phần không gian còn trống trên trục chính, Stack cho phép các phần tử chồng lên nhau, ListView.builder dựng lười cho danh sách dài, GridView, SingleChildScrollView, cùng cách xử lý lỗi tràn bố cục.

0Bộ đề
19+Câu hỏi
Mobile Programming

PRM393 - Dart cơ bản: biến, kiểu dữ liệu, null safety

Nền tảng ngôn ngữ Dart: khai báo biến với var, final, const và late; các kiểu int, double, num, bool, String; ba collection List, Set, Map và điểm khác nhau về thứ tự cùng tính duy nhất. Chủ đề đi sâu vào null safety — dấu ? cho biến nullable, toán tử ?? trả giá trị mặc định, ??= chỉ gán khi null, và dấu ! khẳng định không null — kèm các toán tử số học, so sánh, ép kiểu as và nội suy chuỗi.

0Bộ đề
61+Câu hỏi
Mobile Programming

PRM393 - Dart nâng cao: OOP, thư viện, cấu trúc điều khiển

Lập trình hướng đối tượng trong Dart: class là bản thiết kế còn object là thể hiện, constructor mặc định và constructor có tên, factory constructor trả về thể hiện sẵn có hoặc lớp con, kế thừa với extends, cài đặt giao diện với implements và trộn mã bằng mixin. Chủ đề bao gồm cấu trúc điều khiển if/else, for, while, do-while, switch cùng break và continue, cách tổ chức thư viện bằng import, show, hide, as và cặp part/part of.

0Bộ đề
54+Câu hỏi
Mobile Programming

PRM393 - Form và Validation

Thu thập và kiểm tra dữ liệu người dùng. Chủ đề trình bày widget Form nhóm nhiều trường, GlobalKey<FormState> để gọi validate, save và reset trên toàn biểu mẫu, khác biệt giữa TextField và TextFormField, hàm validator trả về null khi hợp lệ và trả chuỗi lỗi khi không, callback onSaved lưu giá trị, AutovalidateMode.onUserInteraction cân bằng trải nghiệm, FocusNode và textInputAction điều khiển tiêu điểm cùng bàn phím.

0Bộ đề
29+Câu hỏi
Mobile Programming

PRM393 - Giới thiệu Flutter và kiến trúc

Tổng quan Flutter — bộ công cụ giao diện đa nền tảng của Google — và kiến trúc ba lớp Framework (Dart), Engine (C/C++) và Embedder. Chủ đề làm rõ vì sao Flutter tự vẽ pixel bằng engine riêng thay vì gọi view native, cách Dart biên dịch JIT khi phát triển và AOT khi phát hành, đường đi từ cây widget qua Element và RenderObject tới GPU, vai trò của Platform Channel khi cần gọi mã Kotlin/Swift, cùng các lệnh nền tảng như flutter doctor và pubspec.yaml.

0Bộ đề
52+Câu hỏi
Mobile Programming

PRM393 - Hiệu năng và triển khai

Tối ưu hiệu năng và đưa ứng dụng lên cửa hàng. Chủ đề gồm lý do đo FPS và độ giật ở chế độ Profile thay vì Debug, dùng const cho widget tĩnh để tránh dựng lại, ValueKey giữ trạng thái khi danh sách thay đổi thứ tự, Selector thu hẹp phạm vi rebuild, precacheImage nạp ảnh trước, lệnh flutter clean và flutter build apk --analyze-size xem thành phần chiếm dung lượng, định dạng AppBundle .aab cho Google Play, cùng versionCode và versionName.

0Bộ đề
44+Câu hỏi
Mobile Programming

PRM393 - Kiểm thử và gỡ lỗi

Bảo đảm chất lượng ứng dụng Flutter. Chủ đề trình bày kim tự tháp kiểm thử với nhiều unit test nhanh và ổn định, ít bài integration chậm nhưng bao phủ đầu cuối. Nội dung gồm mẫu Arrange–Act–Assert, thư mục test lưu mã kiểm thử, pumpWidget dựng giao diện, khác biệt giữa pump một khung hình và pumpAndSettle chờ hết hoạt ảnh, find.text cùng find.byKey định vị widget, tester.enterText mô phỏng nhập liệu, và Widget Inspector trong DevTools.

0Bộ đề
21+Câu hỏi
Mobile Programming

PRM393 - Lưu trữ cục bộ

Lưu dữ liệu ngay trên thiết bị. Chủ đề so sánh SharedPreferences cho cặp khóa–giá trị đơn giản như token và cài đặt, gói path_provider tìm thư mục Documents hay Temporary, ghi đọc tệp JSON cho cấu trúc phức tạp hơn, sqflite cung cấp SQLite quan hệ với tham số version phục vụ nâng cấp lược đồ, cùng Hive. Nội dung gồm nguyên tắc offline-first đọc dữ liệu cục bộ trước rồi đồng bộ khi có mạng, và xử lý khi lưu trữ thất bại.

0Bộ đề
29+Câu hỏi
Mobile Programming

PRM393 - Quản lý trạng thái và Provider

Quản lý trạng thái từ cục bộ tới toàn cục. Chủ đề bắt đầu ở setState cho thay đổi trong phạm vi một State, chỉ ra khi nào nên nâng trạng thái lên widget cha để chia sẻ, rồi tới InheritedWidget truyền dữ liệu xuống cây mà không phải chuyền tham số từng cấp. Phần Provider làm rõ ChangeNotifier, khác biệt giữa context.watch đăng ký dựng lại và context.read chỉ đọc một lần, widget Consumer, Selector giảm rebuild, và MultiProvider.

0Bộ đề
23+Câu hỏi
Mobile Programming

PRM393 - REST API và JSON

Kết nối ứng dụng Flutter với máy chủ. Chủ đề bao gồm gói http gửi yêu cầu GET, POST, PUT, DELETE, ý nghĩa các mã trạng thái như 200, 201, 401 và 403, thư viện dart:convert với jsonEncode và jsonDecode, factory Model.fromJson ánh xạ Map thành đối tượng Dart, FutureBuilder tự dựng lại giao diện theo trạng thái Future, lý do tách lớp Service hoặc Repository khỏi widget, xử lý SocketException, timeout và nút thử lại.

0Bộ đề
30+Câu hỏi
Mobile Programming

PRM393 - Responsive và Adaptive

Xây dựng giao diện thích ứng nhiều kích thước màn hình. Chủ đề phân biệt responsive — đổi bố cục theo không gian — với adaptive — đổi kiểu điều hướng theo nền tảng. Nội dung gồm MediaQuery cung cấp kích thước và hướng thiết bị, LayoutBuilder lấy ràng buộc từ widget cha thay vì toàn màn hình, OrientationBuilder phân biệt dọc ngang, Wrap tự xuống dòng khi hết chỗ, SafeArea tránh notch và thanh trạng thái, cùng viewInsets khi bàn phím hiện lên.

0Bộ đề
13+Câu hỏi
Mobile Programming

PRM393 - Widget và vòng đời

Widget là đơn vị dựng nên toàn bộ giao diện Flutter và luôn bất biến. Chủ đề phân biệt StatelessWidget không có trạng thái nội bộ với StatefulWidget thay đổi theo thời gian, vai trò của phương thức build trả về cây widget, ý nghĩa BuildContext định vị widget trên cây, vòng đời từ initState tới dispose, cách setState đánh dấu widget cần dựng lại, các widget khung như MaterialApp và Scaffold, ThemeData, cùng khác biệt giữa Hot Reload và Hot Restart.

0Bộ đề
28+Câu hỏi
Mobile Programming

PRM393 - Xác thực và phiên đăng nhập

Xác thực người dùng và duy trì phiên đăng nhập. Chủ đề phân biệt authentication xác định bạn là ai với authorization quyết định bạn được làm gì, cấu trúc JWT với phần payload chỉ mã hoá Base64URL nên đọc được còn chữ ký mới chống sửa, khác biệt giữa access token ngắn hạn và refresh token, header Authorization dạng Bearer, Firebase Authentication cùng Google Sign-In và khoá SHA, SplashScreen định tuyến theo token, hết phiên và đăng xuất an toàn.

0Bộ đề
21+Câu hỏi
Mobile Programming

PRM393 - Điều hướng và Navigator

Điều hướng giữa các màn hình bằng Navigator. Chủ đề trình bày ngăn xếp route, push mở màn mới và pop đóng màn hiện tại, pushReplacement thay thế route để tránh quay lại màn đăng nhập, named route khai báo tập trung cùng Navigator.pushNamed cho ứng dụng lớn, MaterialPageRoute quản lý hoạt ảnh chuyển cảnh theo nền tảng, cách nhận dữ liệu trả về từ màn con, widget Hero cho hiệu ứng bay, cùng ưu điểm khai báo của Navigator 2.0.

0Bộ đề
21+Câu hỏi
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 sẽ luôn được tính toán 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.

490Ngân hàng hiện tại
--Tiến độ môn
Số câu hỏi
Dải câu hỏi Độ khó tổng thể: Đang tính
Đăng nhập để theo dõi tiến độ theo môn và tiếp tục phiên học đang dở.
Phiên sắp tạo
490 câu Chế độ học Trộn
Bạn cần đăng nhập để bắt đầu học từ ngân hàng câu hỏi và lưu tiến độ theo môn.
0Dễ · --
0Trung bình · --
0Khó · --
--Đã học
--Đang nắm chắc
Đăng nhập để xemLần hoàn tất gần nhất
Đăng nhập để bắt đầu học từ ngân hàng câu hỏi, lưu tiến độ theo môn, resume phiên đang dở và cập nhật thống kê dài hạn.

Ngân hàng câu hỏi

Xem trước · Cuộn vô hạn
Xem tất cả
Đang hiển thị 8 / 490 câu hỏi
Bấm vào từng câu để xem đáp án
#001
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AFix layout
BSpeed up builds
Prevent memory leaksĐÚNG
DImprove UI
Giải thích

Animations trong ứng dụng thường tạo ra các đối tượng tạm thời, nếu không được xóa bỏ đúng cách sẽ dẫn đến tình trạng "nhớ" bộ nhớ, gây ra hiện tượng "memory leaks". Điều này có thể khiến ứng dụng trở nên chậm chạp và thậm chí bị treo. Vì vậy, việc xóa bỏ animations một cách hợp lý là rất quan trọng để đảm bảo ứng dụng hoạt động trơn tru và hiệu suất cao.

#002
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
DevToolsĐÚNG
BInspector
CEmulator
DHot reload
Giải thích

Để giúp debug các yêu cầu mạng trong Flutter, bạn có thể sử dụng công cụ DevTools. DevTools là một công cụ mạnh mẽ giúp bạn theo dõi và debug các hoạt động của ứng dụng Flutter của mình. Trong đó, bạn có thể xem các yêu cầu mạng đang được thực hiện, bao gồm cả các yêu cầu GET và POST. Ngoài ra, bạn cũng có thể xem các phản hồi từ server và các lỗi xảy ra trong quá trình gửi yêu cầu. Điều này giúp bạn dễ dàng tìm ra nguyên nhân của các vấn đề và sửa lỗi nhanh chóng. Vì vậy, DevTools là công cụ cần thiết để giúp bạn debug các yêu cầu mạng trong Flutter.

#003
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Aflutter clean
Bflutter run
Cflutter doctor
flutter build apkĐÚNG
Giải thích

Để xây dựng một bản phát hành APK trong Flutter, bạn cần sử dụng lệnh 'flutter build apk'. Lệnh này sẽ tạo ra một bản phát hành APK có thể được tải xuống và cài đặt trên thiết bị di động. Lệnh này khác với 'flutter run', vì 'flutter run' chỉ chạy ứng dụng trên thiết bị di động hoặc máy ảo, nhưng không tạo ra một bản phát hành APK. Ngoài ra, 'flutter clean' được sử dụng để xóa các tệp tạm thời được tạo ra trong quá trình xây dựng, trong khi 'flutter doctor' được sử dụng để kiểm tra xem Flutter đã được cấu hình đúng chưa. Vì vậy, nếu bạn muốn tạo một bản phát hành APK, bạn cần sử dụng lệnh 'flutter build apk'.

#004
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AHot restart
BUsing global variables
CLarge widgets
Fine-grained state updatesĐÚNG
Giải thích

Để giảm thiểu việc rebuild widget không cần thiết, chúng ta cần hiểu về các khái niệm liên quan đến widget và cách thức hoạt động của chúng trong ứng dụng. Fine-grained state updates là một phương pháp giúp tối ưu hóa quá trình rebuild widget. Phương pháp này liên quan đến việc cập nhật trạng thái của widget một cách tinh tế và có chọn lọc, giúp giảm thiểu số lượng rebuild không cần thiết. Điều này giúp cải thiện hiệu suất của ứng dụng và giảm thiểu thời gian tải trang. Fine-grained state updates cũng giúp giảm thiểu việc sử dụng tài nguyên hệ thống, từ đó giúp ứng dụng trở nên nhanh chóng và ổn định hơn. Vì vậy, phương pháp này là lựa chọn tốt nhất để giảm thiểu việc rebuild widget không cần thiết.

#005
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AIntegration test
BWidget test
Unit testĐÚNG
DSystem test
Giải thích

Loại thử nghiệm nào kiểm tra các chức năng hoặc lớp riêng lẻ? Trong quá trình phát triển phần mềm, việc kiểm tra các chức năng hoặc lớp riêng lẻ là rất quan trọng để đảm bảo rằng từng phần của hệ thống hoạt động chính xác. Loại thử nghiệm này được gọi là thử nghiệm đơn vị (Unit test). Thử nghiệm đơn vị là một loại thử nghiệm kiểm tra các chức năng hoặc lớp riêng lẻ, thường được sử dụng để kiểm tra các hàm, phương thức hoặc lớp trong một chương trình. Mục tiêu của thử nghiệm đơn vị là đảm bảo rằng từng phần của hệ thống hoạt động chính xác và không có lỗi. Điều này giúp phát hiện ra các lỗi sớm và cải thiện chất lượng của hệ thống.

#006
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AnalysisĐÚNG
BImplementation
CDesign
DTesting
Giải thích

Pha thu thập yêu cầu là bước quan trọng trong quá trình phát triển phần mềm. Trong pha này, người phát triển sẽ thu thập thông tin về yêu cầu của khách hàng, bao gồm cả yêu cầu chức năng và phi chức năng. Yêu cầu chức năng bao gồm các tính năng mà phần mềm cần phải có, trong khi yêu cầu phi chức năng bao gồm các tính chất mà phần mềm cần phải đáp ứng, chẳng hạn như độ tin cậy, bảo mật và hiệu suất. Quá trình thu thập yêu cầu này giúp người phát triển hiểu rõ hơn về nhu cầu của khách hàng và đảm bảo rằng phần mềm được phát triển đáp ứng được các yêu cầu đó.

#007
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
Widget testĐÚNG
BUnit test
CLoad test
DIntegration test
Giải thích

Trong Flutter, có nhiều loại thử nghiệm khác nhau để đảm bảo ứng dụng hoạt động chính xác. Một trong những loại thử nghiệm quan trọng là thử nghiệm UI (User Interface). Thử nghiệm UI giúp kiểm tra các thành phần giao diện người dùng của ứng dụng, bao gồm các widget, layout và tương tác giữa chúng. Để kiểm tra các thành phần UI, chúng ta sử dụng loại thử nghiệm gọi là Widget test. Widget test cho phép chúng ta kiểm tra xem các widget của ứng dụng có hoạt động đúng như mong đợi hay không, bao gồm cả việc kiểm tra các trạng thái và hành vi của chúng. Vì vậy, trong các lựa chọn trên, Widget test là lựa chọn đúng.

#008
—
ĐỘ CHÍNH XÁC
4 LỰA CHỌN
AAPI responses
BDatabase state
UI appearance consistencyĐÚNG
DAuthentication
Giải thích

Golden testing là một phương pháp kiểm thử giúp xác minh xem ứng dụng của chúng ta có tuân thủ đúng thiết kế giao diện người dùng (UI) hay không. Nó liên quan đến việc so sánh giao diện người dùng thực tế với giao diện người dùng đã được định nghĩa trước đó, được gọi là 'golden UI'. Golden testing giúp đảm bảo rằng ứng dụng của chúng ta luôn có một giao diện người dùng nhất quán và đẹp mắt, giúp cải thiện trải nghiệm người dùng. Tuy nhiên, golden testing không liên quan đến việc kiểm thử các yêu cầu khác như phản hồi API, trạng thái cơ sở dữ liệu hoặc tính bảo mật.

Cuộn để tải thêm…