1. Trong phát triển ứng dụng di động, ‘API Integration’ (Tích hợp API) là gì và tại sao nó lại phổ biến?
A. Là quá trình kết nối ứng dụng di động với các dịch vụ hoặc hệ thống bên ngoài thông qua các giao diện lập trình ứng dụng (API) để truy xuất dữ liệu hoặc chức năng, giúp mở rộng khả năng của ứng dụng mà không cần tự xây dựng mọi thứ. Kết luận Lý giải.
B. Là quá trình biên dịch mã nguồn của ứng dụng. Kết luận Lý giải.
C. Là quá trình kiểm thử ứng dụng trên các thiết bị khác nhau. Kết luận Lý giải.
D. Là quá trình thiết kế giao diện người dùng. Kết luận Lý giải.
2. Khi phát triển ứng dụng đa nền tảng sử dụng Flutter, lợi ích chính của việc sử dụng Widget là gì?
A. Widgets là các khối xây dựng giao diện người dùng có thể tái sử dụng, cho phép tạo ra giao diện phức tạp và nhất quán trên cả iOS và Android từ một codebase duy nhất. Kết luận Lý giải.
B. Widgets chỉ được sử dụng để hiển thị văn bản. Kết luận Lý giải.
C. Widgets chỉ có thể được sử dụng trên một nền tảng duy nhất (ví dụ: chỉ trên Android). Kết luận Lý giải.
D. Widgets tự động xử lý tất cả logic nghiệp vụ của ứng dụng. Kết luận Lý giải.
3. Trong phát triển ứng dụng di động, tại sao việc phân tích ‘Crash Reports’ (Báo cáo sự cố) lại quan trọng đối với nhà phát triển?
A. Giúp xác định nguyên nhân gốc rễ của các lỗi nghiêm trọng gây ra sự cố ứng dụng, từ đó khắc phục và cải thiện độ ổn định của sản phẩm. Kết luận Lý giải.
B. Đếm số lượng người dùng đã tải xuống ứng dụng. Kết luận Lý giải.
C. Theo dõi xu hướng sử dụng các tính năng của ứng dụng. Kết luận Lý giải.
D. Đánh giá mức độ hài lòng của người dùng. Kết luận Lý giải.
4. Trong kiến trúc MVVM (Model-View-ViewModel) cho phát triển ứng dụng di động, vai trò chính của ViewModel là gì?
A. Làm trung gian giữa Model (dữ liệu) và View (giao diện), xử lý logic nghiệp vụ và cung cấp dữ liệu đã được định dạng sẵn cho View hiển thị, đồng thời nhận các hành động từ View để cập nhật Model. Kết luận Lý giải.
B. Trực tiếp quản lý và truy cập cơ sở dữ liệu, thực hiện các thao tác đọc/ghi dữ liệu. Kết luận Lý giải.
C. Chỉ chịu trách nhiệm về việc hiển thị dữ liệu trên giao diện người dùng. Kết luận Lý giải.
D. Xử lý các yêu cầu mạng và giao tiếp với các dịch vụ bên ngoài. Kết luận Lý giải.
5. Khi thiết kế ứng dụng di động, nguyên tắc ‘Error Prevention’ (Ngăn ngừa lỗi) đề cập đến điều gì?
A. Thiết kế giao diện và quy trình sao cho người dùng khó có thể mắc lỗi, ví dụ như giới hạn các lựa chọn, cung cấp gợi ý rõ ràng hoặc xác nhận trước khi thực hiện các hành động quan trọng. Kết luận Lý giải.
B. Cho phép người dùng tự do mắc lỗi. Kết luận Lý giải.
C. Chỉ cảnh báo người dùng sau khi họ đã mắc lỗi. Kết luận Lý giải.
D. Tự động sửa mọi lỗi mà người dùng mắc phải. Kết luận Lý giải.
6. Khi phát triển ứng dụng di động, ‘User Onboarding’ (Quy trình làm quen người dùng mới) có mục đích chính là gì?
A. Hướng dẫn người dùng mới cách sử dụng các tính năng cốt lõi của ứng dụng, giúp họ hiểu rõ giá trị mà ứng dụng mang lại và tạo động lực để họ tiếp tục sử dụng. Kết luận Lý giải.
B. Thu thập thông tin cá nhân của người dùng ngay khi họ mở ứng dụng lần đầu. Kết luận Lý giải.
C. Yêu cầu người dùng hoàn thành một bài kiểm tra kiến thức về ứng dụng. Kết luận Lý giải.
D. Giới thiệu tất cả các tính năng có sẵn một cách chi tiết. Kết luận Lý giải.
7. Trong phát triển ứng dụng di động, ‘Service Workers’ là gì và lợi ích chính của chúng?
A. Là các script chạy nền trong trình duyệt, cho phép các ứng dụng web (bao gồm cả PWAs) có các tính năng nâng cao như hoạt động ngoại tuyến, tải tài nguyên từ cache và nhận push notification. Kết luận Lý giải.
B. Là các thành phần của ứng dụng gốc trên iOS. Kết luận Lý giải.
C. Là các dịch vụ chạy nền trên Android. Kết luận Lý giải.
D. Là các công cụ để biên dịch mã nguồn ứng dụng. Kết luận Lý giải.
8. Phân tích hiệu năng ứng dụng di động (performance analysis) thường xem xét những khía cạnh nào?
A. Tốc độ phản hồi của giao diện, mức tiêu thụ CPU, mức tiêu thụ bộ nhớ, mức tiêu thụ pin và băng thông mạng. Kết luận Lý giải.
B. Số lượng dòng code được viết trong dự án. Kết luận Lý giải.
C. Độ phức tạp của thuật toán được sử dụng, bất kể tác động đến người dùng. Kết luận Lý giải.
D. Số lượng tính năng có sẵn trong ứng dụng. Kết luận Lý giải.
9. Trong phát triển ứng dụng di động, ‘UI Testing’ (Kiểm thử giao diện người dùng) tập trung vào việc kiểm tra gì?
A. Kiểm tra các thành phần giao diện người dùng (nút bấm, trường nhập liệu, hình ảnh, văn bản) và cách chúng hiển thị, tương tác với người dùng theo các kịch bản mong muốn. Kết luận Lý giải.
B. Kiểm tra hiệu năng của ứng dụng trên mạng. Kết luận Lý giải.
C. Kiểm tra logic nghiệp vụ bên trong ứng dụng. Kết luận Lý giải.
D. Kiểm tra khả năng ứng dụng chạy trên nhiều hệ điều hành khác nhau. Kết luận Lý giải.
10. Khi xây dựng API cho ứng dụng di động, nguyên tắc RESTful API nhấn mạnh điều gì?
A. Sử dụng các phương thức HTTP chuẩn (GET, POST, PUT, DELETE) để tương tác với các tài nguyên được định danh duy nhất (URI), tuân thủ nguyên tắc không trạng thái (stateless) và có thể cache. Kết luận Lý giải.
B. Chỉ sử dụng phương thức GET để truy xuất tất cả dữ liệu. Kết luận Lý giải.
C. API phải duy trì trạng thái phiên làm việc của người dùng giữa các yêu cầu. Kết luận Lý giải.
D. Sử dụng định dạng dữ liệu tùy chỉnh thay vì các định dạng chuẩn như JSON hoặc XML. Kết luận Lý giải.
11. Tại sao việc kiểm thử ứng dụng di động (app testing) trên nhiều loại thiết bị và phiên bản hệ điều hành lại quan trọng?
A. Để đảm bảo ứng dụng hoạt động ổn định, hiển thị chính xác và cung cấp trải nghiệm người dùng nhất quán trên các cấu hình phần cứng, kích thước màn hình và phiên bản hệ điều hành khác nhau. Kết luận Lý giải.
B. Để tăng số lượng người dùng tiềm năng cho ứng dụng. Kết luận Lý giải.
C. Để giảm chi phí phát triển và bảo trì ứng dụng. Kết luận Lý giải.
D. Để xác định các lỗi chỉ xảy ra trên một loại thiết bị duy nhất. Kết luận Lý giải.
12. Trong phát triển ứng dụng Android, ‘Activity’ là gì và vai trò của nó trong vòng đời ứng dụng?
A. Activity là một thành phần ứng dụng đại diện cho một màn hình duy nhất với giao diện người dùng, có vòng đời riêng biệt (như onCreate, onStart, onResume, onPause, onStop, onDestroy) để quản lý trạng thái hiển thị và tương tác. Kết luận Lý giải.
B. Activity chỉ là một container chứa các View và không có vòng đời riêng. Kết luận Lý giải.
C. Activity chịu trách nhiệm quản lý toàn bộ dữ liệu của ứng dụng. Kết luận Lý giải.
D. Activity là một dịch vụ chạy nền và không có giao diện người dùng. Kết luận Lý giải.
13. Khi áp dụng ‘Accessibility’ (Khả năng tiếp cận) trong thiết kế ứng dụng di động, mục tiêu chính là gì?
A. Đảm bảo ứng dụng có thể được sử dụng bởi mọi người, bao gồm cả những người có khuyết tật (như khiếm thị, khiếm thính, hạn chế vận động), thông qua các tính năng hỗ trợ như trình đọc màn hình, tùy chỉnh kích thước văn bản, hoặc điều khiển bằng giọng nói. Kết luận Lý giải.
B. Thiết kế ứng dụng chỉ dành cho những người dùng có kỹ năng công nghệ cao. Kết luận Lý giải.
C. Tối ưu hóa ứng dụng cho các thiết bị cao cấp nhất trên thị trường. Kết luận Lý giải.
D. Giảm thiểu số lượng tính năng để ứng dụng đơn giản hơn. Kết luận Lý giải.
14. Trong phát triển ứng dụng di động, ‘Deep Linking’ cho phép người dùng truy cập trực tiếp vào nội dung cụ thể nào của ứng dụng?
A. Cho phép người dùng truy cập trực tiếp vào một màn hình, một mục hoặc một chức năng cụ thể bên trong ứng dụng từ một liên kết bên ngoài (ví dụ: từ web, email, hoặc ứng dụng khác). Kết luận Lý giải.
B. Cho phép người dùng tải xuống toàn bộ ứng dụng từ một liên kết. Kết luận Lý giải.
C. Chỉ cho phép người dùng mở trang chủ của ứng dụng. Kết luận Lý giải.
D. Cho phép người dùng đăng nhập vào ứng dụng mà không cần mật khẩu. Kết luận Lý giải.
15. Trong phát triển ứng dụng di động, ‘Push Notification Payload’ chứa thông tin gì?
A. Chứa dữ liệu mà ứng dụng cần để hiển thị thông báo cho người dùng, ví dụ như tiêu đề, nội dung tin nhắn, âm thanh, số huy hiệu, và có thể cả dữ liệu tùy chỉnh để ứng dụng xử lý khi nhận được. Kết luận Lý giải.
B. Chỉ chứa địa chỉ IP của thiết bị nhận thông báo. Kết luận Lý giải.
C. Chỉ chứa thông tin về thời gian gửi thông báo. Kết luận Lý giải.
D. Chứa toàn bộ mã nguồn của ứng dụng. Kết luận Lý giải.
16. Khi thiết kế ứng dụng di động, nguyên tắc ‘User Control and Freedom’ (Kiểm soát và Tự do cho Người dùng) có ý nghĩa gì?
A. Cung cấp cho người dùng khả năng dễ dàng hoàn tác các hành động hoặc thoát khỏi các trạng thái không mong muốn một cách nhanh chóng, tạo cảm giác an toàn và kiểm soát. Kết luận Lý giải.
B. Buộc người dùng phải tuân theo một luồng hành động cố định. Kết luận Lý giải.
C. Giới hạn các tùy chọn có sẵn cho người dùng để tránh gây nhầm lẫn. Kết luận Lý giải.
D. Tự động hóa tất cả các quyết định của người dùng. Kết luận Lý giải.
17. Khi sử dụng Firebase Cloud Messaging (FCM) để gửi thông báo đẩy, vai trò của ‘Server Key’ là gì?
A. Là một khóa bí mật được sử dụng bởi máy chủ ứng dụng của bạn để xác thực với máy chủ FCM khi gửi thông báo đẩy đến các thiết bị. Kết luận Lý giải.
B. Là khóa dùng để mở khóa ứng dụng trên thiết bị của người dùng. Kết luận Lý giải.
C. Là khóa dùng để mã hóa dữ liệu người dùng. Kết luận Lý giải.
D. Là khóa duy nhất để định danh một thiết bị cụ thể. Kết luận Lý giải.
18. Khi thiết kế luồng người dùng (user flow) cho một ứng dụng di động, điều gì là quan trọng nhất cần xem xét?
A. Đảm bảo người dùng có thể hoàn thành các tác vụ chính một cách trực quan, dễ dàng và hiệu quả, với ít bước nhất có thể và không gặp phải các điểm gây nhầm lẫn hoặc cản trở. Kết luận Lý giải.
B. Tạo ra càng nhiều bước càng tốt để giữ chân người dùng lâu hơn. Kết luận Lý giải.
C. Sử dụng các thuật ngữ kỹ thuật phức tạp để thể hiện sự chuyên nghiệp. Kết luận Lý giải.
D. Tập trung vào việc hiển thị tất cả các tính năng có sẵn ngay trên màn hình đầu tiên. Kết luận Lý giải.
19. Khi thiết kế ứng dụng di động, ‘Information Architecture’ (Kiến trúc thông tin) đề cập đến điều gì?
A. Cách tổ chức, cấu trúc và đặt tên cho nội dung trong ứng dụng để người dùng có thể dễ dàng tìm kiếm và điều hướng đến thông tin họ cần. Kết luận Lý giải.
B. Cách ứng dụng tương tác với máy chủ. Kết luận Lý giải.
C. Cách ứng dụng xử lý dữ liệu người dùng. Kết luận Lý giải.
D. Cách ứng dụng hiển thị thông báo đẩy. Kết luận Lý giải.
20. Trong phát triển ứng dụng di động, ‘Offline Support’ (Hỗ trợ ngoại tuyến) là gì và tại sao nó lại quan trọng?
A. Cho phép ứng dụng hoạt động và truy cập một số chức năng hoặc dữ liệu ngay cả khi không có kết nối internet, giúp cải thiện trải nghiệm người dùng trong các tình huống kết nối kém hoặc không có. Kết luận Lý giải.
B. Yêu cầu người dùng phải có kết nối internet để sử dụng bất kỳ chức năng nào. Kết luận Lý giải.
C. Tự động đồng bộ hóa dữ liệu với máy chủ liên tục. Kết luận Lý giải.
D. Giảm kích thước ứng dụng bằng cách loại bỏ dữ liệu không cần thiết. Kết luận Lý giải.
21. Khi thiết kế giao diện cho ứng dụng di động, việc sử dụng ‘Gestures’ (Cử chỉ) có mục đích gì?
A. Cung cấp các cách tương tác tự nhiên và trực quan hơn với ứng dụng, cho phép người dùng thực hiện các hành động như vuốt, chạm, kéo thả để điều hướng hoặc thực thi lệnh. Kết luận Lý giải.
B. Buộc người dùng phải sử dụng bàn phím ảo. Kết luận Lý giải.
C. Giảm thiểu số lượng nút bấm trên màn hình. Kết luận Lý giải.
D. Chỉ sử dụng cho các chức năng ít quan trọng. Kết luận Lý giải.
22. Trong phát triển ứng dụng di động, ‘UX Research’ (Nghiên cứu trải nghiệm người dùng) thường bao gồm những hoạt động nào?
A. Phỏng vấn người dùng, khảo sát, phân tích hành vi người dùng, thử nghiệm khả năng sử dụng (usability testing) để hiểu nhu cầu, mong muốn và hành vi của đối tượng mục tiêu. Kết luận Lý giải.
B. Viết mã nguồn cho các tính năng chính của ứng dụng. Kết luận Lý giải.
C. Thiết kế giao diện người dùng dựa trên sở thích cá nhân của nhà phát triển. Kết luận Lý giải.
D. Tối ưu hóa hiệu năng ứng dụng trên các thiết bị cao cấp. Kết luận Lý giải.
23. Khi phát triển ứng dụng di động, tầm quan trọng của ‘User Feedback’ (Phản hồi của người dùng) là gì?
A. Cung cấp thông tin quý giá để cải thiện sản phẩm, phát hiện lỗi, hiểu rõ nhu cầu của người dùng và định hướng phát triển các tính năng mới. Kết luận Lý giải.
B. Chỉ được sử dụng để xác nhận rằng ứng dụng đang hoạt động tốt. Kết luận Lý giải.
C. Được sử dụng để quyết định giá bán của ứng dụng. Kết luận Lý giải.
D. Là thông tin không cần thiết nếu ứng dụng đã hoạt động ổn định. Kết luận Lý giải.
24. Trong phát triển ứng dụng di động, ‘Progressive Web Apps’ (PWAs) mang lại lợi ích gì so với ứng dụng gốc truyền thống?
A. Có thể truy cập qua trình duyệt web mà không cần cài đặt, hoạt động nhanh chóng, có khả năng hoạt động ngoại tuyến và đẩy thông báo, kết hợp ưu điểm của web và ứng dụng di động. Kết luận Lý giải.
B. Yêu cầu người dùng luôn phải có kết nối internet để sử dụng. Kết luận Lý giải.
C. Chỉ có thể chạy trên một hệ điều hành duy nhất. Kết luận Lý giải.
D. Luôn yêu cầu quyền truy cập sâu vào phần cứng của thiết bị. Kết luận Lý giải.
25. Trong phát triển ứng dụng di động, phương pháp Agile được ưa chuộng vì nó mang lại những lợi ích gì chính yếu?
A. Tăng cường khả năng thích ứng với sự thay đổi yêu cầu, cung cấp giá trị liên tục cho khách hàng và thúc đẩy hợp tác chặt chẽ giữa các bên liên quan. Kết luận Lý giải.
B. Giảm thiểu chi phí phát triển ban đầu bằng cách tập trung vào các tính năng cốt lõi và trì hoãn các chức năng phụ. Kết luận Lý giải.
C. Đảm bảo tất cả các yêu cầu được hoàn thành chính xác theo kế hoạch ban đầu mà không cần điều chỉnh. Kết luận Lý giải.
D. Tạo ra tài liệu kỹ thuật chi tiết và toàn diện ngay từ giai đoạn đầu dự án. Kết luận Lý giải.
26. Trong phát triển ứng dụng di động, ‘Service’ (Dịch vụ) trên Android được sử dụng để làm gì?
A. Thực hiện các hoạt động kéo dài mà không có giao diện người dùng trực tiếp, chẳng hạn như phát nhạc nền, tải dữ liệu hoặc gửi dữ liệu lên mạng. Kết luận Lý giải.
B. Đại diện cho một màn hình tương tác với người dùng. Kết luận Lý giải.
C. Quản lý việc nhận và xử lý các sự kiện đầu vào từ người dùng. Kết luận Lý giải.
D. Lưu trữ dữ liệu người dùng một cách an toàn trên thiết bị. Kết luận Lý giải.
27. Khi phát triển ứng dụng di động, việc sử dụng ‘Dependency Injection’ (DI) mang lại lợi ích gì?
A. Giúp giảm sự phụ thuộc giữa các thành phần của ứng dụng, làm cho mã nguồn dễ đọc, dễ bảo trì và dễ kiểm thử hơn bằng cách cung cấp các đối tượng cần thiết từ bên ngoài. Kết luận Lý giải.
B. Tự động hóa việc tạo ra tất cả các lớp trong ứng dụng. Kết luận Lý giải.
C. Đảm bảo rằng tất cả các thành phần đều có thể truy cập trực tiếp vào nhau. Kết luận Lý giải.
D. Tăng tốc độ biên dịch ứng dụng. Kết luận Lý giải.
28. Push Notification là một tính năng quan trọng trong ứng dụng di động. Mục đích chính của nó là gì?
A. Thông báo cho người dùng về các sự kiện, cập nhật hoặc tin nhắn mới ngay cả khi ứng dụng đang không hoạt động, nhằm tăng cường sự tương tác và giữ chân người dùng. Kết luận Lý giải.
B. Tự động cập nhật toàn bộ dữ liệu ứng dụng mà không cần sự cho phép của người dùng. Kết luận Lý giải.
C. Gửi quảng cáo định kỳ đến người dùng mà không liên quan đến hoạt động của ứng dụng. Kết luận Lý giải.
D. Thu thập thông tin cá nhân của người dùng mà không được sự đồng ý rõ ràng. Kết luận Lý giải.
29. Khi thiết kế giao diện người dùng (UI) cho ứng dụng di động, nguyên tắc ‘Consistency’ (Tính nhất quán) có ý nghĩa quan trọng nhất là gì?
A. Đảm bảo các yếu tố như màu sắc, font chữ, biểu tượng, cách bố trí và hành vi tương tác được sử dụng đồng nhất trên toàn bộ ứng dụng, giúp người dùng dễ dàng học hỏi và điều hướng. Kết luận Lý giải.
B. Sử dụng cùng một bộ màu sắc và font chữ đã được định sẵn bởi hệ điều hành (iOS hoặc Android) cho tất cả các thành phần giao diện. Kết luận Lý giải.
C. Thiết kế mỗi màn hình với giao diện hoàn toàn mới và độc đáo để tạo sự bất ngờ cho người dùng. Kết luận Lý giải.
D. Tập trung vào việc làm cho các nút bấm lớn nhất có thể để dễ dàng nhấn trên màn hình cảm ứng. Kết luận Lý giải.
30. Khi triển khai tính năng đăng nhập bằng tài khoản mạng xã hội (ví dụ: Google, Facebook) trong ứng dụng di động, công nghệ nào thường được sử dụng để xác thực?
A. OAuth 2.0 là một tiêu chuẩn ủy quyền phổ biến, cho phép người dùng cấp quyền truy cập hạn chế vào tài khoản của họ trên một dịch vụ mà không cần chia sẻ thông tin đăng nhập trực tiếp với ứng dụng. Kết luận Lý giải.
B. HTTP POST là phương thức duy nhất để gửi dữ liệu đăng nhập. Kết luận Lý giải.
C. SOAP là giao thức chính được sử dụng cho xác thực mạng xã hội. Kết luận Lý giải.
D. JWT (JSON Web Token) là giao thức xác thực duy nhất được sử dụng. Kết luận Lý giải.
31. Khi sử dụng ‘Location Services’ (Dịch vụ vị trí) trong ứng dụng di động, những cân nhắc về quyền riêng tư nào là quan trọng nhất?
A. Cần xin phép rõ ràng từ người dùng trước khi truy cập vị trí của họ, chỉ thu thập dữ liệu vị trí cần thiết cho chức năng của ứng dụng và thông báo rõ ràng cách dữ liệu được sử dụng. Kết luận Lý giải.
B. Luôn truy cập vị trí của người dùng mà không cần hỏi. Kết luận Lý giải.
C. Thu thập dữ liệu vị trí của tất cả người dùng để phân tích hành vi. Kết luận Lý giải.
D. Chia sẻ dữ liệu vị trí của người dùng với các bên thứ ba mà không có sự đồng ý. Kết luận Lý giải.
32. Trong phát triển ứng dụng di động, ‘Unit Testing’ (Kiểm thử đơn vị) tập trung vào việc kiểm tra gì?
A. Kiểm tra các đơn vị mã nhỏ nhất, độc lập nhất (ví dụ: hàm, phương thức, lớp) để đảm bảo chúng hoạt động đúng như mong đợi trong các tình huống khác nhau. Kết luận Lý giải.
B. Kiểm tra toàn bộ luồng người dùng từ đầu đến cuối. Kết luận Lý giải.
C. Kiểm tra giao diện người dùng và khả năng tương tác của nó. Kết luận Lý giải.
D. Kiểm tra hiệu năng của ứng dụng trên các thiết bị khác nhau. Kết luận Lý giải.
33. Trong phát triển ứng dụng di động, ‘Continuous Integration’ (CI) có vai trò gì?
A. Tự động hóa quá trình tích hợp các thay đổi mã nguồn từ nhiều nhà phát triển vào một kho lưu trữ chung, thường xuyên chạy các bài kiểm thử tự động để phát hiện sớm các lỗi tích hợp. Kết luận Lý giải.
B. Tự động hóa quá trình triển khai ứng dụng lên cửa hàng ứng dụng. Kết luận Lý giải.
C. Tự động hóa việc viết tài liệu kỹ thuật cho ứng dụng. Kết luận Lý giải.
D. Tự động hóa quá trình kiểm thử giao diện người dùng thủ công. Kết luận Lý giải.
34. Trong phát triển ứng dụng di động, ‘Background Processing’ (Xử lý nền) là gì và tại sao nó cần được quản lý cẩn thận?
A. Là các tác vụ chạy khi ứng dụng không hoạt động ở foreground, cần quản lý cẩn thận để tránh tiêu hao pin quá mức, chiếm dụng tài nguyên hệ thống và ảnh hưởng đến trải nghiệm người dùng. Kết luận Lý giải.
B. Là các tác vụ chỉ chạy khi người dùng đang mở ứng dụng. Kết luận Lý giải.
C. Là các tác vụ chỉ liên quan đến giao diện người dùng. Kết luận Lý giải.
D. Là các tác vụ chỉ có thể thực hiện khi thiết bị đang sạc pin. Kết luận Lý giải.
35. Trong phát triển ứng dụng di động, ‘Caching’ (Lưu trữ tạm) được sử dụng với mục đích chính nào?
A. Lưu trữ dữ liệu thường xuyên truy cập hoặc dữ liệu từ các yêu cầu mạng chậm, giúp tăng tốc độ tải và giảm tải cho máy chủ, đồng thời cải thiện trải nghiệm người dùng. Kết luận Lý giải.
B. Tăng cường bảo mật cho toàn bộ ứng dụng. Kết luận Lý giải.
C. Giảm dung lượng bộ nhớ cần thiết cho ứng dụng. Kết luận Lý giải.
D. Tự động cập nhật dữ liệu ứng dụng theo thời gian thực. Kết luận Lý giải.
36. Khi lựa chọn giữa phát triển ứng dụng gốc (Native) và ứng dụng lai (Hybrid/Cross-platform), yếu tố nào thường là quyết định quan trọng nhất đối với một dự án?
A. Yêu cầu về hiệu năng, trải nghiệm người dùng, khả năng truy cập sâu vào các tính năng của thiết bị, ngân sách và thời gian phát triển. Kết luận Lý giải.
B. Sự phổ biến của ngôn ngữ lập trình. Kết luận Lý giải.
C. Khả năng tùy chỉnh màu sắc và font chữ. Kết luận Lý giải.
D. Số lượng quảng cáo có thể hiển thị trong ứng dụng. Kết luận Lý giải.
37. Khi tối ưu hóa hiệu suất ứng dụng di động, tại sao việc quản lý bộ nhớ (memory management) lại quan trọng?
A. Quản lý bộ nhớ hiệu quả giúp tránh tình trạng ứng dụng bị treo (crash) do hết bộ nhớ, giảm tiêu thụ pin và cải thiện tốc độ phản hồi. Kết luận Lý giải.
B. Tăng dung lượng bộ nhớ RAM có sẵn trên thiết bị di động. Kết luận Lý giải.
C. Cho phép ứng dụng chạy các tác vụ nặng mà không cần quan tâm đến tài nguyên. Kết luận Lý giải.
D. Giảm kích thước tệp tin cài đặt (APK/IPA) của ứng dụng. Kết luận Lý giải.
38. Trong phát triển ứng dụng di động, khái niệm ‘State Management’ (Quản lý trạng thái) đề cập đến điều gì?
A. Quá trình theo dõi, cập nhật và phản ánh các thay đổi về dữ liệu hoặc giao diện người dùng trong ứng dụng để đảm bảo tính nhất quán và hành vi dự đoán được. Kết luận Lý giải.
B. Quản lý các tiến trình chạy ngầm của ứng dụng. Kết luận Lý giải.
C. Kiểm soát quyền truy cập của người dùng vào các tính năng khác nhau. Kết luận Lý giải.
D. Tự động lưu trữ toàn bộ lịch sử hoạt động của người dùng. Kết luận Lý giải.
39. Trong phát triển ứng dụng iOS, ‘Delegate Pattern’ là một mẫu thiết kế quan trọng. Vai trò của nó là gì?
A. Cho phép một đối tượng (delegate) xử lý các sự kiện hoặc thông báo từ một đối tượng khác (owner), giúp tách biệt trách nhiệm và tăng tính linh hoạt. Kết luận Lý giải.
B. Đảm bảo rằng mọi đối tượng trong ứng dụng đều có thể trực tiếp truy cập và sửa đổi dữ liệu của nhau. Kết luận Lý giải.
C. Tự động hóa hoàn toàn quá trình tạo giao diện người dùng mà không cần mã hóa. Kết luận Lý giải.
D. Quản lý kết nối mạng và truyền dữ liệu giữa các thành phần ứng dụng. Kết luận Lý giải.
40. Trong phát triển ứng dụng di động, ‘Backend as a Service’ (BaaS) cung cấp những gì cho nhà phát triển?
A. Cung cấp sẵn các dịch vụ backend phổ biến như cơ sở dữ liệu, xác thực người dùng, lưu trữ tệp tin, thông báo đẩy, giúp nhà phát triển tập trung vào phần giao diện và logic phía client. Kết luận Lý giải.
B. Cung cấp giao diện người dùng sẵn có. Kết luận Lý giải.
C. Cung cấp công cụ để biên dịch mã nguồn. Kết luận Lý giải.
D. Cung cấp nền tảng để triển khai ứng dụng lên cửa hàng. Kết luận Lý giải.
41. Trong phát triển ứng dụng di động, ‘UX (User Experience)’ là gì?
A. Chỉ tập trung vào giao diện đồ họa đẹp mắt của ứng dụng.
B. Là cảm nhận tổng thể của người dùng khi tương tác với ứng dụng, bao gồm tính dễ sử dụng, hiệu quả, và sự hài lòng.
C. Là quá trình mã hóa và biên dịch ứng dụng.
D. Là việc đảm bảo ứng dụng hoạt động ổn định mà không bị lỗi.
42. Trong phát triển ứng dụng di động, ‘Progress Bar’ (Thanh tiến trình) thường được sử dụng để làm gì?
A. Hiển thị số phiên bản của ứng dụng.
B. Cho người dùng biết một tác vụ đang diễn ra và tiến trình hoàn thành của nó (ví dụ: tải xuống, cài đặt, xử lý dữ liệu).
C. Đánh dấu các mục đã hoàn thành trong danh sách.
D. Hiển thị trạng thái kết nối mạng.
43. Một nhà phát triển muốn xây dựng một ứng dụng có khả năng hiển thị bản đồ, định vị vị trí người dùng và hiển thị các điểm quan tâm (POI). Nền tảng nào cung cấp các API và SDK mạnh mẽ cho các chức năng bản đồ và định vị?
A. Firebase Authentication
B. Google Maps SDK (cho Android và iOS) và MapKit (cho iOS).
C. SharedPreferences
D. WorkManager
44. Trong phát triển ứng dụng di động, khi nào nên ưu tiên sử dụng kiến trúc MVVM (Model-View-ViewModel) thay vì MVC (Model-View-Controller)?
A. Khi ứng dụng có ít tương tác người dùng và logic nghiệp vụ đơn giản.
B. Khi cần tách biệt rõ ràng giữa logic hiển thị (UI) và logic nghiệp vụ, đồng thời tăng khả năng kiểm thử tự động (unit testing).
C. Khi đội ngũ phát triển chỉ có kinh nghiệm với MVC và không muốn thay đổi.
D. Khi ứng dụng chỉ cần giao diện đơn giản và không yêu cầu cập nhật dữ liệu thường xuyên.
45. Một ứng dụng di động cần hiển thị thông tin thời tiết được cập nhật liên tục từ một API. Khi người dùng mở ứng dụng, họ mong đợi thấy dữ liệu thời tiết mới nhất. Cách tiếp cận nào sau đây là hiệu quả để lấy dữ liệu từ API?
A. Chỉ tải dữ liệu khi người dùng thực hiện một hành động cụ thể, ví dụ như kéo để làm mới.
B. Tải dữ liệu tự động khi ứng dụng được khởi chạy và có thể thiết lập một khoảng thời gian định kỳ để cập nhật dữ liệu nền.
C. Yêu cầu người dùng nhập thủ công dữ liệu thời tiết.
D. Sử dụng GPS để dự đoán thời tiết.
46. Một ứng dụng yêu cầu người dùng nhập thông tin cá nhân và lưu trữ thông tin đó trên máy chủ. Để đảm bảo tính bảo mật của dữ liệu nhạy cảm trong quá trình truyền tải, biện pháp nào là quan trọng nhất?
A. Sử dụng HTTP thay vì HTTPS.
B. Mã hóa dữ liệu trên thiết bị trước khi gửi đi và sử dụng HTTPS cho kênh truyền tải.
C. Chỉ lưu trữ thông tin cá nhân trên thiết bị.
D. Yêu cầu người dùng nhập lại thông tin mỗi lần gửi.
47. Trong phát triển ứng dụng di động sử dụng Flutter, khái niệm ‘Widget Tree’ đề cập đến điều gì?
A. Cấu trúc dữ liệu được sử dụng để lưu trữ trạng thái của ứng dụng.
B. Cây cấu trúc phân cấp của tất cả các widget được sử dụng để xây dựng giao diện người dùng của ứng dụng.
C. Cách dữ liệu được truyền từ cha xuống con trong ứng dụng.
D. Cơ chế xử lý sự kiện trong ứng dụng Flutter.
48. Trong phát triển ứng dụng di động, ‘Push Notification’ là gì và mục đích chính của nó là gì?
A. Là một loại tin nhắn SMS mà ứng dụng gửi đi.
B. Là một thông báo được gửi từ máy chủ đến thiết bị di động của người dùng, ngay cả khi ứng dụng không chạy.
C. Là một tính năng cho phép người dùng gọi điện thoại trực tiếp từ ứng dụng.
D. Là một cơ chế để ứng dụng tự động cập nhật.
49. Trong phát triển ứng dụng di động, ‘UI Thread’ (hoặc Main Thread) có vai trò gì?
A. Chỉ chịu trách nhiệm xử lý các tác vụ tính toán phức tạp.
B. Xử lý tất cả các hoạt động liên quan đến giao diện người dùng (UI), bao gồm vẽ giao diện, xử lý sự kiện chạm, cập nhật dữ liệu hiển thị.
C. Quản lý kết nối mạng của ứng dụng.
D. Thực hiện các tác vụ lưu trữ dữ liệu.
50. Trong phát triển ứng dụng di động, bạn cần xử lý một tác vụ tốn nhiều thời gian và không nên thực hiện trên Main/UI thread để tránh làm đóng băng giao diện. Bạn nên sử dụng cơ chế nào trên Android?
A. Tạo một `Thread` mới và thực hiện tác vụ bên trong đó.
B. Sử dụng `ViewModel` để quản lý logic nghiệp vụ.
C. Sử dụng `WorkManager` cho các tác vụ có thể trì hoãn, đảm bảo hoạt động ngay cả khi ứng dụng bị đóng.
D. Sử dụng `Looper` và `MessageQueue` trực tiếp.
51. Trong phát triển ứng dụng di động, ‘Dependency Injection’ (DI) là một kỹ thuật nhằm mục đích gì?
A. Tăng cường bảo mật bằng cách mã hóa các phụ thuộc của ứng dụng.
B. Giúp quản lý các phụ thuộc của một lớp (class) bằng cách cung cấp chúng từ bên ngoài thay vì để lớp tự tạo ra.
C. Tự động hóa quá trình biên dịch ứng dụng.
D. Giảm dung lượng file cài đặt của ứng dụng.
52. Một nhà phát triển đang làm việc trên một ứng dụng thương mại điện tử và nhận thấy hiệu suất tải hình ảnh sản phẩm rất chậm. Họ muốn tối ưu hóa việc này. Biện pháp nào sau đây KHÔNG phải là một chiến lược tối ưu hóa tải hình ảnh hiệu quả?
A. Sử dụng các thư viện tải ảnh hỗ trợ lazy loading và caching.
B. Nén hình ảnh về kích thước và độ phân giải phù hợp với màn hình thiết bị.
C. Tải tất cả hình ảnh sản phẩm với độ phân giải cao nhất ngay khi màn hình sản phẩm được hiển thị.
D. Sử dụng định dạng hình ảnh hiện đại như WebP (nếu được hỗ trợ) để giảm dung lượng file.
53. Một ứng dụng cần lưu trữ các tệp phương tiện lớn như hình ảnh, video. Phương pháp lưu trữ nào sau đây là phù hợp nhất trên Android?
A. Lưu trữ tất cả các tệp media vào SharedPreferences.
B. Lưu trữ các tệp media vào bộ nhớ trong của ứng dụng (internal storage) hoặc bộ nhớ ngoài (external storage) tùy thuộc vào quyền truy cập và mục đích sử dụng.
C. Chỉ lưu trữ đường dẫn đến tệp media, không lưu trữ bản thân tệp.
D. Sử dụng Content Provider để lưu trữ tệp media.
54. Trong phát triển ứng dụng di động, ‘ViewModel’ là một thành phần trong kiến trúc MVVM và có vai trò gì?
A. Đại diện cho View và xử lý mọi tương tác người dùng.
B. Chứa logic nghiệp vụ và cung cấp dữ liệu cho View, đồng thời sống sót qua các thay đổi cấu hình (như xoay màn hình).
C. Quản lý kết nối mạng và gọi API.
D. Lưu trữ dữ liệu người dùng cục bộ trên thiết bị.
55. Một nhà phát triển đang xây dựng một ứng dụng quản lý công việc. Họ cần một cơ sở dữ liệu cục bộ để lưu trữ danh sách công việc, trạng thái hoàn thành, ngày hết hạn và ghi chú. Cơ sở dữ liệu nào sau đây là lựa chọn tốt cho việc này trên Android và iOS?
A. Firebase Realtime Database
B. SQLite (hoặc Realm, được xây dựng trên SQLite)
C. Shared Preferences
D. Local Storage (trong trình duyệt, không áp dụng cho mobile app native)
56. Một ứng dụng di động cần thực hiện một yêu cầu mạng phức tạp, bao gồm nhiều bước và có thể có các điều kiện phụ thuộc giữa các bước đó. Bạn nên sử dụng thư viện nào trên Android để quản lý các tác vụ bất đồng bộ và chuỗi xử lý này một cách hiệu quả?
A. Kotlin Coroutines
B. Java Threads
C. AsyncTask
D. Handler
57. Một nhà phát triển muốn tích hợp tính năng nhận diện khuôn mặt để mở khóa ứng dụng. Tính năng này đòi hỏi quyền truy cập vào camera và có thể là các dữ liệu sinh trắc học. Quyền truy cập này nên được yêu cầu như thế nào để đảm bảo trải nghiệm người dùng tốt nhất?
A. Yêu cầu tất cả các quyền ngay khi ứng dụng được cài đặt.
B. Yêu cầu quyền khi người dùng cố gắng sử dụng tính năng yêu cầu quyền đó lần đầu tiên và giải thích rõ lý do cần quyền.
C. Không bao giờ yêu cầu quyền truy cập camera.
D. Yêu cầu quyền truy cập camera thông qua một thông báo chung cho tất cả các tính năng.
58. Khi phát triển ứng dụng đa nền tảng (cross-platform) bằng React Native, điều gì là quan trọng nhất để đảm bảo hiệu suất tốt trên cả iOS và Android?
A. Chỉ sử dụng các component gốc (native components) của React Native.
B. Tối ưu hóa việc sử dụng Bridge (cầu nối giữa JavaScript và Native code), tránh truyền dữ liệu quá lớn qua Bridge và sử dụng các API gốc khi cần thiết cho các tác vụ nặng.
C. Viết toàn bộ logic ứng dụng bằng ngôn ngữ Swift hoặc Kotlin và chỉ sử dụng React Native cho giao diện.
D. Giảm thiểu số lượng component trên mỗi màn hình.
59. Khi triển khai Dark Mode (Chế độ tối) cho ứng dụng di động, điều gì là quan trọng nhất cần xem xét?
A. Chỉ thay đổi màu nền thành đen.
B. Đảm bảo tất cả các yếu tố UI (văn bản, nền, biểu tượng, hình ảnh) có độ tương phản phù hợp và dễ nhìn trên cả hai chế độ sáng và tối.
C. Sử dụng màu xanh lam làm màu chủ đạo cho chế độ tối.
D. Tự động tắt các hình ảnh động khi ở chế độ tối.
60. Trong phát triển Android, cách nào sau đây là cách tốt nhất để truy cập và cập nhật dữ liệu người dùng trên giao diện người dùng (UI) từ một luồng nền (background thread)?
A. Truy cập trực tiếp `View` từ luồng nền.
B. Sử dụng `runOnUiThread()` hoặc các cơ chế tương tự như `Handler` hoặc `ViewModel` với `LiveData`.
C. Tạo một `Thread` mới cho mỗi lần cập nhật UI.
D. Sử dụng `AsyncTask` để thực hiện mọi hoạt động trên luồng nền.
61. Trong phát triển ứng dụng iOS, khi nào nên sử dụng `delegate` pattern so với `NotificationCenter`?
A. Khi cần gửi thông báo đến nhiều đối tượng nhận độc lập, không có mối quan hệ trực tiếp.
B. Khi cần một mối quan hệ một-nhiều (one-to-many) hoặc một-một (one-to-one) rõ ràng, nơi đối tượng nguồn (source) chủ động thông báo cho một hoặc một vài đối tượng nhận cụ thể (delegate).
C. Chỉ khi cần gửi thông báo đến tất cả các đối tượng trong ứng dụng.
D. Khi không có mối quan hệ rõ ràng giữa các đối tượng và chỉ cần thông báo chung.
62. Một ứng dụng di động cần phân biệt giữa các loại màn hình khác nhau (ví dụ: điện thoại, máy tính bảng) và hiển thị giao diện phù hợp. Biện pháp nào sau đây là hiệu quả nhất để đạt được điều này?
A. Sử dụng một bố cục cố định duy nhất cho mọi kích thước màn hình.
B. Sử dụng các tài nguyên (layout, drawable, string) có tên khác nhau dựa trên loại màn hình (ví dụ: `layout-sw600dp` cho máy tính bảng trên Android).
C. Chỉ hỗ trợ một loại kích thước màn hình.
D. Yêu cầu người dùng điều chỉnh kích thước hiển thị thủ công.
63. Một nhà phát triển đang xây dựng một ứng dụng yêu cầu người dùng đăng nhập bằng tài khoản Google. Họ cần sử dụng SDK của Google để thực hiện việc này. Nền tảng nào thường cung cấp các SDK và API cho phép tích hợp dịch vụ của Google vào ứng dụng di động?
A. React Native
B. Flutter
C. Android (với Android SDK) và iOS (với Google Sign-In SDK)
D. Tất cả các lựa chọn trên đều có thể tích hợp dịch vụ Google.
64. Trong phát triển ứng dụng di động, ‘Deep Linking’ cho phép người dùng thực hiện hành động gì?
A. Cho phép ứng dụng truy cập trực tiếp vào camera của thiết bị.
B. Cho phép người dùng chuyển đổi giữa các ứng dụng khác nhau trên thiết bị.
C. Chuyển hướng người dùng từ một liên kết web hoặc ứng dụng khác đến một trang hoặc nội dung cụ thể bên trong ứng dụng di động.
D. Cho phép ứng dụng gửi tin nhắn SMS tự động.
65. Một ứng dụng cần hiển thị một danh sách các mặt hàng. Mỗi mặt hàng có thể có hình ảnh, tên, giá và một nút ‘Thêm vào giỏ hàng’. Để hiển thị danh sách này một cách hiệu quả và có thể tái sử dụng các thành phần giao diện, bạn nên sử dụng kỹ thuật nào?
A. Tạo một đối tượng `View` mới cho mỗi mục trong danh sách.
B. Sử dụng một Adapter (ví dụ: `RecyclerView.Adapter` trên Android, `UICollectionViewDataSource` trên iOS) để liên kết dữ liệu với các View có thể tái sử dụng.
C. Sử dụng `LinearLayout` chứa tất cả các mục.
D. Cuộn từng mục một cách thủ công.
66. Một nhà phát triển đang xem xét việc thêm tính năng xác thực người dùng cho ứng dụng của mình. Họ muốn một giải pháp an toàn, dễ triển khai và có thể xử lý nhiều phương thức xác thực (email/mật khẩu, Google, Facebook). Giải pháp nào sau đây là phù hợp?
A. Tự xây dựng hệ thống quản lý người dùng từ đầu và lưu trữ mật khẩu dưới dạng văn bản thuần.
B. Sử dụng các dịch vụ xác thực của bên thứ ba như Firebase Authentication, Auth0, hoặc AWS Cognito.
C. Chỉ cho phép người dùng truy cập ứng dụng mà không cần đăng nhập.
D. Lưu trữ tên người dùng và mật khẩu trực tiếp trong SharedPreferences.
67. Trong phát triển ứng dụng di động, ‘Unit Testing’ (Kiểm thử đơn vị) là gì và mục đích của nó là gì?
A. Kiểm tra toàn bộ ứng dụng trên nhiều thiết bị khác nhau.
B. Kiểm tra từng đơn vị nhỏ nhất của mã nguồn (ví dụ: một hàm, một lớp) một cách độc lập để đảm bảo chúng hoạt động đúng.
C. Kiểm tra trải nghiệm người dùng cuối cùng.
D. Kiểm tra hiệu suất của ứng dụng trên mạng chậm.
68. Khi thiết kế một ứng dụng di động, việc sử dụng các Icon ngữ cảnh (Contextual Icons) có ý nghĩa gì?
A. Sử dụng các biểu tượng động thay đổi dựa trên thời tiết.
B. Sử dụng các biểu tượng quen thuộc, dễ hiểu và thể hiện rõ chức năng của nút hoặc hành động tương ứng.
C. Sử dụng các biểu tượng trừu tượng để tăng tính thẩm mỹ.
D. Chỉ sử dụng các biểu tượng có sẵn trong hệ điều hành.
69. Trong phát triển ứng dụng di động, ‘Native App’ (Ứng dụng gốc) là gì?
A. Ứng dụng được phát triển bằng các ngôn ngữ lập trình web như HTML, CSS, JavaScript.
B. Ứng dụng được xây dựng bằng ngôn ngữ lập trình và bộ công cụ phát triển (SDK) dành riêng cho một nền tảng di động cụ thể (ví dụ: Swift/Objective-C cho iOS, Kotlin/Java cho Android).
C. Ứng dụng có thể chạy trên mọi hệ điều hành mà không cần thay đổi mã nguồn.
D. Ứng dụng được truy cập thông qua trình duyệt web trên điện thoại.
70. Trong phát triển ứng dụng di động, khái niệm ‘State Management’ đề cập đến việc gì?
A. Quản lý trạng thái kết nối mạng của thiết bị.
B. Quản lý vòng đời của ứng dụng và các hoạt động (activities/view controllers).
C. Cách dữ liệu và trạng thái của giao diện người dùng (UI) được lưu trữ, cập nhật và truyền đi trong ứng dụng.
D. Kiểm soát quyền truy cập của ứng dụng vào các tài nguyên hệ thống.
71. Một ứng dụng di động cần lưu trữ các cài đặt của người dùng như tên người dùng, tùy chọn chủ đề (theme) và trạng thái đăng nhập. Phương pháp lưu trữ nào sau đây là phù hợp và hiệu quả cho các dữ liệu này trên Android?
A. Lưu trữ tất cả cài đặt vào một file văn bản lớn trong bộ nhớ trong.
B. Sử dụng `SharedPreferences` để lưu trữ các cặp key-value nhỏ, dễ truy cập.
C. Sử dụng `ContentProvider` để quản lý tất cả cài đặt.
D. Lưu trữ trực tiếp vào database SQLite mà không có bất kỳ lớp trừu tượng nào.
72. Một ứng dụng cần hiển thị danh sách các mục có thể cuộn vô hạn (infinite scrolling) và mỗi mục có thể chứa hình ảnh, tiêu đề và mô tả. Thư viện UI nào sau đây trên Android là phù hợp nhất để hiển thị danh sách hiệu quả, đặc biệt khi số lượng mục rất lớn?
A. `ListView`
B. `RecyclerView`
C. `LinearLayout` lồng trong `ScrollView`
D. `GridView`
73. Khi thiết kế giao diện người dùng cho ứng dụng di động, nguyên tắc ‘Progressive Disclosure’ đề cập đến điều gì?
A. Hiển thị tất cả thông tin và tùy chọn ngay lập tức để người dùng dễ dàng truy cập.
B. Che giấu các tùy chọn hoặc thông tin ít quan trọng ban đầu, chỉ hiển thị khi người dùng yêu cầu hoặc cần thiết.
C. Sử dụng các animation phức tạp để thu hút sự chú ý của người dùng.
D. Luôn ưu tiên hiển thị các nút hành động chính ở vị trí dễ thấy nhất.
74. Một nhóm nhà phát triển đang xây dựng một ứng dụng nhắn tin thời gian thực. Họ cần một giải pháp backend có khả năng xử lý đồng thời hàng triệu kết nối và đẩy tin nhắn tức thời đến người dùng. Giải pháp nào sau đây là phù hợp nhất?
A. Sử dụng RESTful API với polling liên tục từ client.
B. Sử dụng WebSockets hoặc công nghệ tương tự (như MQTT) cho giao tiếp hai chiều thời gian thực.
C. Sử dụng FTP để truyền tin nhắn giữa các client.
D. Xây dựng một ứng dụng backend đơn luồng (single-threaded) để quản lý tất cả kết nối.
75. Một ứng dụng di động cần phân tích hành vi người dùng để cải thiện trải nghiệm. Họ muốn theo dõi các sự kiện như lượt nhấp vào nút, thời gian xem trang, và luồng di chuyển của người dùng. Công cụ phân tích nào thường được sử dụng cho mục đích này?
A. Firebase Performance Monitoring
B. Firebase Crashlytics
C. Firebase Analytics (hoặc các công cụ tương tự như Google Analytics for Mobile)
D. Firebase Cloud Messaging
76. Khi xây dựng một ứng dụng có khả năng tùy chỉnh cao cho người dùng, ví dụ như cho phép họ thay đổi bố cục, màu sắc, hoặc thêm/bớt các widget trên màn hình. Cách tiếp cận nào sau đây là phù hợp nhất để lưu trữ và khôi phục các tùy chỉnh này?
A. Lưu trữ tất cả tùy chỉnh dưới dạng các biến toàn cục (global variables).
B. Sử dụng một cơ sở dữ liệu như SQLite hoặc Realm để lưu trữ các cấu hình tùy chỉnh dưới dạng các bản ghi có cấu trúc.
C. Yêu cầu người dùng nhập lại tất cả tùy chỉnh mỗi khi mở ứng dụng.
D. Lưu trữ các tùy chỉnh dưới dạng các tệp cấu hình JSON riêng lẻ cho mỗi người dùng.
77. Trong phát triển ứng dụng di động, ‘Accessibility’ (Khả năng tiếp cận) đề cập đến điều gì?
A. Khả năng ứng dụng hoạt động tốt trên các thiết bị có cấu hình thấp.
B. Khả năng ứng dụng có thể truy cập và sử dụng bởi mọi người, bao gồm cả những người có khuyết tật (ví dụ: khiếm thị, khiếm thính, suy giảm vận động).
C. Khả năng ứng dụng tự động điều chỉnh ngôn ngữ.
D. Khả năng ứng dụng kết nối với các thiết bị Bluetooth.
78. Trong quá trình phát triển ứng dụng, việc sử dụng CI/CD (Continuous Integration/Continuous Deployment) mang lại lợi ích chính nào?
A. Tăng cường bảo mật bằng cách mã hóa tất cả dữ liệu người dùng.
B. Giảm thiểu rủi ro lỗi phần mềm, tăng tốc độ phát hành và cải thiện quy trình làm việc của đội ngũ.
C. Đảm bảo ứng dụng tương thích với mọi phiên bản hệ điều hành di động.
D. Tự động hóa việc thiết kế giao diện người dùng.
79. Trong phát triển ứng dụng di động, ‘Cross-Platform Development’ (Phát triển đa nền tảng) đề cập đến việc gì?
A. Xây dựng ứng dụng chỉ chạy trên một hệ điều hành duy nhất.
B. Phát triển một ứng dụng bằng một bộ mã nguồn duy nhất có thể chạy trên nhiều hệ điều hành di động (ví dụ: iOS và Android).
C. Phát triển ứng dụng chỉ dành cho máy tính để bàn.
D. Phát triển ứng dụng web có thể truy cập từ mọi thiết bị.
80. Một nhà phát triển cần triển khai một tính năng cho phép người dùng chụp ảnh và tải lên ứng dụng. Họ muốn xử lý ảnh sau khi chụp (ví dụ: cắt, xoay). Cơ chế nào sau đây là phù hợp để lấy ảnh từ camera và xử lý?
A. Sử dụng `SharedPreferences` để lưu ảnh.
B. Sử dụng các API camera của hệ điều hành (ví dụ: `CameraX` trên Android, `AVFoundation` trên iOS) để chụp ảnh và sau đó xử lý tệp ảnh.
C. Yêu cầu người dùng tải ảnh từ máy tính.
D. Sử dụng `NotificationCenter` để nhận ảnh.
81. Trong phát triển ứng dụng di động, ‘responsive design’ có nghĩa là gì?
A. Thiết kế giao diện người dùng có khả năng tự điều chỉnh để hiển thị tốt trên các kích thước màn hình và độ phân giải khác nhau.
B. Ứng dụng có thể tự động cập nhật mà không cần sự can thiệp của người dùng.
C. Ứng dụng có thể phản hồi nhanh chóng với các hành động của người dùng.
D. Thiết kế tập trung vào việc tối ưu hóa hiệu suất sử dụng pin.
82. Trong kiến trúc MVVM (Model-View-ViewModel), vai trò chính của ‘ViewModel’ là gì?
A. Chứa logic trình bày (presentation logic) và cung cấp dữ liệu cho View, đồng thời xử lý các hành động từ View.
B. Đại diện cho dữ liệu của ứng dụng và logic nghiệp vụ liên quan đến dữ liệu.
C. Hiển thị giao diện người dùng và nhận tương tác từ người dùng.
D. Quản lý kết nối mạng và truy cập cơ sở dữ liệu.
83. Quá trình ‘debugging’ trong phát triển ứng dụng di động đề cập đến hoạt động nào?
A. Tìm kiếm, xác định và sửa chữa các lỗi (bugs) trong mã nguồn ứng dụng.
B. Thiết kế giao diện người dùng và trải nghiệm người dùng.
C. Tối ưu hóa hiệu suất và tốc độ tải của ứng dụng.
D. Phân tích hành vi và thu thập phản hồi từ người dùng.
84. Tại sao việc tối ưu hóa hiệu suất (performance optimization) lại quan trọng trong phát triển ứng dụng di động?
A. Để đảm bảo ứng dụng phản hồi nhanh, sử dụng ít tài nguyên (pin, bộ nhớ) và mang lại trải nghiệm người dùng tốt.
B. Để giảm kích thước tệp tin cài đặt ứng dụng xuống mức tối thiểu.
C. Để tăng khả năng tương thích với các phiên bản hệ điều hành cũ.
D. Để đơn giản hóa quy trình debug và bảo trì ứng dụng.
85. Trong iOS, ‘Delegate Pattern’ là một mẫu thiết kế quan trọng. Vai trò của Delegate trong mẫu này là gì?
A. Cho phép một đối tượng ủy thác trách nhiệm xử lý một sự kiện hoặc nhiệm vụ cho một đối tượng khác.
B. Quản lý vòng đời của ứng dụng.
C. Định nghĩa cấu trúc dữ liệu.
D. Truyền dữ liệu giữa các màn hình.
86. Trong Android, lớp (class) nào chịu trách nhiệm quản lý giao diện người dùng và vòng đời của một màn hình?
A. Activity
B. Service
C. BroadcastReceiver
D. ContentProvider
87. Thành phần nào của iOS cho phép bạn quản lý các đối tượng giao diện người dùng (UI Elements) và các sự kiện tương tác của người dùng?
A. UIViewController
B. AppDelegate
C. NSObject
D. UIApplication
88. Ưu điểm của việc sử dụng thư viện (libraries) hoặc framework trong phát triển ứng dụng di động là gì?
A. Tăng tốc độ phát triển, giảm thiểu mã lặp lại và tận dụng các giải pháp đã được kiểm chứng.
B. Đảm bảo ứng dụng chỉ chạy trên một hệ điều hành duy nhất.
C. Yêu cầu ít kiến thức chuyên môn hơn từ nhà phát triển.
D. Giảm đáng kể chi phí bản quyền phần mềm.
89. Trong iOS, ‘Core Data’ là một framework dùng để làm gì?
A. Quản lý vòng đời của các đối tượng và lưu trữ dữ liệu một cách bền vững trên thiết bị.
B. Xử lý các yêu cầu mạng.
C. Thiết kế giao diện người dùng.
D. Tạo hoạt ảnh (animations) cho ứng dụng.
90. API (Application Programming Interface) trong phát triển ứng dụng di động có chức năng cơ bản là gì?
A. Cung cấp một bộ quy tắc và định nghĩa để các phần mềm khác nhau có thể tương tác và trao đổi dữ liệu với nhau.
B. Xác định cấu trúc và bố cục của giao diện người dùng.
C. Quản lý vòng đời của ứng dụng và các thành phần của nó.
D. Tối ưu hóa việc sử dụng bộ nhớ và CPU của thiết bị.
91. Trong phát triển ứng dụng di động, ‘testing’ (kiểm thử) là một giai đoạn quan trọng. Loại kiểm thử nào tập trung vào việc đảm bảo các thành phần riêng lẻ của ứng dụng hoạt động đúng?
A. Unit Testing (Kiểm thử đơn vị)
B. UI Testing (Kiểm thử giao diện người dùng)
C. Integration Testing (Kiểm thử tích hợp)
D. End-to-End Testing (Kiểm thử đầu cuối)
92. Trong iOS, ‘Storyboard’ là một công cụ dùng để làm gì?
A. Thiết kế giao diện người dùng và định nghĩa luồng chuyển đổi giữa các màn hình một cách trực quan.
B. Quản lý các tệp tài nguyên của ứng dụng như hình ảnh và âm thanh.
C. Viết mã logic nghiệp vụ cho ứng dụng.
D. Theo dõi và debug các lỗi trong ứng dụng.
93. Thành phần nào của Android chịu trách nhiệm thực thi các tác vụ nền mà không có giao diện người dùng trực tiếp?
A. Service
B. Activity
C. Fragment
D. Intent
94. Trong Android, Intent là gì và dùng để làm gì?
A. Một đối tượng thông điệp dùng để yêu cầu hành động từ một thành phần ứng dụng khác, ví dụ như chuyển màn hình hoặc gửi dữ liệu.
B. Một đối tượng để lưu trữ dữ liệu cục bộ trên thiết bị.
C. Một cơ chế để đăng ký nhận thông báo hệ thống.
D. Một lớp để xử lý các tác vụ nền.
95. Trong phát triển ứng dụng di động, thuật ngữ ‘UI’ (User Interface) đề cập đến yếu tố nào?
A. Tất cả các yếu tố trực quan mà người dùng tương tác, bao gồm bố cục, nút bấm, biểu tượng, màu sắc và phông chữ.
B. Cấu trúc dữ liệu và cách ứng dụng lưu trữ thông tin.
C. Logic nghiệp vụ và các thuật toán được sử dụng trong ứng dụng.
D. Tốc độ phản hồi của ứng dụng và mức tiêu thụ pin.
96. Thành phần nào trong Android được sử dụng để hiển thị các mục trong một danh sách cuộn (scrolling list), ví dụ như danh sách tin nhắn hoặc danh sách sản phẩm?
A. RecyclerView
B. ConstraintLayout
C. LinearLayout
D. ScrollView
97. Framework nào sau đây KHÔNG phải là một lựa chọn cho phát triển ứng dụng ‘native’ Android?
A. Flutter
B. Kotlin
C. Java
D. Android SDK
98. Loại cơ sở dữ liệu nào thường được sử dụng để lưu trữ dữ liệu cục bộ trên thiết bị di động?
A. SQLite
B. MongoDB
C. PostgreSQL
D. Cassandra
99. Trong phát triển ứng dụng di động, sử dụng ‘background threads’ (luồng nền) giúp ích gì cho hiệu suất?
A. Thực hiện các tác vụ tốn thời gian (ví dụ: tải dữ liệu, xử lý ảnh) mà không làm gián đoạn luồng giao diện người dùng (UI thread), giữ cho ứng dụng luôn phản hồi.
B. Tăng tốc độ biên dịch mã nguồn.
C. Giảm dung lượng lưu trữ của ứng dụng.
D. Tự động kiểm tra lỗi chính tả trong mã.
100. UX (User Experience) trong phát triển ứng dụng di động tập trung vào khía cạnh nào?
A. Trải nghiệm tổng thể của người dùng khi sử dụng ứng dụng, bao gồm sự dễ dàng, hiệu quả và sự hài lòng.
B. Chỉ các khía cạnh trực quan và bố cục của giao diện.
C. Khả năng hoạt động của ứng dụng trên các thiết bị khác nhau.
D. Bảo mật dữ liệu người dùng và quyền riêng tư.
101. Framework nào của Google cho phép phát triển ứng dụng di động đa nền tảng (cross-platform) sử dụng ngôn ngữ Dart?
A. Flutter
B. React Native
C. Xamarin
D. Ionic
102. Khái niệm ‘cross-platform development’ trong phát triển ứng dụng di động đề cập đến phương pháp nào?
A. Phát triển ứng dụng bằng một bộ mã nguồn duy nhất, có thể chạy trên nhiều hệ điều hành khác nhau (iOS, Android).
B. Phát triển các ứng dụng riêng biệt cho từng nền tảng sử dụng ngôn ngữ gốc.
C. Phát triển ứng dụng web có thể truy cập qua trình duyệt trên thiết bị di động.
D. Sử dụng các framework JavaScript để xây dựng giao diện người dùng.
103. Khi phát triển ứng dụng di động, việc áp dụng nguyên tắc ‘least privilege’ (quyền hạn tối thiểu) có ý nghĩa gì đối với bảo mật?
A. Cấp cho ứng dụng hoặc thành phần của nó chỉ những quyền hạn cần thiết để thực hiện chức năng của mình, giảm thiểu rủi ro khi bị tấn công.
B. Yêu cầu người dùng đăng nhập bằng mật khẩu mạnh.
C. Mã hóa tất cả dữ liệu truyền tải.
D. Giới hạn số lần người dùng có thể thử đăng nhập.
104. Khi thiết kế ứng dụng di động, việc sử dụng các ‘design patterns’ (mẫu thiết kế) mang lại lợi ích gì?
A. Cung cấp các giải pháp đã được kiểm chứng cho các vấn đề thiết kế phổ biến, giúp mã nguồn dễ bảo trì, tái sử dụng và mở rộng.
B. Đảm bảo ứng dụng chỉ chạy trên một nền tảng duy nhất.
C. Tự động hóa quá trình kiểm thử ứng dụng.
D. Giảm thiểu việc sử dụng bộ nhớ của ứng dụng.
105. Thành phần nào trong Android cho phép ứng dụng phản hồi các sự kiện hệ thống hoặc phát sóng từ các ứng dụng khác?
A. BroadcastReceiver
B. Service
C. ContentProvider
D. Activity
106. Framework nào sau đây KHÔNG thuộc nhóm phát triển ứng dụng di động ‘cross-platform’ phổ biến?
A. Flutter
B. React Native
C. Xamarin
D. SwiftUI
107. Trong iOS, kiến trúc MVC (Model-View-Controller) phân chia trách nhiệm như thế nào?
A. Model: Dữ liệu và logic nghiệp vụ; View: Giao diện người dùng; Controller: Xử lý tương tác và kết nối Model với View.
B. Model: Giao diện người dùng; View: Dữ liệu và logic nghiệp vụ; Controller: Xử lý tương tác.
C. Model: Xử lý tương tác; View: Dữ liệu và logic nghiệp vụ; Controller: Giao diện người dùng.
D. Model: Kết nối mạng; View: Lưu trữ dữ liệu; Controller: Giao diện người dùng.
108. Platform nào sau đây KHÔNG phải là một nền tảng phát triển ứng dụng di động chính?
A. Tizen
B. iOS
C. Android
D. Windows Mobile
109. Trong phát triển ứng dụng di động, ‘CI/CD’ (Continuous Integration/Continuous Deployment) đề cập đến quy trình nào?
A. Quy trình tự động hóa việc tích hợp mã nguồn, kiểm thử và triển khai ứng dụng.
B. Quy trình bảo mật dữ liệu người dùng.
C. Quy trình thiết kế giao diện người dùng.
D. Quy trình quản lý phiên bản ứng dụng.
110. Ngôn ngữ lập trình nào là ngôn ngữ chính thức và được khuyến nghị cho phát triển ứng dụng Native trên Android?
A. Kotlin
B. Swift
C. Objective-C
D. Java
111. Khi phát triển ứng dụng di động, ‘localization’ (bản địa hóa) có ý nghĩa gì?
A. Điều chỉnh ứng dụng để phù hợp với ngôn ngữ, văn hóa và các quy ước của một khu vực địa lý cụ thể.
B. Tối ưu hóa hiệu suất ứng dụng cho các thiết bị có cấu hình thấp.
C. Tăng cường bảo mật dữ liệu người dùng.
D. Đảm bảo ứng dụng có thể truy cập ngoại tuyến.
112. Ưu điểm chính của việc phát triển ứng dụng ‘native’ so với các phương pháp khác là gì?
A. Khả năng tiếp cận phần cứng và hiệu suất vượt trội, trải nghiệm người dùng liền mạch.
B. Chi phí phát triển thấp hơn và thời gian triển khai nhanh hơn.
C. Khả năng chạy trên nhiều nền tảng với một bộ mã nguồn duy nhất.
D. Dễ dàng tích hợp với các dịch vụ web mà không cần API riêng.
113. Khi phát triển ứng dụng di động, việc sử dụng ‘version control system’ (hệ thống kiểm soát phiên bản) như Git mang lại lợi ích gì?
A. Quản lý lịch sử thay đổi của mã nguồn, cho phép quay lại các phiên bản trước, hợp tác hiệu quả và theo dõi lỗi.
B. Tự động biên dịch toàn bộ mã nguồn ứng dụng.
C. Mã hóa dữ liệu người dùng để bảo mật.
D. Kiểm tra hiệu suất ứng dụng trên các thiết bị khác nhau.
114. Thành phần nào trong kiến trúc MVP (Model-View-Presenter) chịu trách nhiệm xử lý logic nghiệp vụ và tương tác với Model?
A. Presenter
B. Model
C. View
D. Controller
115. Trong phát triển ứng dụng di động, ‘API Gateway’ đóng vai trò gì?
A. Là điểm truy cập duy nhất cho tất cả các yêu cầu từ ứng dụng di động đến các dịch vụ backend, giúp quản lý, bảo mật và định tuyến các yêu cầu đó.
B. Là cơ sở dữ liệu lưu trữ thông tin người dùng.
C. Là công cụ để thiết kế giao diện người dùng.
D. Là trình biên dịch mã nguồn.
116. Trong phát triển ứng dụng di động, khái niệm ‘native app’ ám chỉ loại ứng dụng nào?
A. Ứng dụng được phát triển bằng các ngôn ngữ và công cụ dành riêng cho từng nền tảng (ví dụ: Swift/Objective-C cho iOS, Kotlin/Java cho Android).
B. Ứng dụng được phát triển bằng các công nghệ web và chạy trên trình duyệt của thiết bị di động.
C. Ứng dụng được phát triển bằng một bộ mã nguồn duy nhất và biên dịch cho nhiều nền tảng khác nhau.
D. Ứng dụng được phát triển bằng cách sử dụng các API của hệ điều hành để truy cập trực tiếp phần cứng.
117. Push Notification (Thông báo đẩy) trong ứng dụng di động chủ yếu được sử dụng để làm gì?
A. Thông báo cho người dùng về các sự kiện mới, cập nhật hoặc tin nhắn mà không cần mở ứng dụng.
B. Thu thập dữ liệu người dùng để phân tích hành vi.
C. Tăng cường bảo mật cho ứng dụng bằng cách xác thực người dùng.
D. Cải thiện hiệu suất tải trang của ứng dụng.
118. Trong phát triển ứng dụng di động, ‘API Key’ thường được sử dụng cho mục đích gì?
A. Xác thực và ủy quyền cho ứng dụng khi truy cập vào các dịch vụ hoặc tài nguyên của bên thứ ba.
B. Mã hóa toàn bộ dữ liệu người dùng.
C. Tự động sửa lỗi trong mã nguồn.
D. Quản lý việc cập nhật phiên bản ứng dụng.
119. SDK (Software Development Kit) là gì trong ngữ cảnh phát triển ứng dụng di động?
A. Một bộ công cụ, thư viện, tài liệu và ví dụ mã nguồn giúp nhà phát triển xây dựng ứng dụng cho một nền tảng cụ thể (ví dụ: Android SDK, iOS SDK).
B. Một trình biên dịch (compiler) duy nhất cho phép tạo ứng dụng chạy trên mọi hệ điều hành.
C. Một công cụ tự động hóa hoàn toàn quy trình thiết kế và phát triển ứng dụng.
D. Một nền tảng đám mây để lưu trữ và quản lý dữ liệu ứng dụng.
120. Ngôn ngữ lập trình nào là ngôn ngữ chính thức và được khuyến nghị cho phát triển ứng dụng Native trên iOS?
A. Swift
B. Kotlin
C. Java
D. C#
121. Đâu là một phương pháp kiểm thử phổ biến cho ứng dụng di động?
A. Kiểm thử hồi quy (Regression Testing) để đảm bảo các thay đổi không làm ảnh hưởng đến chức năng hiện có.
B. Kiểm thử tải (Load Testing) để đo lường hiệu năng dưới tải nặng.
C. Kiểm thử đơn vị (Unit Testing) để kiểm tra các thành phần nhỏ nhất của mã.
D. Tất cả các phương án trên đều là các phương pháp kiểm thử phổ biến.
122. Trong Android, ‘Activity’ là gì?
A. Một thành phần nền tảng chịu trách nhiệm xử lý các tác vụ chạy ngầm.
B. Một màn hình duy nhất có giao diện người dùng mà người dùng có thể tương tác.
C. Một lớp trừu tượng để quản lý kết nối mạng.
D. Một dịch vụ cung cấp dữ liệu cho các ứng dụng khác.
123. Tại sao việc kiểm thử (testing) lại quan trọng trong quy trình phát triển ứng dụng di động?
A. Để đảm bảo ứng dụng chỉ chạy trên một loại thiết bị duy nhất.
B. Để phát hiện và sửa lỗi, đảm bảo chất lượng, tính ổn định và trải nghiệm người dùng tốt.
C. Để giảm thiểu số lượng tính năng có thể triển khai.
D. Để tăng cường bảo mật bằng cách loại bỏ hoàn toàn các API bên ngoài.
124. Khái niệm ‘MVP’ (Minimum Viable Product) trong phát triển ứng dụng có ý nghĩa gì?
A. Phiên bản ứng dụng với tất cả các tính năng đã hoàn thiện.
B. Phiên bản ứng dụng có các tính năng cốt lõi đủ để đáp ứng nhu cầu ban đầu của người dùng và thu thập phản hồi.
C. Phiên bản ứng dụng được tối ưu hóa hiệu năng cao nhất.
D. Phiên bản ứng dụng chỉ dành cho mục đích thử nghiệm nội bộ.
125. Trong phát triển ứng dụng, ‘CI/CD’ (Continuous Integration/Continuous Deployment) có vai trò gì?
A. Tăng cường bảo mật bằng cách mã hóa mọi dữ liệu người dùng.
B. Tự động hóa quá trình tích hợp mã nguồn, kiểm thử và triển khai ứng dụng, giúp phát hành nhanh và đáng tin cậy hơn.
C. Cải thiện trải nghiệm người dùng bằng cách thêm nhiều hiệu ứng đồ họa.
D. Quản lý việc phân phối ứng dụng trên các cửa hàng ứng dụng.
126. API (Application Programming Interface) trong phát triển ứng dụng di động thường được sử dụng để làm gì?
A. Tối ưu hóa dung lượng lưu trữ của ứng dụng trên thiết bị.
B. Cho phép ứng dụng giao tiếp và trao đổi dữ liệu với các dịch vụ hoặc hệ thống khác.
C. Tạo ra các hiệu ứng đồ họa phức tạp cho giao diện người dùng.
D. Quản lý việc cài đặt và cập nhật ứng dụng.
127. Khái niệm ‘Responsive Design’ trong phát triển ứng dụng di động có ý nghĩa gì?
A. Ứng dụng tự động điều chỉnh kích thước và bố cục để phù hợp với nhiều kích thước màn hình và hướng thiết bị khác nhau.
B. Ứng dụng chỉ có thể hiển thị tốt trên một kích thước màn hình cố định.
C. Ứng dụng được thiết kế chỉ để chạy trên các thiết bị có màn hình lớn.
D. Ứng dụng tự động thay đổi màu sắc dựa trên môi trường xung quanh.
128. Đâu là một ví dụ về ‘Dependency Injection’ (Tiêm Phụ Thuộc) trong phát triển ứng dụng di động?
A. Việc một lớp tự tạo ra các đối tượng mà nó cần.
B. Việc một lớp nhận các đối tượng phụ thuộc từ bên ngoài thay vì tự tạo ra chúng.
C. Việc sử dụng các biến toàn cục để chia sẻ dữ liệu.
D. Việc gọi trực tiếp các phương thức của lớp khác mà không qua một lớp trung gian.
129. Trong phát triển ứng dụng, ‘UX Design’ (Thiết kế Trải nghiệm Người dùng) tập trung vào khía cạnh nào?
A. Chỉ tập trung vào thẩm mỹ và màu sắc của giao diện.
B. Đảm bảo ứng dụng hoạt động nhanh chóng và hiệu quả.
C. Tập trung vào cách người dùng cảm nhận và tương tác với ứng dụng, làm cho nó dễ sử dụng, hiệu quả và thú vị.
D. Quản lý tài nguyên hệ thống để tối ưu hóa hiệu suất.
130. Khái niệm ‘State Management’ trong phát triển ứng dụng di động đề cập đến điều gì?
A. Quản lý kết nối mạng và dữ liệu tải về.
B. Quản lý vòng đời của ứng dụng và các tiến trình nền.
C. Quản lý dữ liệu thay đổi theo thời gian và cách giao diện người dùng phản ứng với những thay đổi đó.
D. Quản lý các quyền truy cập của ứng dụng trên thiết bị.
131. Cơ chế ‘Push Notification’ trong ứng dụng di động có chức năng chính là gì?
A. Lưu trữ dữ liệu người dùng trên thiết bị để truy cập ngoại tuyến.
B. Gửi thông báo từ máy chủ đến thiết bị của người dùng, ngay cả khi ứng dụng không hoạt động.
C. Cho phép người dùng tương tác trực tiếp với máy chủ thông qua giao diện người dùng.
D. Theo dõi vị trí địa lý của người dùng và hiển thị trên bản đồ.
132. Trong phát triển ứng dụng di động, ‘SDK’ (Software Development Kit) là gì?
A. Một công cụ để tối ưu hóa hiệu suất ứng dụng.
B. Một bộ công cụ, thư viện, tài liệu và ví dụ mã nguồn giúp các nhà phát triển xây dựng ứng dụng cho một nền tảng hoặc framework cụ thể.
C. Một dịch vụ lưu trữ dữ liệu đám mây.
D. Một công cụ để quản lý dự án.
133. Trong phát triển ứng dụng di động, ‘RESTful API’ là một kiểu kiến trúc phổ biến để làm gì?
A. Quản lý bộ nhớ của thiết bị.
B. Thiết kế các giao diện lập trình ứng dụng (API) cho phép giao tiếp giữa client (ứng dụng di động) và server, thường sử dụng các phương thức HTTP như GET, POST, PUT, DELETE.
C. Tạo ra các hiệu ứng chuyển cảnh mượt mà.
D. Xử lý các tác vụ chạy ngầm.
134. Khái niệm ‘State Preservation’ (Bảo toàn Trạng thái) trong ứng dụng di động quan trọng ở điểm nào?
A. Đảm bảo ứng dụng luôn chạy ở tốc độ tối đa.
B. Giúp ứng dụng giữ lại trạng thái hiện tại (ví dụ: dữ liệu đã nhập, vị trí cuộn) khi người dùng chuyển đổi giữa các ứng dụng hoặc khi ứng dụng bị tạm dừng và tiếp tục.
C. Tăng cường bảo mật bằng cách xóa mọi dữ liệu khi ứng dụng bị đóng.
D. Giảm thiểu việc sử dụng pin.
135. Trong phát triển ứng dụng di động, ‘Backend’ đề cập đến khía cạnh nào?
A. Giao diện người dùng mà người dùng nhìn thấy và tương tác.
B. Phần ứng dụng chạy trên máy chủ, xử lý logic nghiệp vụ, quản lý cơ sở dữ liệu và cung cấp dữ liệu cho ứng dụng di động (frontend).
C. Các thành phần giao diện người dùng như nút bấm, trường nhập liệu.
D. Hệ điều hành của thiết bị di động.
136. Trong phát triển ứng dụng di động, khái niệm ‘native app’ thường ám chỉ loại ứng dụng nào?
A. Ứng dụng được phát triển bằng các ngôn ngữ và công cụ dành riêng cho từng nền tảng (ví dụ: Swift/Objective-C cho iOS, Kotlin/Java cho Android).
B. Ứng dụng được phát triển bằng các công nghệ web như HTML, CSS, JavaScript và đóng gói để chạy trên thiết bị di động.
C. Ứng dụng được phát triển bằng các framework đa nền tảng như React Native hoặc Flutter, cho phép chia sẻ mã nguồn giữa các hệ điều hành.
D. Ứng dụng chỉ có thể truy cập thông qua trình duyệt web trên thiết bị di động mà không cần cài đặt.
137. Đâu là một ví dụ về ‘UI Component’ (Thành phần Giao diện Người dùng) phổ biến trong phát triển ứng dụng di động?
A. Một lớp xử lý logic nghiệp vụ.
B. Một nút bấm (Button) hoặc một trường nhập liệu (Text Field).
C. Một dịch vụ chạy ngầm để xử lý dữ liệu.
D. Một cơ sở dữ liệu cục bộ.
138. Đâu là một thách thức phổ biến khi phát triển ứng dụng di động cho nhiều nền tảng khác nhau?
A. Sự khác biệt về giao diện người dùng và trải nghiệm người dùng giữa các nền tảng, cũng như sự cần thiết phải tuân thủ các quy tắc riêng của từng hệ điều hành.
B. Thiếu các công cụ phát triển cho bất kỳ nền tảng nào.
C. Không có sự khác biệt về cách xử lý dữ liệu giữa các nền tảng.
D. Tất cả các ứng dụng đều có cùng một bộ API chung.
139. Khi phát triển ứng dụng cho cả iOS và Android, việc sử dụng ‘Shared Codebase’ (Mã nguồn Chia sẻ) có ý nghĩa gì?
A. Mỗi nền tảng sẽ có một codebase hoàn toàn riêng biệt.
B. Một phần lớn mã nguồn được viết một lần và có thể chạy trên cả hai nền tảng, giảm thiểu công sức và thời gian phát triển.
C. Ứng dụng sẽ chỉ hoạt động trên một nền tảng duy nhất.
D. Mã nguồn sẽ được biên dịch thành mã máy của từng nền tảng một cách thủ công.
140. Trong phát triển ứng dụng, ‘Unit Testing’ (Kiểm thử Đơn vị) tập trung vào việc kiểm tra gì?
A. Toàn bộ luồng hoạt động của ứng dụng từ đầu đến cuối.
B. Các thành phần mã nhỏ nhất và độc lập (ví dụ: một hàm, một phương thức, một lớp) để đảm bảo chúng hoạt động đúng.
C. Trải nghiệm người dùng trên các thiết bị khác nhau.
D. Tính bảo mật của toàn bộ ứng dụng.
141. Đâu là một cơ chế để quản lý dữ liệu cục bộ trên thiết bị di động một cách hiệu quả?
A. Sử dụng các biến tạm thời trong bộ nhớ chỉ tồn tại khi ứng dụng chạy.
B. Lưu trữ dữ liệu dưới dạng các tệp văn bản thô không có cấu trúc.
C. Sử dụng cơ sở dữ liệu cục bộ như SQLite hoặc các giải pháp lưu trữ dữ liệu được cung cấp bởi hệ điều hành (ví dụ: SharedPreferences trên Android, UserDefaults trên iOS).
D. Truy cập trực tiếp vào hệ thống tệp của thiết bị mà không qua API.
142. Trong phát triển ứng dụng, ‘Backend-as-a-Service’ (BaaS) là gì?
A. Một dịch vụ cung cấp các thành phần giao diện người dùng được xây dựng sẵn.
B. Một mô hình cung cấp các dịch vụ backend (như cơ sở dữ liệu, xác thực, lưu trữ) được quản lý bởi bên thứ ba, cho phép nhà phát triển tập trung vào frontend.
C. Một công cụ để tự động hóa quy trình kiểm thử ứng dụng.
D. Một dịch vụ chỉ cung cấp API cho các ứng dụng di động.
143. Đâu là một ví dụ về ‘Background Task’ (Tác vụ Nền) trong phát triển ứng dụng di động?
A. Người dùng gõ văn bản vào một trường nhập liệu.
B. Ứng dụng tự động tải xuống các bản cập nhật dữ liệu hoặc đồng bộ hóa thông tin khi ứng dụng đang chạy ở chế độ nền.
C. Người dùng nhấp vào một nút để chuyển trang.
D. Hiển thị một thông báo trên màn hình chính.
144. Đâu là một công cụ phổ biến để quản lý phiên bản mã nguồn trong phát triển ứng dụng di động?
A. Microsoft Word
B. Git
C. Adobe Photoshop
D. Microsoft Excel
145. Khái niệm ‘Permissions’ (Quyền truy cập) trong ứng dụng di động là gì?
A. Các tính năng mà ứng dụng cung cấp cho người dùng.
B. Sự cho phép mà người dùng cấp cho ứng dụng để truy cập vào các tài nguyên hoặc chức năng của thiết bị (ví dụ: vị trí, danh bạ, camera).
C. Các quy định về bản quyền của ứng dụng.
D. Các tùy chọn cấu hình trong ứng dụng.
146. Khi phát triển ứng dụng cho Android, ‘Gradle’ đóng vai trò gì?
A. Là trình biên dịch mã nguồn.
B. Là một công cụ quản lý build tự động, chịu trách nhiệm biên dịch mã, quản lý dependency và đóng gói ứng dụng.
C. Là một framework để tạo giao diện người dùng.
D. Là một công cụ để phân tích hiệu năng ứng dụng.
147. Trong phát triển ứng dụng, ‘Agile Methodology’ (Phương pháp luận Linh hoạt) thường nhấn mạnh điều gì?
A. Tuân thủ chặt chẽ một kế hoạch chi tiết từ đầu đến cuối.
B. Phản hồi nhanh chóng với sự thay đổi, làm việc theo các chu kỳ ngắn (sprints) và giao tiếp thường xuyên với khách hàng.
C. Tránh mọi sự thay đổi sau khi dự án đã bắt đầu.
D. Tập trung hoàn toàn vào việc viết tài liệu chi tiết trước khi bắt đầu lập trình.
148. Đâu là một mẫu thiết kế (design pattern) phổ biến trong phát triển ứng dụng di động để xử lý các tác vụ bất đồng bộ?
A. Singleton Pattern
B. Observer Pattern
C. Factory Pattern
D. Callback hoặc Coroutines (Kotlin).
149. Trong phát triển ứng dụng iOS, Storyboard hoặc SwiftUI Canvas được sử dụng để làm gì?
A. Quản lý kết nối mạng.
B. Trực quan hóa và xây dựng giao diện người dùng (UI) bằng cách kéo thả các thành phần.
C. Viết logic xử lý dữ liệu.
D. Tối ưu hóa hiệu năng ứng dụng.
150. Khi nói về ‘Accessibility’ (Khả năng Tiếp cận) trong phát triển ứng dụng di động, điều này nhằm mục đích gì?
A. Tăng cường bảo mật bằng cách giới hạn quyền truy cập.
B. Đảm bảo ứng dụng có thể được sử dụng bởi những người có các khả năng khác nhau, bao gồm cả người khuyết tật.
C. Tối ưu hóa hiệu suất ứng dụng trên các thiết bị cấu hình thấp.
D. Giảm thiểu kích thước tệp cài đặt của ứng dụng.
151. Trong phát triển ứng dụng di động, ‘UI Testing’ (Kiểm thử Giao diện Người dùng) tập trung vào việc kiểm tra gì?
A. Hiệu quả của thuật toán xử lý dữ liệu.
B. Khả năng hiển thị và tương tác của các yếu tố giao diện người dùng trên các thiết bị và kịch bản khác nhau.
C. Tốc độ kết nối mạng của ứng dụng.
D. Việc sử dụng bộ nhớ của ứng dụng.
152. Trong phát triển ứng dụng iOS, ‘Delegate Pattern’ là một mẫu thiết kế được sử dụng rộng rãi để làm gì?
A. Để quản lý bộ nhớ của ứng dụng.
B. Để cho phép một đối tượng (delegate) xử lý các sự kiện hoặc cung cấp dữ liệu cho một đối tượng khác (delegator).
C. Để thực thi các tác vụ bất đồng bộ.
D. Để định nghĩa các biến toàn cục cho ứng dụng.
153. Khi phát triển ứng dụng cho iOS, SDK nào là bắt buộc phải sử dụng để xây dựng giao diện người dùng?
A. Android SDK
B. Flutter SDK
C. UIKit hoặc SwiftUI
D. React Native CLI
154. Trong Android, ‘Service’ là gì?
A. Một màn hình duy nhất mà người dùng có thể tương tác.
B. Một thành phần ứng dụng chạy ngầm và không có giao diện người dùng, thường dùng cho các tác vụ kéo dài.
C. Một đối tượng để quản lý các thành phần UI.
D. Một cơ chế để xử lý các sự kiện từ người dùng.
155. Khái niệm ‘Deep Linking’ trong phát triển ứng dụng di động cho phép điều gì?
A. Ứng dụng tự động tải về khi người dùng nhấp vào một liên kết.
B. Người dùng có thể truy cập trực tiếp vào một màn hình hoặc nội dung cụ thể bên trong ứng dụng thông qua một liên kết web.
C. Ứng dụng có thể truy cập dữ liệu từ bất kỳ ứng dụng nào khác trên thiết bị.
D. Ứng dụng có thể gửi tin nhắn SMS tự động.
156. Đâu là một ví dụ về ‘Platform-Specific Feature’ (Tính năng Đặc thù Nền tảng) mà ứng dụng native có thể tận dụng tốt hơn?
A. Hiển thị một nút bấm đơn giản.
B. Truy cập cảm biến vân tay, NFC, hoặc các API phần cứng chuyên sâu của thiết bị.
C. Hiển thị văn bản trên màn hình.
D. Thực hiện các phép tính toán học cơ bản.
157. Trong kiến trúc MVVM (Model-View-ViewModel), vai trò của ViewModel là gì?
A. Trực tiếp xử lý các tương tác của người dùng và cập nhật giao diện.
B. Truy cập và quản lý dữ liệu, thường tương tác với API hoặc cơ sở dữ liệu.
C. Làm trung gian giữa Model và View, chứa logic hiển thị và trạng thái dữ liệu mà View có thể quan sát.
D. Chịu trách nhiệm về việc quản lý vòng đời của ứng dụng và các thành phần hệ thống.
158. Đâu là lợi ích chính của việc sử dụng các framework đa nền tảng (cross-platform frameworks) như React Native hoặc Flutter trong phát triển ứng dụng di động?
A. Yêu cầu kỹ năng chuyên sâu cho từng nền tảng riêng biệt, giúp nhà phát triển trở nên đa năng.
B. Cho phép chia sẻ một phần lớn mã nguồn giữa các nền tảng iOS và Android, tiết kiệm thời gian và chi phí phát triển.
C. Đảm bảo hiệu năng luôn vượt trội so với ứng dụng native do tối ưu hóa ở cấp độ framework.
D. Yêu cầu ít tài nguyên phần cứng hơn so với phát triển ứng dụng native.
159. Framework nào sau đây KHÔNG phải là framework đa nền tảng phổ biến cho phát triển ứng dụng di động?
A. React Native
B. Flutter
C. Xamarin
D. Android SDK
160. Trong phát triển ứng dụng di động, ‘ViewModel’ trong kiến trúc MVVM giúp giải quyết vấn đề gì chính?
A. Quản lý dữ liệu nhạy cảm và mã hóa.
B. Tách biệt logic hiển thị khỏi View, giúp View trở nên đơn giản hơn và dễ kiểm thử hơn, đồng thời xử lý các thay đổi trạng thái dữ liệu.
C. Tối ưu hóa việc sử dụng bộ nhớ của ứng dụng.
D. Quản lý kết nối mạng và các yêu cầu API.
161. Trong ngữ cảnh phát triển ứng dụng di động, ‘Push Notification’ (Thông báo đẩy) có vai trò chính là gì?
A. Cho phép người dùng gửi tin nhắn trực tiếp cho nhau trong ứng dụng.
B. Gửi thông tin cập nhật hoặc cảnh báo đến người dùng ngay cả khi ứng dụng không mở.
C. Tự động đồng bộ hóa dữ liệu giữa thiết bị và máy chủ.
D. Cải thiện hiệu suất mạng cho các tác vụ nền.
162. Khi phát triển ứng dụng iOS, ‘Auto Layout’ là gì và vai trò của nó?
A. Một công cụ để quản lý các kết nối mạng.
B. Một hệ thống dựa trên ràng buộc để xác định kích thước và vị trí của các đối tượng giao diện người dùng, đảm bảo chúng hiển thị đúng trên các kích thước màn hình khác nhau.
C. Một phương pháp để xử lý các thao tác bất đồng bộ.
D. Một cách để tạo các animation phức tạp cho giao diện.
163. Trong phát triển ứng dụng di động, khái niệm ‘ViewModelScope’ trong Android Jetpack liên quan đến vòng đời của gì?
A. Vòng đời của một Activity.
B. Vòng đời của một Coroutine.
C. Vòng đời của ViewModel.
D. Vòng đời của Fragment.
164. Trong phát triển ứng dụng di động, ‘Data Binding’ trên Android là gì và lợi ích chính của nó?
A. Là một phương pháp để mã hóa dữ liệu.
B. Là một tính năng cho phép liên kết dữ liệu của ứng dụng với các thành phần giao diện người dùng một cách khai báo, giảm thiểu mã boilerplate (mã viết lặp lại) để cập nhật UI.
C. Là cách để quản lý các tác vụ nền.
D. Là một công cụ để kiểm tra hiệu suất ứng dụng.
165. Trong phát triển ứng dụng di động, ‘Local Storage’ (Lưu trữ cục bộ) trên thiết bị di động thường được sử dụng để làm gì?
A. Để đồng bộ dữ liệu với máy chủ đám mây.
B. Để lưu trữ dữ liệu ứng dụng trực tiếp trên thiết bị người dùng, ví dụ như cài đặt, dữ liệu người dùng hoặc bộ nhớ cache.
C. Để thực hiện các phép tính phức tạp.
D. Để gửi thông báo đẩy đến người dùng.
166. Trong phát triển ứng dụng iOS, ‘Storyboard’ được sử dụng chủ yếu để làm gì?
A. Quản lý các phiên bản mã nguồn.
B. Thiết kế giao diện người dùng và xác định luồng điều hướng giữa các màn hình một cách trực quan.
C. Xử lý các tác vụ nền.
D. Quản lý các kết nối mạng.
167. Trong phát triển ứng dụng di động, ‘MVP’ (Model-View-Presenter) là một kiến trúc khác với MVVM. Lợi ích chính của MVP so với MVC là gì?
A. MVP đơn giản hóa việc quản lý trạng thái UI.
B. MVP tách biệt hoàn toàn View và Model, với Presenter đóng vai trò trung gian duy nhất, giúp tăng khả năng kiểm thử View.
C. MVP yêu cầu ít mã nguồn hơn so với MVVM.
D. MVP tự động xử lý các tác vụ nền.
168. Trong phát triển ứng dụng di động, ‘Dependency Injection’ (DI) là gì và lợi ích chính của nó?
A. Là quá trình tự động tạo ra các đối tượng phụ thuộc.
B. Là một kỹ thuật để cung cấp các phụ thuộc (dependencies) cho một lớp thay vì lớp đó tự tạo ra chúng, giúp tăng tính module hóa và dễ kiểm thử.
C. Là cách để theo dõi các lỗi trong quá trình biên dịch.
D. Là phương pháp quản lý bộ nhớ của ứng dụng.
169. Trong phát triển ứng dụng di động, ‘UI Thread’ (Luồng UI) là gì và tại sao việc giữ cho nó luôn phản hồi là quan trọng?
A. Là luồng duy nhất chịu trách nhiệm xử lý tất cả các tác vụ của ứng dụng.
B. Là luồng chịu trách nhiệm xử lý các tương tác của người dùng và cập nhật giao diện, việc chặn luồng này sẽ dẫn đến hiện tượng ‘ứng dụng bị treo’.
C. Là luồng chỉ xử lý các tác vụ nền phức tạp.
D. Là luồng chịu trách nhiệm quản lý kết nối mạng.
170. Khi phát triển ứng dụng Android, ‘Content Provider’ được sử dụng để làm gì?
A. Để hiển thị quảng cáo trong ứng dụng.
B. Để chia sẻ dữ liệu giữa các ứng dụng, cung cấp một giao diện chuẩn hóa để truy cập dữ liệu.
C. Để quản lý các kết nối mạng.
D. Để tạo các widget tùy chỉnh trên màn hình chính.
171. Khi nào nên sử dụng ‘WorkManager’ trên Android thay vì ‘Service’ để thực hiện các tác vụ nền?
A. Khi tác vụ cần chạy ngay lập tức và không có ràng buộc về điều kiện thực thi.
B. Khi tác vụ cần đảm bảo được thực thi ngay cả khi ứng dụng bị đóng hoặc thiết bị khởi động lại, và có thể có các ràng buộc về pin hoặc mạng.
C. Khi tác vụ chỉ cần chạy trong khi ứng dụng đang mở.
D. Khi tác vụ yêu cầu tương tác trực tiếp với người dùng.
172. Khái niệm ‘Cross-Platform Development’ (Phát triển đa nền tảng) trong phát triển ứng dụng di động có nghĩa là gì?
A. Phát triển ứng dụng chỉ dành riêng cho một hệ điều hành duy nhất (ví dụ: chỉ iOS hoặc chỉ Android).
B. Viết một mã nguồn duy nhất hoặc ít nhất là một phần lớn mã nguồn chung để chạy trên nhiều nền tảng di động khác nhau (ví dụ: iOS và Android).
C. Phát triển ứng dụng chỉ bằng cách sử dụng các dịch vụ đám mây.
D. Tạo các ứng dụng web có thể truy cập trên thiết bị di động.
173. Khi phát triển ứng dụng di động, ‘Webview’ (hoặc WebView) là gì và nó thường được sử dụng trong trường hợp nào?
A. Để thực hiện các tác vụ nền.
B. Để hiển thị nội dung web bên trong ứng dụng native, ví dụ như hiển thị các trang điều khoản dịch vụ hoặc bài viết tin tức.
C. Để quản lý bộ nhớ của ứng dụng.
D. Để tạo các hoạt động bất đồng bộ.
174. Trong phát triển ứng dụng di động, ‘Caching’ (Lưu trữ tạm) là gì và lợi ích chính của nó?
A. Là quá trình xóa bỏ dữ liệu không cần thiết khỏi thiết bị.
B. Là việc lưu trữ bản sao của dữ liệu thường xuyên truy cập để truy cập nhanh hơn và giảm tải cho nguồn dữ liệu gốc.
C. Là quá trình mã hóa dữ liệu nhạy cảm.
D. Là cách để gửi thông báo đến người dùng.
175. Khi nào thì nên sử dụng ‘Coroutine’ trong Kotlin (thường dùng cho phát triển Android) để xử lý các tác vụ bất đồng bộ?
A. Chỉ khi cần thực hiện các tác vụ đơn giản trên luồng chính.
B. Khi cần thực hiện các tác vụ dài, chặn luồng (blocking) hoặc phức tạp mà không làm đóng băng giao diện người dùng.
C. Để thay thế hoàn toàn cho việc sử dụng Threads.
D. Chỉ khi ứng dụng yêu cầu xử lý nhiều sự kiện cùng lúc.
176. Trong phát triển ứng dụng Android, ‘ConstraintLayout’ được xem là gì và nó mang lại lợi ích gì?
A. Một layout đơn giản chỉ hỗ trợ bố cục tuyến tính.
B. Một layout linh hoạt cho phép tạo các bố cục phức tạp bằng cách định nghĩa mối quan hệ giữa các view, giúp tối ưu hóa hiệu suất và giảm độ sâu của cây view.
C. Một layout chỉ dành cho việc hiển thị hình ảnh.
D. Một layout yêu cầu sử dụng Java thay vì Kotlin.
177. Khi phát triển ứng dụng di động đa nền tảng bằng React Native, phương pháp nào thường được khuyến nghị để quản lý trạng thái phức tạp trên toàn ứng dụng?
A. Sử dụng `useState` hook cho mọi trạng thái trong ứng dụng.
B. Sử dụng các thư viện quản lý trạng thái chuyên dụng như Redux hoặc MobX.
C. Chỉ sử dụng props để truyền dữ liệu giữa các component.
D. Lưu trữ mọi trạng thái trong AsyncStorage.
178. Khi phát triển ứng dụng iOS bằng Swift, ‘Closures’ (Hàm đóng) thường được sử dụng cho mục đích gì?
A. Để định nghĩa các biến toàn cục.
B. Để tạo các lớp trừu tượng.
C. Để truyền các khối mã có thể thực thi như đối số cho các hàm hoặc để lưu trữ chúng.
D. Để quản lý các kiểu dữ liệu phức tạp.
179. Trong phát triển ứng dụng di động, ‘ViewModel’ trên Android (một phần của Android Jetpack) có mục đích chính là gì?
A. Quản lý trực tiếp các tương tác của người dùng với giao diện.
B. Lưu trữ và quản lý dữ liệu liên quan đến giao diện người dùng, đồng thời tồn tại qua các thay đổi cấu hình (như xoay màn hình).
C. Thực hiện các tác vụ mạng và truy cập cơ sở dữ liệu.
D. Định nghĩa cấu trúc của layout XML.
180. Trong phát triển ứng dụng di động, ‘API’ (Application Programming Interface) là gì?
A. Một giao diện người dùng đồ họa cho người dùng cuối.
B. Một bộ quy tắc và định nghĩa cho phép các ứng dụng khác nhau giao tiếp với nhau.
C. Một phương pháp để lưu trữ dữ liệu trên đám mây.
D. Một công cụ để kiểm tra hiệu suất ứng dụng.
181. Trong phát triển ứng dụng di động, ‘Fragment’ trên Android có chức năng tương tự như gì trên iOS?
A. UIViewController
B. UIView
C. AppDelegate
D. UIActivity
182. Trong phát triển ứng dụng iOS, ‘Delegate Pattern’ (Mẫu Đại biểu) thường được sử dụng để làm gì?
A. Để tạo các đối tượng tùy chỉnh có thể được sử dụng lại trong nhiều dự án.
B. Để cho phép một đối tượng (delegate) xử lý các sự kiện hoặc cung cấp dữ liệu cho một đối tượng khác (delegator).
C. Để quản lý vòng đời của các đối tượng trong ứng dụng.
D. Để thực hiện các hoạt động bất đồng bộ và trả về kết quả sau.
183. Khi phát triển ứng dụng iOS, ‘Delegation’ (Ủy quyền) được sử dụng để giải quyết vấn đề gì trong các tình huống phổ biến?
A. Quản lý bộ nhớ của ứng dụng.
B. Cho phép một đối tượng thông báo cho đối tượng khác về một sự kiện hoặc cung cấp dữ liệu mà không cần biết chi tiết cụ thể về đối tượng nhận thông báo.
C. Tự động tạo các API mới.
D. Đồng bộ hóa dữ liệu trên nhiều thiết bị.
184. Khi phát triển ứng dụng iOS, ‘Core Data’ là gì và vai trò của nó?
A. Một framework để xử lý các tác vụ mạng.
B. Một framework để quản lý vòng đời của ứng dụng.
C. Một framework mạnh mẽ để lưu trữ và quản lý dữ liệu trên thiết bị, hoạt động như một Object-Relational Mapper (ORM).
D. Một công cụ để tạo các animation phức tạp.
185. Trong phát triển ứng dụng iOS, ‘UICollectionView’ khác với ‘UITableView’ ở điểm nào cơ bản nhất?
A. UITableView chỉ hiển thị dữ liệu dạng danh sách, còn UICollectionView linh hoạt hiển thị theo lưới hoặc danh sách.
B. UICollectionView yêu cầu nhiều bộ nhớ hơn và chỉ dùng cho các ứng dụng có hiệu năng cao.
C. UITableView được sử dụng cho các ứng dụng webview, còn UICollectionView cho ứng dụng native.
D. UICollectionView chỉ hỗ trợ hiển thị hình ảnh, còn UITableView hỗ trợ văn bản.
186. Khi phát triển ứng dụng Android, ‘Activity’ là gì và vai trò của nó?
A. Một thành phần để quản lý dữ liệu ứng dụng.
B. Một thành phần đại diện cho một màn hình duy nhất trong ứng dụng với giao diện người dùng.
C. Một dịch vụ chạy nền.
D. Một cách để gửi thông báo đến người dùng.
187. Khái niệm ‘State Hoisting’ trong UI Toolkit của Flutter đề cập đến việc gì?
A. Việc lưu trữ toàn bộ trạng thái của ứng dụng vào một file cấu hình duy nhất.
B. Đưa trạng thái của một widget con lên widget cha của nó để quản lý tập trung.
C. Tự động tạo các widget mới dựa trên trạng thái hiện tại.
D. Quản lý các animation phức tạp cho widget.
188. Khi phát triển ứng dụng Android, Intent là gì và nó được sử dụng để làm gì?
A. Một đối tượng để lưu trữ dữ liệu tạm thời trong một Activity.
B. Một cơ chế nhắn tin cho phép các component của ứng dụng (như Activity, Service, Broadcast Receiver) yêu cầu hành động từ các component khác.
C. Một cách để định nghĩa các giao diện người dùng tùy chỉnh.
D. Một lớp trừu tượng để quản lý các hoạt động bất đồng bộ.
189. Trong phát triển ứng dụng di động, khi nào việc sử dụng ‘Service’ trên Android là phù hợp nhất để thực hiện các tác vụ chạy nền?
A. Khi ứng dụng cần hiển thị thông báo liên tục cho người dùng.
B. Khi cần thực hiện các tác vụ kéo dài mà không cần giao diện người dùng trực tiếp, ví dụ như tải dữ liệu hoặc phát nhạc.
C. Khi cần xử lý các sự kiện tương tác trực tiếp với người dùng trên màn hình.
D. Chỉ khi ứng dụng đang ở trạng thái hoạt động (foreground).
190. Khi phát triển ứng dụng di động, khái niệm ‘Native App’ (Ứng dụng gốc) có nghĩa là gì?
A. Ứng dụng được phát triển bằng các công cụ web như HTML, CSS, JavaScript.
B. Ứng dụng được phát triển bằng ngôn ngữ lập trình và các công cụ dành riêng cho một nền tảng di động cụ thể (ví dụ: Swift/Objective-C cho iOS, Java/Kotlin cho Android).
C. Ứng dụng có thể chạy trên mọi thiết bị mà không cần biên dịch lại.
D. Ứng dụng chỉ chạy khi có kết nối internet.
191. Khi phát triển ứng dụng Android, ‘Broadcast Receiver’ được sử dụng để làm gì?
A. Để quản lý vòng đời của các Activity.
B. Để phản hồi các sự kiện hệ thống hoặc các thông báo từ các ứng dụng khác.
C. Để tạo giao diện người dùng tương tác.
D. Để lưu trữ dữ liệu người dùng lâu dài.
192. Theo quan điểm phổ biến trong ngành phát triển ứng dụng di động, đâu là lợi ích chính của việc sử dụng kiến trúc MVVM (Model-View-ViewModel) trên nền tảng Android khi so sánh với MVC (Model-View-Controller)?
A. Giảm thiểu đáng kể dung lượng ứng dụng và tăng tốc độ tải.
B. Tăng cường khả năng tái sử dụng mã nguồn và cải thiện khả năng kiểm thử tự động.
C. Yêu cầu ít bộ nhớ RAM hơn trong quá trình hoạt động, giúp tiết kiệm pin.
D. Đơn giản hóa hoàn toàn quy trình quản lý dữ liệu và giao tiếp mạng.
193. Khi phát triển ứng dụng di động, ‘Permissions’ (Quyền truy cập) là gì và tại sao chúng quan trọng?
A. Là các tính năng bổ sung mà người dùng có thể mua trong ứng dụng.
B. Là các yêu cầu từ ứng dụng để truy cập vào các tài nguyên hoặc chức năng của thiết bị (ví dụ: camera, vị trí), đảm bảo quyền riêng tư và bảo mật của người dùng.
C. Là các quy định về giá cả ứng dụng.
D. Là các quy tắc về cách ứng dụng tương tác với máy chủ.
194. Khi phát triển ứng dụng Android, ‘Handler’ và ‘Looper’ được sử dụng để làm gì?
A. Để quản lý các kết nối mạng.
B. Để xử lý các thông báo và tác vụ trên các luồng khác nhau, đặc biệt là để gửi thông báo từ một luồng nền về luồng UI.
C. Để tạo các giao diện người dùng tùy chỉnh.
D. Để lưu trữ dữ liệu người dùng.
195. Khái niệm ‘State Management’ (Quản lý trạng thái) trong phát triển ứng dụng di động hiện đại, đặc biệt với các framework như React Native hoặc Flutter, đề cập đến điều gì?
A. Quản lý việc lưu trữ dữ liệu người dùng trên thiết bị cục bộ.
B. Quy trình theo dõi và cập nhật dữ liệu thay đổi trong ứng dụng ảnh hưởng đến giao diện người dùng.
C. Quản lý các kết nối mạng và xử lý lỗi khi giao tiếp với máy chủ.
D. Tối ưu hóa hiệu suất hiển thị của các component giao diện.
196. Khái niệm ‘Jetpack Compose’ trong phát triển ứng dụng Android đề cập đến điều gì?
A. Một framework mới để quản lý các tác vụ nền.
B. Một bộ công cụ UI hiện đại của Google để xây dựng giao diện người dùng Android native bằng Kotlin, sử dụng một mô hình khai báo.
C. Một thư viện để xử lý các yêu cầu mạng.
D. Một công cụ để phân tích hiệu suất ứng dụng.
197. Khái niệm ‘Deep Linking’ trong phát triển ứng dụng di động cho phép điều gì?
A. Tự động tải xuống các tài nguyên bổ sung cho ứng dụng.
B. Cho phép người dùng điều hướng trực tiếp đến một nội dung hoặc màn hình cụ thể bên trong ứng dụng từ một liên kết bên ngoài.
C. Tăng cường bảo mật cho các giao dịch thanh toán trong ứng dụng.
D. Quản lý bộ nhớ cache của ứng dụng để cải thiện hiệu suất.
198. Trong phát triển ứng dụng di động, ‘UI Kit’ (iOS) và ‘Android UI Toolkit’ (Android) có mục đích chung là gì?
A. Quản lý các tác vụ nền.
B. Cung cấp các thành phần và công cụ để xây dựng giao diện người dùng của ứng dụng.
C. Xử lý các yêu cầu mạng.
D. Quản lý bộ nhớ của ứng dụng.
199. Khi phát triển ứng dụng di động, ‘Progress Bar’ (Thanh tiến trình) thường được sử dụng để làm gì?
A. Để hiển thị thông báo lỗi cho người dùng.
B. Để cho người dùng biết rằng một tác vụ đang được xử lý và ước tính thời gian hoàn thành hoặc trạng thái hiện tại.
C. Để cho phép người dùng nhập dữ liệu.
D. Để chuyển hướng người dùng đến một màn hình khác.
200. Trong phát triển ứng dụng di động, khái niệm ‘Background Processing’ đề cập đến hoạt động nào?
A. Các tác vụ chỉ chạy khi ứng dụng đang ở màn hình chính.
B. Các tác vụ được thực thi khi ứng dụng không hoạt động ở foreground, ví dụ như đồng bộ dữ liệu hoặc cập nhật.
C. Các thao tác người dùng trực tiếp trên giao diện.
D. Việc tải các tài nguyên đa phương tiện.