PRM393Chưa đoKỳ 8Chuyên ngành Cập nhật 07/09/2026

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

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ó giải thích 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.

512Câu hỏi
1Bộ đề
15Chủ đề
5,02 đánh giá

Câu hỏi của môn

84/512 câuCòn 428
AFlutter engine + Skia paints pixels; Flutter UI does not bridge to native views
BUses native XML/Storyboard views for every screen
CWeb only
DMust use WebView
Lời giải
Flutter là một framework phát triển ứng dụng di động được xây dựng trên nền tảng của ngôn ngữ lập trình Dart. Khi so sánh với React Native, Flutter có cách thức vẽ giao diện người dùng (UI) hoàn toàn khác biệt. Trong khi React Native sử dụng các view native XML/Storyboard để vẽ mỗi màn hình, Flutter lại sử dụng Flutter engine kết hợp với Skia để vẽ từng pixel trên màn hình. Điều này cho phép Flutter có khả năng tùy chỉnh cao hơn và hiệu suất tốt hơn so với React Native. Ngoài ra, Flutter không cần phải sử dụng WebView để vẽ UI, giúp giảm thiểu độ trễ và tăng cường trải nghiệm người dùng.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Các bài kiểm tra tích hợp mô phỏng các tương tác của người dùng thực để xác minh logic ứng dụng từ đầu đến cuối. Điều này giúp đảm bảo rằng ứng dụng hoạt động chính xác và như mong đợi. Các bài kiểm tra tích hợp thường bao gồm các kịch bản sử dụng các tính năng của ứng dụng, từ việc đăng nhập, thực hiện các hành động, đến việc xác minh kết quả. Điều này giúp phát hiện ra các lỗi và vấn đề tiềm ẩn, từ đó cải thiện chất lượng ứng dụng.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Tính năng pre-caching hình ảnh giúp cải thiện trải nghiệm người dùng bằng cách tải các tài nguyên vào bộ nhớ trước khi chúng được hiển thị. Khi ứng dụng hoặc trang web sử dụng pre-caching hình ảnh, các hình ảnh sẽ được tải vào bộ nhớ trước khi người dùng cần xem chúng. Điều này giúp giảm thiểu thời gian tải trang và cải thiện hiệu suất của ứng dụng hoặc trang web. Người dùng sẽ không phải chờ đợi lâu để xem các hình ảnh, giúp họ có trải nghiệm tốt hơn. Ngoài ra, pre-caching hình ảnh cũng giúp giảm thiểu tải xuống dữ liệu, giúp tiết kiệm băng thông và giảm thiểu chi phí lưu trữ.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Command 'flutter doctor' được sử dụng để xác định các phụ thuộc thiếu và vấn đề cấu hình công cụ trong môi trường phát triển. Nó giúp kiểm tra và báo cáo các vấn đề cần được giải quyết để đảm bảo môi trường phát triển của bạn hoạt động trơn tru. Khi chạy lệnh 'flutter doctor', bạn sẽ thấy danh sách các vấn đề cần được giải quyết, bao gồm cả các phụ thuộc thiếu và vấn đề cấu hình công cụ. Sau đó, bạn có thể thực hiện các bước cần thiết để giải quyết các vấn đề này và đảm bảo môi trường phát triển của mình hoạt động tốt.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Unit tests không cần phải chạy trên một thiết bị di động thực tế hoặc một emulater để thực hiện. Thay vào đó, chúng có thể được chạy trên máy tính mà không cần thiết bị di động nào. Điều này giúp cho việc viết và kiểm tra mã nguồn trở nên nhanh chóng và hiệu quả hơn. Ngoài ra, việc chạy unit tests trên máy tính cũng giúp giảm thiểu thời gian chờ đợi khi phải chờ đợi thiết bị di động được cài đặt và sẵn sàng để chạy thử nghiệm.
Mở trang câu hỏi này →
AEmbedder → Engine → Framework (Dart)
BSkia → Dart → Kotlin
CWidget → Activity → Service
DFramework (Dart) → Engine (C++) → Embedder
Lời giải
Flutter có ba lớp kiến trúc từ trên xuống dưới. Lớp trên cùng là Framework (Dart), nơi chứa các lớp trừu tượng hóa các yếu tố cơ bản của ứng dụng như widget, layout và hiệu ứng. Lớp giữa là Engine (C++), nơi thực hiện các tác vụ đồ họa và xử lý hiệu suất. Lớp dưới cùng là Embedder, nơi chứa các lớp tương tác với hệ điều hành và môi trường xung quanh.
Mở trang câu hỏi này →
71What does `flutter pub get` do?4 lựa chọn
AInstall the Flutter SDK on your machine
BSign a release app for the Play Store
CDelete the entire `build/` folder
DFetch dependencies from `pubspec.yaml` into the project
Lời giải
Khi bạn chạy lệnh `flutter pub get` trong dự án Flutter, nó sẽ thực hiện việc tải các phụ thuộc (dependencies) từ tệp `pubspec.yaml` vào dự án của bạn. Tệp `pubspec.yaml` chứa thông tin về các thư viện và phụ thuộc mà dự án của bạn cần để hoạt động. Lệnh này sẽ tải các thư viện này từ kho lưu trữ (repository) của Flutter và thêm chúng vào dự án của bạn. Điều này giúp bạn có thể sử dụng các thư viện và tính năng mà không cần phải tải chúng thủ công. Ngoài ra, lệnh này cũng sẽ cập nhật các phiên bản của các thư viện đã tồn tại trong dự án của bạn.
Mở trang câu hỏi này →
72What does dynamic allow?4 lựa chọn
AOne type only
BCompile-time check
CType change at runtime
DConstants only
Lời giải
Dynamic trong lập trình cho phép thay đổi kiểu dữ liệu của biến tại thời điểm chạy chương trình (runtime). Điều này khác với các ngôn ngữ lập trình tĩnh, nơi kiểu dữ liệu của biến được xác định tại thời điểm biên dịch (compile-time). Với dynamic, bạn có thể gán giá trị của một kiểu dữ liệu khác vào một biến đã được khai báo trước đó. Ví dụ, bạn có thể gán một chuỗi vào một biến đã được khai báo là số nguyên. Điều này cho phép lập trình viên linh hoạt hơn trong việc quản lý dữ liệu và giảm thiểu lỗi do kiểu dữ liệu không phù hợp.
Mở trang câu hỏi này →
73What is Flutter?4 lựa chọn
AA programming language
BA cross-platform UI framework
CAn operating system
DAn IDE
Lời giải
Flutter là một framework để xây dựng giao diện người dùng (UI) đa nền tảng. Nó cho phép các nhà phát triển xây dựng các ứng dụng di động và web với cùng một mã nguồn. Flutter sử dụng ngôn ngữ lập trình Dart để tạo ra các ứng dụng có giao diện người dùng đẹp và hiệu suất cao. Framework này được thiết kế để giúp các nhà phát triển tạo ra các ứng dụng đa nền tảng một cách nhanh chóng và dễ dàng, đồng thời cũng cung cấp các tính năng và công cụ để giúp họ tối ưu hóa hiệu suất và trải nghiệm người dùng. Flutter đã trở thành một trong những công cụ phát triển ứng dụng phổ biến nhất hiện nay, được sử dụng bởi hàng triệu nhà phát triển trên toàn thế giới.
Mở trang câu hỏi này →
ALow performance
BSeparate codebases
CFast development & single codebase
DLimited UI
Lời giải
Flutter là một công cụ phát triển ứng dụng di động mạnh mẽ, cho phép bạn xây dựng các ứng dụng đa nền tảng với một mã nguồn duy nhất. Ưu điểm chính của Flutter là khả năng phát triển nhanh chóng và sử dụng mã nguồn duy nhất. Điều này có nghĩa là bạn có thể xây dựng một ứng dụng và chạy nó trên nhiều nền tảng khác nhau, bao gồm cả Android và iOS, mà không cần phải tạo ra các mã nguồn riêng biệt. Điều này giúp giảm thiểu thời gian và công sức cần thiết để phát triển ứng dụng, đồng thời cũng giúp đảm bảo rằng ứng dụng của bạn luôn được đồng bộ và cập nhật trên tất cả các nền tảng.
Mở trang câu hỏi này →
AOrganize code structure
BHandle API
CImprove animations
DUI design
Lời giải
Mục đích chính của kiến trúc ứng dụng (app architecture) là giúp tổ chức và sắp xếp cấu trúc mã (code structure) một cách hợp lý và hiệu quả. Điều này giúp cho việc phát triển và bảo trì ứng dụng trở nên dễ dàng hơn. Kiến trúc ứng dụng cung cấp một khung nhìn tổng quan về cấu trúc và tổ chức của ứng dụng, giúp cho các nhà phát triển hiểu rõ về mối quan hệ giữa các thành phần và mô-đun trong ứng dụng. Ngoài ra, kiến trúc ứng dụng cũng giúp cải thiện khả năng mở rộng và bảo trì của ứng dụng, giúp cho ứng dụng trở nên linh hoạt và dễ dàng thích nghi với các yêu cầu mới.
Mở trang câu hỏi này →
AHot Reload updates the UI without losing state, while Hot Restart resets the app state.
BIt ensures the UI avoids system intrusions like notches, status bars, and camera cutouts.
CIt allows a single codebase to render UI using its own engine across different platforms.
DIt uniquely identifies the Form and allows access to its state for validation and saving.
Lời giải
Flutter được thiết kế để hỗ trợ phát triển đa nền tảng, giúp các nhà phát triển có thể tạo ra ứng dụng trên nhiều nền tảng khác nhau (ví dụ như Android, iOS, web) bằng một mã nguồn duy nhất. Điều này giúp giảm thiểu thời gian và công sức cần thiết để phát triển ứng dụng trên nhiều nền tảng khác nhau. Flutter sử dụng một engine riêng biệt để render UI, giúp đảm bảo rằng ứng dụng có thể chạy trơn tru trên nhiều nền tảng khác nhau mà không cần phải điều chỉnh mã nguồn.
Mở trang câu hỏi này →
ACompiling Dart code
BManaging databases
CHandling network requests
DDescribing the user interface
Lời giải
Trong Flutter, các widget đóng vai trò quan trọng trong việc mô tả giao diện người dùng (UI). Chúng là các thành phần cơ bản của ứng dụng, bao gồm các yếu tố như text, hình ảnh, nút bấm, danh sách và nhiều hơn nữa. Mỗi widget có thể được sử dụng độc lập hoặc kết hợp lại với nhau để tạo nên giao diện phức tạp. Widget giúp developers dễ dàng xây dựng và tùy chỉnh giao diện của ứng dụng mà không cần phải viết mã phức tạp. Ngoài ra, widget cũng giúp ứng dụng trở nên linh hoạt và dễ dàng thích nghi với các thiết bị và kích thước màn hình khác nhau.
Mở trang câu hỏi này →
AOnly to change theme
BCall native (Kotlin/Swift) from Dart for OS/SDK-specific features
CDoes not exist in Flutter
DReplaces all UI
Lời giải
Một Platform Channel (MethodChannel) được sử dụng trong Flutter để giao tiếp giữa ứng dụng Flutter với các phần mềm nền tảng (platform-specific) khác. Điều này cho phép bạn gọi các chức năng hoặc phương thức của nền tảng (OS/SDK) từ mã Dart của ứng dụng Flutter. Ví dụ, bạn có thể sử dụng Platform Channel để gọi các chức năng của hệ điều hành (OS) hoặc các thư viện SDK để thực hiện các tác vụ cụ thể như lấy địa chỉ IP, kiểm tra kết nối mạng, v.v. Điều này giúp bạn tận dụng được các tính năng và chức năng của nền tảng mà không cần phải viết mã riêng biệt cho từng nền tảng.
Mở trang câu hỏi này →
AAlways, for every screen
BNever allowed
CWhen you need deep platform features (camera, payment SDKs…) via MethodChannel/EventChannel
DOnly for 2D games
Lời giải
Khi nào bạn nên thêm mã native (Kotlin/Swift) vào dự án Flutter? Mã native được sử dụng để truy cập các tính năng sâu của nền tảng di động, chẳng hạn như camera, thanh toán, v.v. Điều này được thực hiện thông qua MethodChannel hoặc EventChannel. Việc thêm mã native giúp tăng cường khả năng tương tác giữa ứng dụng Flutter và các tính năng nền tảng, mang lại trải nghiệm người dùng tốt hơn. Tuy nhiên, mã native chỉ nên được sử dụng khi cần thiết, vì nó có thể làm phức tạp hóa dự án và tăng thời gian phát triển.
Mở trang câu hỏi này →
Aflutter verify
Bflutter check
Cdart analyze
Dflutter doctor
Lời giải
Để kiểm tra Flutter SDK, toolchain và thiết bị, bạn cần sử dụng lệnh "flutter doctor". Lệnh này sẽ giúp bạn xác định xem Flutter đã được cài đặt đúng cách chưa, cũng như các thiết bị có thể kết nối với ứng dụng Flutter của bạn. Ngoài ra, lệnh "flutter doctor" còn giúp bạn kiểm tra các công cụ và thư viện cần thiết để phát triển ứng dụng Flutter.
Mở trang câu hỏi này →
81Which company maintains Flutter?4 lựa chọn
AApple
BMeta
CGoogle
DMicrosoft
Lời giải
Flutter là một framework lập trình ứng dụng di động mã nguồn mở được phát triển bởi Google. Vì vậy, công ty duy trì Flutter chính là Google. Flutter cho phép các nhà phát triển tạo ra các ứng dụng di động đa nền tảng với một bộ công cụ duy nhất. Nó hỗ trợ các nền tảng như Android, iOS và web. Flutter sử dụng ngôn ngữ lập trình Dart để xây dựng các ứng dụng. Với Flutter, các nhà phát triển có thể tạo ra các ứng dụng di động nhanh chóng và hiệu quả hơn so với các công nghệ khác.
Mở trang câu hỏi này →
AFlutter 1
BFlutter 1.5
CFlutter 2
DFlutter 3
Lời giải
Flutter là một framework phát triển ứng dụng di động được sử dụng để xây dựng các ứng dụng di động và web. Trong quá trình phát triển của mình, Flutter đã trải qua nhiều phiên bản khác nhau. Phiên bản Flutter 1 là phiên bản đầu tiên được phát hành, nhưng nó không hỗ trợ xây dựng ứng dụng web và desktop. Phiên bản Flutter 1.5 đã được phát hành sau đó, nhưng nó vẫn không hỗ trợ xây dựng ứng dụng web và desktop. Phiên bản Flutter 2 đã được phát hành vào năm 2020 và nó đã hỗ trợ xây dựng ứng dụng web và desktop. Điều này đã giúp mở rộng khả năng của Flutter và cho phép các nhà phát triển xây dựng các ứng dụng đa nền tảng. Phiên bản Flutter 3 cũng đã được phát hành, nhưng nó không phải là phiên bản đầu tiên hỗ trợ xây dựng ứng dụng web và desktop.
Mở trang câu hỏi này →
83Which function starts a Flutter app?4 lựa chọn
AstartApp()
BinitApp()
CrunApp()
DbuildApp()
Lời giải
Để bắt đầu một ứng dụng Flutter, bạn cần sử dụng hàm "runApp". Hàm này được sử dụng để khởi động ứng dụng và hiển thị màn hình chính. Nó là một phần quan trọng của quá trình tạo ứng dụng Flutter và phải được gọi trước khi ứng dụng có thể được chạy. Trong mã Flutter, hàm "runApp" thường được sử dụng như sau: runApp(MyApp()), nơi MyApp là một widget đại diện cho màn hình chính của ứng dụng. Khi gọi hàm "runApp", Flutter sẽ khởi động ứng dụng và hiển thị màn hình chính, sau đó ứng dụng sẽ bắt đầu chạy và phản hồi các tương tác của người dùng.
Mở trang câu hỏi này →
AFramework
BEngine
CEmbedder
DDatabase
Lời giải
Flutter có một kiến trúc đa lớp giúp phân chia ứng dụng thành các phần nhỏ hơn và dễ quản lý hơn. Các lớp chính trong kiến trúc Flutter bao gồm Framework, Engine và Embedder. Framework là lớp cao nhất, chịu trách nhiệm quản lý ứng dụng và cung cấp các công cụ để xây dựng ứng dụng. Engine là lớp trung gian, chịu trách nhiệm thực hiện các tác vụ cơ bản như vẽ hình ảnh và xử lý âm thanh. Embedder là lớp thấp nhất, chịu trách nhiệm tích hợp Flutter vào các nền tảng khác nhau như Android và iOS. Database là một khái niệm khác, không phải là một lớp trong kiến trúc Flutter. Nó là một hệ thống lưu trữ dữ liệu, được sử dụng để lưu trữ và truy xuất dữ liệu trong ứng dụng.
Mở trang câu hỏi này →