Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Phát Triển Ứng Dụng Di Động - Đề 03
Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Phát Triển Ứng Dụng Di Động - Đề 03 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Một nhóm phát triển ứng dụng di động đang lựa chọn giữa kiến trúc Model-View-ViewModel (MVVM) và Model-View-Controller (MVC). Ưu điểm chính của MVVM so với MVC trong bối cảnh phát triển ứng dụng di động là gì?
- A. MVC hỗ trợ kiểm thử đơn vị dễ dàng hơn ViewModel trong MVVM.
- B. MVVM tăng cường khả năng kiểm thử và bảo trì giao diện người dùng nhờ tách biệt logic giao diện và giao diện.
- C. MVC phù hợp hơn cho các ứng dụng phức tạp với logic nghiệp vụ phong phú.
- D. MVVM giảm thiểu sự phụ thuộc vào thư viện và framework của bên thứ ba.
Câu 2: Trong quá trình phát triển ứng dụng Android, bạn cần lưu trữ dữ liệu người dùng cục bộ để truy cập nhanh khi ngoại tuyến. Lựa chọn nào sau đây là phù hợp nhất để lưu trữ dữ liệu có cấu trúc và hỗ trợ truy vấn phức tạp?
- A. SharedPreferences
- B. Internal Storage (lưu trữ tệp tin)
- C. SQLite Database thông qua Room Persistence Library
- D. External Storage (thẻ nhớ SD)
Câu 3: Ứng dụng di động của bạn cần gửi thông báo đẩy (push notifications) đến người dùng ngay cả khi ứng dụng không chạy ở nền trước. Thành phần nào của hệ điều hành di động thường được sử dụng để xử lý việc này?
- A. Dịch vụ thông báo đẩy (Push Notification Service) như Firebase Cloud Messaging (FCM)
- B. AsyncTask
- C. BroadcastReceiver
- D. Activity Lifecycle
Câu 4: Một ứng dụng iOS cần truy cập vị trí của người dùng liên tục trong nền để cung cấp các cảnh báo dựa trên vị trí. Framework nào của iOS cung cấp các API cần thiết để thực hiện chức năng này một cách hiệu quả và tiết kiệm pin?
- A. UIKit Framework
- B. Core Location Framework
- C. MapKit Framework
- D. Foundation Framework
Câu 5: Trong phát triển ứng dụng đa nền tảng (cross-platform) với React Native, bạn muốn sử dụng một component giao diện người dùng (UI) tùy chỉnh, có hiệu năng cao, tận dụng tối đa các API gốc của từng nền tảng (Android và iOS). Giải pháp nào sau đây là phù hợp nhất?
- A. Sử dụng WebView để hiển thị giao diện web.
- B. Chỉ sử dụng các component UI có sẵn của React Native.
- C. Viết component UI hoàn toàn bằng JavaScript.
- D. Xây dựng Native Modules để tạo component UI gốc và kết nối với React Native thông qua JavaScript bridge.
Câu 6: Bạn đang thiết kế luồng điều hướng (navigation flow) cho một ứng dụng thương mại điện tử phức tạp. Loại mô hình điều hướng nào sau đây thường được ưu tiên sử dụng để giúp người dùng dễ dàng khám phá các danh mục sản phẩm, xem chi tiết sản phẩm và quản lý giỏ hàng một cách trực quan?
- A. Điều hướng tuyến tính (Linear Navigation)
- B. Điều hướng dạng ma trận (Matrix Navigation)
- C. Điều hướng phân cấp (Hierarchical Navigation) kết hợp với điều hướng ngang (Tabbed Navigation)
- D. Không cần mô hình điều hướng cụ thể, chỉ cần liên kết trang đơn giản.
Câu 7: Một ứng dụng đặt xe công nghệ cần xử lý đồng thời nhiều yêu cầu đặt xe từ người dùng và điều phối xe đến vị trí đón khách một cách tối ưu. Để đảm bảo ứng dụng hoạt động mượt mà và phản hồi nhanh chóng, bạn nên áp dụng phương pháp lập trình nào để quản lý các tác vụ đồng thời này?
- A. Lập trình tuần tự (Sequential Programming)
- B. Lập trình bất đồng bộ (Asynchronous Programming) sử dụng Coroutines hoặc RxJava/RxSwift
- C. Lập trình hướng đối tượng (Object-Oriented Programming)
- D. Lập trình hàm (Functional Programming)
Câu 8: Trong quá trình kiểm thử ứng dụng di động, loại kiểm thử nào sau đây tập trung vào việc xác minh giao diện người dùng (UI) hoạt động đúng như mong đợi trên các thiết bị và phiên bản hệ điều hành khác nhau?
- A. Kiểm thử đơn vị (Unit Testing)
- B. Kiểm thử tích hợp (Integration Testing)
- C. Kiểm thử giao diện người dùng (UI Testing/End-to-End Testing)
- D. Kiểm thử hiệu năng (Performance Testing)
Câu 9: Ứng dụng của bạn cần tích hợp khả năng thanh toán trực tuyến. Giải pháp nào sau đây đảm bảo tính bảo mật và tuân thủ các tiêu chuẩn PCI DSS khi xử lý thông tin thẻ tín dụng của người dùng?
- A. Tự xây dựng hệ thống xử lý thanh toán và lưu trữ thông tin thẻ tín dụng trên máy chủ của bạn.
- B. Sử dụng dịch vụ Payment Gateway của bên thứ ba (ví dụ: Stripe, PayPal) để xử lý thanh toán.
- C. Lưu trữ thông tin thẻ tín dụng của người dùng trong cơ sở dữ liệu cục bộ của ứng dụng.
- D. Yêu cầu người dùng nhập thông tin thẻ tín dụng mỗi khi thanh toán mà không mã hóa.
Câu 10: Khi phát triển ứng dụng cho thị trường quốc tế, yếu tố nào sau đây cần được ưu tiên xem xét để đảm bảo ứng dụng có thể tiếp cận và phục vụ người dùng ở nhiều quốc gia khác nhau?
- A. Chỉ tập trung vào ngôn ngữ và văn hóa của quốc gia mục tiêu chính.
- B. Sử dụng dịch máy (machine translation) để dịch nội dung ứng dụng sang các ngôn ngữ khác.
- C. Bỏ qua các yếu tố văn hóa và chỉ tập trung vào dịch thuật ngôn ngữ.
- D. Thiết kế ứng dụng có khả năng bản địa hóa (localization) dễ dàng, bao gồm hỗ trợ đa ngôn ngữ, định dạng tiền tệ, ngày tháng, và các yếu tố văn hóa.
Câu 11: Trong quá trình phát triển ứng dụng Android, bạn muốn tạo ra một giao diện người dùng linh hoạt, có thể thích ứng với nhiều kích thước màn hình và độ phân giải khác nhau của thiết bị. Loại layout nào sau đây là lựa chọn tốt nhất để đạt được mục tiêu này?
- A. ConstraintLayout
- B. LinearLayout
- C. FrameLayout
- D. TableLayout
Câu 12: Để tối ưu hóa hiệu năng ứng dụng di động, đặc biệt là giảm thiểu mức tiêu thụ pin và sử dụng dữ liệu mạng, bạn nên áp dụng kỹ thuật nào sau đây khi làm việc với hình ảnh?
- A. Sử dụng hình ảnh với độ phân giải gốc (original resolution) để đảm bảo chất lượng hiển thị tốt nhất.
- B. Tải trước (pre-load) tất cả hình ảnh cần thiết khi ứng dụng khởi động.
- C. Nén hình ảnh để giảm kích thước tệp tin và sử dụng kỹ thuật lazy loading để chỉ tải hình ảnh khi chúng thực sự cần hiển thị.
- D. Không cần quan tâm đến việc tối ưu hóa hình ảnh vì ảnh hưởng không đáng kể đến hiệu năng.
Câu 13: Trong quy trình phát triển phần mềm Agile, phương pháp nào sau đây thường được sử dụng để quản lý và theo dõi tiến độ công việc của nhóm phát triển, đồng thời tăng cường sự minh bạch và giao tiếp trong nhóm?
- A. Mô hình Waterfall
- B. Sử dụng bảng Kanban hoặc Scrum board để trực quan hóa công việc và tiến độ.
- C. Chỉ sử dụng email để giao tiếp và cập nhật tiến độ.
- D. Không cần phương pháp quản lý dự án cụ thể, nhóm tự quản lý.
Câu 14: Bạn muốn triển khai tính năng xác thực hai yếu tố (Two-Factor Authentication - 2FA) cho ứng dụng của mình để tăng cường bảo mật tài khoản người dùng. Phương pháp 2FA nào sau đây thường được sử dụng và tiện lợi cho người dùng di động?
- A. Xác thực bằng vân tay (Biometric Authentication) là đủ và không cần 2FA.
- B. Chỉ sử dụng mật khẩu mạnh là đủ để bảo mật.
- C. Sử dụng mã OTP (One-Time Password) gửi qua SMS hoặc ứng dụng xác thực (Authenticator App) kết hợp với mật khẩu.
- D. Yêu cầu người dùng trả lời câu hỏi bảo mật mỗi khi đăng nhập.
Câu 15: Trong quá trình gỡ lỗi (debugging) ứng dụng Android, công cụ nào sau đây cung cấp thông tin chi tiết về log hệ thống, trạng thái ứng dụng, và cho phép bạn thực hiện các thao tác gỡ lỗi nâng cao như breakpoint và step-through?
- A. Trình duyệt web (Web Browser)
- B. Android Debug Bridge (ADB) kết hợp với Android Studio Debugger
- C. Trình quản lý tệp tin (File Manager)
- D. Ứng dụng giả lập Android (Android Emulator) mà không có công cụ gỡ lỗi.
Câu 16: Để triển khai tính năng tìm kiếm trong ứng dụng di động với khả năng tìm kiếm toàn văn bản (full-text search) hiệu quả và nhanh chóng, bạn nên sử dụng giải pháp nào sau đây?
- A. Sử dụng vòng lặp để duyệt qua tất cả dữ liệu và so sánh chuỗi (string matching).
- B. Sử dụng SharedPreferences để lưu trữ và tìm kiếm dữ liệu.
- C. Chỉ sử dụng truy vấn SQL LIKE trên SQLite để tìm kiếm.
- D. Sử dụng cơ sở dữ liệu tìm kiếm chuyên dụng như Elasticsearch (cho backend) hoặc SQLite với FTS (Full-Text Search) module (cho local).
Câu 17: Trong phát triển ứng dụng iOS, bạn muốn quản lý các phụ thuộc (dependencies) của dự án một cách hiệu quả và tự động hóa quá trình tích hợp các thư viện và framework của bên thứ ba. Công cụ quản lý phụ thuộc nào phổ biến nhất trong hệ sinh thái iOS?
- A. CocoaPods
- B. npm (Node Package Manager)
- C. Maven
- D. Gradle
Câu 18: Ứng dụng của bạn cần hỗ trợ chế độ ngoại tuyến (offline mode) cho phép người dùng truy cập một phần nội dung và chức năng ngay cả khi không có kết nối mạng. Chiến lược nào sau đây là quan trọng nhất để triển khai chế độ ngoại tuyến hiệu quả?
- A. Chỉ hiển thị thông báo lỗi khi không có kết nối mạng.
- B. Lưu trữ dữ liệu quan trọng cục bộ và thực hiện đồng bộ hóa dữ liệu khi có kết nối mạng trở lại.
- C. Yêu cầu người dùng luôn phải có kết nối mạng để sử dụng ứng dụng.
- D. Chỉ lưu trữ dữ liệu tạm thời trong bộ nhớ cache và xóa khi ứng dụng đóng.
Câu 19: Để đảm bảo chất lượng mã nguồn (code quality) và tính nhất quán trong dự án phát triển ứng dụng di động, bạn nên áp dụng quy trình nào sau đây trong quá trình phát triển?
- A. Chỉ kiểm thử ứng dụng sau khi hoàn thành toàn bộ quá trình phát triển.
- B. Không cần kiểm soát phiên bản mã nguồn.
- C. Sử dụng hệ thống kiểm soát phiên bản (ví dụ: Git), thực hiện code review thường xuyên và sử dụng linter để kiểm tra lỗi và định dạng mã.
- D. Chỉ tập trung vào việc phát triển tính năng mới mà không cần quan tâm đến chất lượng mã nguồn.
Câu 20: Trong ngữ cảnh phát triển ứng dụng di động, "technical debt" (nợ kỹ thuật) đề cập đến điều gì?
- A. Số tiền đầu tư ban đầu vào dự án phát triển ứng dụng.
- B. Thời gian cần thiết để phát triển một tính năng mới.
- C. Số lượng lỗi (bugs) còn tồn tại trong ứng dụng.
- D. Hậu quả của việc đưa ra các quyết định thiết kế hoặc mã hóa không tối ưu trong ngắn hạn, dẫn đến khó khăn và tốn kém hơn trong việc bảo trì và phát triển ứng dụng về lâu dài.
Câu 21: Khi thiết kế giao diện người dùng (UI) cho ứng dụng di động, nguyên tắc "Fitts"s Law" có ý nghĩa gì?
- A. Giao diện người dùng nên có màu sắc tươi sáng và bắt mắt.
- B. Thời gian để người dùng tương tác với một mục tiêu (ví dụ: nút bấm) phụ thuộc vào khoảng cách đến mục tiêu và kích thước của mục tiêu.
- C. Giao diện người dùng nên tuân theo phong cách thiết kế phẳng (flat design).
- D. Ứng dụng nên tải dữ liệu nhanh chóng để cải thiện trải nghiệm người dùng.
Câu 22: Trong kiến trúc microservices cho backend của ứng dụng di động, lợi ích chính của việc chia ứng dụng thành các dịch vụ nhỏ, độc lập là gì?
- A. Giảm độ phức tạp của mã nguồn backend.
- B. Đơn giản hóa quá trình triển khai ứng dụng.
- C. Tăng khả năng mở rộng (scalability), độ tin cậy (resilience) và linh hoạt trong phát triển và triển khai các thành phần backend.
- D. Giảm chi phí phát triển backend.
Câu 23: Để đo lường mức độ tương tác của người dùng với ứng dụng di động và thu thập dữ liệu phân tích hành vi người dùng (user behavior analytics), bạn nên tích hợp công cụ nào vào ứng dụng?
- A. Công cụ phân tích ứng dụng (Mobile Analytics Tools) như Firebase Analytics hoặc Google Analytics.
- B. Công cụ kiểm thử hiệu năng (Performance Testing Tools).
- C. Công cụ quản lý dự án (Project Management Tools).
- D. Công cụ kiểm soát phiên bản (Version Control Tools).
Câu 24: Khi phát triển ứng dụng di động, bạn cần đảm bảo ứng dụng hoạt động tốt trên các thiết bị có cấu hình khác nhau, từ thiết bị cao cấp đến thiết bị cấp thấp. Chiến lược nào sau đây giúp đảm bảo khả năng tương thích và hiệu năng tốt trên nhiều loại thiết bị?
- A. Chỉ kiểm thử ứng dụng trên các thiết bị cao cấp.
- B. Không cần tối ưu hóa hiệu năng, chỉ cần phát triển tính năng.
- C. Sử dụng các thư viện và framework nặng nề để có nhiều tính năng.
- D. Tối ưu hóa hiệu năng ứng dụng, kiểm thử trên nhiều loại thiết bị khác nhau và áp dụng thiết kế thích ứng (adaptive design).
Câu 25: Trong quá trình phát triển ứng dụng di động, bạn muốn tự động hóa quy trình xây dựng (build), kiểm thử (test) và triển khai (deploy) ứng dụng. Giải pháp Continuous Integration/Continuous Delivery (CI/CD) nào sau đây phù hợp cho dự án phát triển ứng dụng di động?
- A. Chỉ thực hiện build, test và deploy thủ công.
- B. Sử dụng các nền tảng CI/CD như Jenkins, GitLab CI, Bitrise hoặc CircleCI để tự động hóa quy trình.
- C. Chỉ tự động hóa quá trình build mà không tự động hóa test và deploy.
- D. Không cần CI/CD cho dự án phát triển ứng dụng di động.
Câu 26: Khi thiết kế API cho backend của ứng dụng di động, chuẩn RESTful API có ưu điểm gì so với các kiến trúc API khác?
- A. RESTful API phức tạp hơn và khó triển khai hơn các kiến trúc khác.
- B. RESTful API ít được sử dụng trong phát triển ứng dụng di động.
- C. RESTful API đơn giản, dễ hiểu, dễ mở rộng, và tuân thủ các nguyên tắc thiết kế tốt, giúp backend dễ bảo trì và tích hợp với frontend.
- D. RESTful API không hỗ trợ giao tiếp HTTP.
Câu 27: Trong phát triển ứng dụng di động, kỹ thuật "deep linking" (liên kết sâu) cho phép người dùng làm gì?
- A. Mở trực tiếp một trang hoặc nội dung cụ thể bên trong ứng dụng từ một liên kết bên ngoài (ví dụ: từ trình duyệt web, email, hoặc ứng dụng khác).
- B. Chia sẻ liên kết đến ứng dụng trên mạng xã hội.
- C. Tải ứng dụng từ cửa hàng ứng dụng.
- D. Gửi thông báo đẩy đến người dùng.
Câu 28: Để đảm bảo tính nhất quán về mặt hình ảnh (visual consistency) và tái sử dụng các thành phần giao diện (UI components) trong toàn bộ ứng dụng di động, bạn nên áp dụng phương pháp nào sau đây?
- A. Phát triển mỗi màn hình giao diện hoàn toàn độc lập mà không cần quan tâm đến tính nhất quán.
- B. Xây dựng một hệ thống thiết kế (Design System) hoặc Style Guide bao gồm các UI component tái sử dụng, quy tắc về màu sắc, typography, và khoảng cách.
- C. Sử dụng các component UI mặc định của hệ điều hành mà không tùy chỉnh.
- D. Chỉ tập trung vào chức năng ứng dụng mà không cần quan tâm đến giao diện.
Câu 29: Trong phát triển ứng dụng di động, thuật ngữ "hot reloading" (tải lại nóng) mang lại lợi ích gì cho nhà phát triển?
- A. Giảm kích thước ứng dụng sau khi build.
- B. Tăng hiệu năng ứng dụng khi chạy trên thiết bị.
- C. Cho phép nhà phát triển xem ngay lập tức các thay đổi về mã nguồn trong ứng dụng đang chạy mà không cần phải build và cài đặt lại toàn bộ ứng dụng, giúp tăng tốc độ phát triển và thử nghiệm.
- D. Tự động sửa lỗi mã nguồn.
Câu 30: Khi ứng dụng di động cần truy cập các tài nguyên phần cứng của thiết bị như camera, microphone, hoặc GPS, điều quan trọng cần lưu ý về quyền truy cập (permissions) là gì?
- A. Không cần xin phép người dùng khi truy cập tài nguyên phần cứng.
- B. Chỉ cần xin phép một lần duy nhất khi cài đặt ứng dụng cho tất cả các quyền.
- C. Ứng dụng có thể tự động truy cập tất cả các tài nguyên phần cứng mà không cần sự cho phép của người dùng.
- D. Cần xin phép người dùng một cách rõ ràng và minh bạch trước khi truy cập các tài nguyên phần cứng nhạy cảm và chỉ yêu cầu các quyền cần thiết cho chức năng của ứng dụng, tuân thủ chính sách về quyền riêng tư.