PRM392Chưa đoKỳ 7Chuyên ngành Cập nhật 24/07/2026

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

Ôn luyện PRM392 – Lập trình di động (Mobile Programming) với ngân hàng câu hỏi trắc nghiệm Android có giải thích chi tiết, luyện thi cuối kỳ hiệu quả. Nội dung bao quát Activity, Fragment, RecyclerView, Intent, Service, BroadcastReceiver, lưu trữ SharedPreferences/SQLite và gọi API/Retrofit. Môn 3 tín chỉ tại FPT University, tiên quyết PRO192, lập trình bằng Java trên Android Studio.

271Câu hỏi
9Chủ đề

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

44/271 câuCòn 227
AShared Preferences
BCursor
CSQlite database
DNot possible
Lời giải
Để lưu trữ dữ liệu có cấu trúc nặng trong Android, chúng ta cần sử dụng cơ sở dữ liệu. Có nhiều lựa chọn khác nhau, nhưng SQLite là lựa chọn phổ biến nhất. SQLite là một cơ sở dữ liệu nhẹ, được tích hợp sẵn trong Android, cho phép lưu trữ và truy xuất dữ liệu một cách hiệu quả. Nó hỗ trợ các tính năng như tạo bảng, thêm, sửa, xóa dữ liệu, v.v. Ngoài ra, SQLite cũng hỗ trợ các loại dữ liệu như số nguyên, chuỗi, ngày giờ, v.v. Vì vậy, SQLite là lựa chọn phù hợp để lưu trữ dữ liệu có cấu trúc nặng trong Android.
Mở trang câu hỏi này →
AThe onStart() hook method is called back and the activity becomes visible
BThe onResume() hook method is called back to return UI focus for this screen
CThe UI focus is unchanged and no lifecycle hook methods are called
DA new activity is started and its onCreate() hook method is called
Lời giải
Khi người dùng nhập văn bản qua bàn phím ảo Android, không có sự thay đổi nào về tập trung UI và không gọi bất kỳ phương thức hook lifecycle nào. Điều này là vì việc nhập văn bản không tạo ra sự kiện mới nào, mà chỉ là một sự kiện tương tác với màn hình hiện tại. Do đó, tập trung UI vẫn giữ nguyên và không có sự thay đổi nào về trạng thái hoạt động của ứng dụng. Điều này có thể được minh họa qua các phương thức hook lifecycle như onStart(), onResume()... mà không được gọi khi người dùng nhập văn bản.
Mở trang câu hỏi này →
AShared Preferences
BContent provider
CInternal Storage
DSQLite Databases
Lời giải
Để chia sẻ dữ liệu giữa tất cả các ứng dụng, chúng ta nên sử dụng Content provider. Content provider là một lớp trừu tượng giúp quản lý dữ liệu và cung cấp truy cập cho các ứng dụng khác. Nó cho phép các ứng dụng khác nhau truy cập và sử dụng dữ liệu mà không cần phải lưu trữ dữ liệu đó trong mỗi ứng dụng riêng biệt. Điều này giúp giảm thiểu việc lặp lại mã và tăng cường tính bảo mật của dữ liệu. Ngoài ra, Content provider cũng cung cấp các tính năng như quản lý quyền truy cập và bảo vệ dữ liệu khỏi các ứng dụng không được phép truy cập.
Mở trang câu hỏi này →
Đề bài
Log.i("MainActivity", "MainActivity layout is complete");

You see the statement "MainActivity layout is complete" in the Logcat panel. Which of the following log level menu is set?

AVerbose
BDebug
CInfo
DWarn
EError
Lời giải
Khi bạn thấy thông báo 'MainActivity layout is complete' trong panel Logcat, điều đó có nghĩa là mức độ thông báo (log level) được đặt thành 'Info'. Mức độ thông báo 'Info' thường được sử dụng để thông báo về các sự kiện quan trọng nhưng không nghiêm trọng như các lỗi. Để hiểu rõ hơn về các mức độ thông báo, bạn có thể tham khảo các mức độ sau: - Verbose: Thông báo chi tiết về các hoạt động của ứng dụng. - Debug: Thông báo về các hoạt động của ứng dụng trong quá trình debug. - Info: Thông báo về các sự kiện quan trọng nhưng không nghiêm trọng. - Warn: Thông báo về các cảnh báo hoặc sự kiện không mong muốn. - Error: Thông báo về các lỗi nghiêm trọng.
Mở trang câu hỏi này →
Astack.xml
Bstrings.xml
Ctext.xml
Dstring.java
Lời giải
Trong lập trình Android, file chứa tất cả văn bản mà ứng dụng sử dụng được gọi là "strings.xml". Đây là một file XML quan trọng trong dự án Android, nơi chứa các chuỗi văn bản được sử dụng trong ứng dụng. Các chuỗi văn bản này có thể là các tiêu đề, thông báo, hoặc bất kỳ văn bản nào khác mà ứng dụng cần sử dụng. File strings.xml giúp phân tách các văn bản khỏi mã nguồn của ứng dụng, làm cho việc quản lý và cập nhật văn bản trở nên dễ dàng hơn. Ngoài ra, file này cũng giúp đảm bảo rằng các văn bản được sử dụng trong ứng dụng luôn chính xác và không bị lỗi.
Mở trang câu hỏi này →
AGridLayoutManager
BRecyclingManager
CLinearLayoutManager
DCircularLayoutManager
Lời giải
RecyclerView trong Android là một công cụ mạnh mẽ để hiển thị danh sách dữ liệu. Để sắp xếp và bố trí các item trong RecyclerView, chúng ta cần sử dụng các LayoutManager. Dưới đây là một số LayoutManager phổ biến trong Android.
Mở trang câu hỏi này →
AAppend the query to the end of the request URL.
BAdd a parameter for the query to the function that makes the request and annotate the parameter with @Query.
CUse the Query class to build a request.
DUse the addQuery() method in the Retrofit builder.
Lời giải

Để thêm một tùy chọn truy vấn vào một cuộc gọi REST web-service bằng Retrofit, bạn cần sử dụng annotation @Query. Annotation này cho phép bạn thêm một hoặc nhiều tham số vào URL của cuộc gọi. Bạn cần thêm tham số vào hàm tạo request và đánh dấu tham số đó với @Query. Ví dụ, nếu bạn muốn thêm tham số 'page' và 'limit' vào URL, bạn có thể sử dụng code như sau: @GET("users")

Lời giải
Call<List<User>> getUsers(@Query("page") int page, @Query("limit") int limit);

Trong ví dụ trên, tham số 'page' và 'limit' sẽ được thêm vào URL như sau: https://example.com/users?page=1&limit=10. Ngoài ra, bạn cũng có thể thêm tham số mặc định bằng cách sử dụng tham số thứ hai trong annotation @Query. Ví dụ: @GET("users")

Lời giải
Call<List<User>> getUsers(@Query("page") int page, @Query("limit") int limit = 10);

Trong ví dụ trên, tham số 'limit' sẽ có giá trị mặc định là 10 nếu không được cung cấp.

Mở trang câu hỏi này →
32Which kernel is Android based on?4 lựa chọn
ALinux kernel
BWindows kernel
CMAC kernel
DHybrid Kernel
Lời giải
Android được xây dựng trên nền tảng của hệ điều hành Linux. Kernel là phần mềm cơ bản của hệ điều hành, chịu trách nhiệm quản lý tài nguyên và cung cấp các dịch vụ cơ bản cho các ứng dụng chạy trên hệ điều hành. Linux kernel là một trong những kernel phổ biến nhất và được sử dụng rộng rãi trong nhiều hệ điều hành khác nhau. Khi Android được phát triển, nó đã chọn Linux kernel làm nền tảng, vì vậy Android cũng dựa trên Linux kernel. Điều này cho phép Android tận dụng được các tính năng và lợi thế của Linux kernel, đồng thời cũng giúp Android có thể tương thích với nhiều thiết bị và hệ thống khác nhau.
Mở trang câu hỏi này →
AstartActivityForResult
BstartActivity
CstartActivities
DstartActivityResult
Lời giải
Để mở màn hình screenB từ màn hình screenA và nhận dữ liệu từ screenB, chúng ta cần sử dụng phương thức startActivityForResult. Phương thức này cho phép màn hình screenA mở màn hình screenB và nhận lại dữ liệu từ màn hình screenB khi màn hình screenB đóng. Điều này rất hữu ích khi chúng ta cần nhận dữ liệu từ màn hình khác và xử lý dữ liệu đó trong màn hình hiện tại. Ví dụ, khi chúng ta muốn màn hình screenA nhận dữ liệu từ màn hình screenB sau khi người dùng nhập thông tin vào màn hình screenB.
Mở trang câu hỏi này →
Aandroid.permission.ACCESS_FINE_LOCATION
Bandroid.permission.ACCESS_COARSE_LOCATION
Candroid.permission.ACCESS_LOCATION
Dandroid.permission. INTERNET
Lời giải
Để theo dõi vị trí chính xác của điện thoại, ứng dụng Android cần sử dụng quyền truy cập vị trí chính xác. Quyền này cho phép ứng dụng truy cập vào vị trí hiện tại của thiết bị, bao gồm cả thông tin về độ chính xác cao. Điều này thường được sử dụng trong các ứng dụng như bản đồ, định vị, và các ứng dụng cần biết vị trí chính xác của người dùng. Quyền truy cập vị trí chính xác được biểu thị bởi android.permission.ACCESS_FINE_LOCATION.
Mở trang câu hỏi này →
ACreates and manages an Android SQLite database for you.
BEliminates a lot of boilerplate code.
CHelps you manage multiple applications.
DUsing a DAO, provides a mechanism for mapping Java methods to database queries.
Lời giải
Câu hỏi này yêu cầu bạn chọn các lợi ích của việc sử dụng Room database. Room database là một thư viện của Android giúp tạo và quản lý cơ sở dữ liệu SQLite một cách dễ dàng. Các lợi ích của Room database bao gồm: Tạo và quản lý cơ sở dữ liệu SQLite cho bạn. Giảm thiểu mã nguồn lặp lại (boilerplate code). Sử dụng DAO (Data Access Object) để ánh xạ các phương thức Java sang các truy vấn cơ sở dữ liệu. Điều này giúp bạn có thể tập trung vào việc phát triển ứng dụng của mình mà không cần phải lo lắng về việc tạo và quản lý cơ sở dữ liệu.
Mở trang câu hỏi này →
AYou use notification channels to display notifications to the user in the device status bar.
BYou use notification channels to group multiple notifications so that the user can control the notifications' behavior.
CNotification channels are available in older devices, those running Android 7.0 Nougat (API 24) and lower.
DNotification channels are not yet available in the Android Support Library package.
Lời giải
Các kênh thông báo được sử dụng để hiển thị thông báo cho người dùng trên thanh trạng thái thiết bị. Ngoài ra, các kênh thông báo còn được sử dụng để nhóm nhiều thông báo lại với nhau, giúp người dùng có thể kiểm soát hành vi của các thông báo. Điều này cho phép người dùng có thể tùy chỉnh cách hiển thị và xử lý thông báo của ứng dụng.
Mở trang câu hỏi này →
AA thread is the smallest unit of execution for sequences of programmed instructions
BA Java thread must be given code to run when it is started
CStarting a thread takes a trivial amount of time and system resources
DStarting a Java thread is the only way to write a concurrent Android app
Lời giải
Các câu hỏi sau đây là đúng về Java threads: A. Một luồng (thread) là đơn vị thực thi nhỏ nhất cho một chuỗi các lệnh lập trình. Điều này đúng vì một luồng có thể thực thi một phần của chương trình độc lập với các luồng khác. B. Một luồng Java phải được cung cấp mã để chạy khi nó được bắt đầu. Điều này đúng vì mỗi luồng cần có một phần mã để thực thi khi nó được tạo ra. C. Bắt đầu một luồng mất một lượng thời gian và tài nguyên hệ thống rất nhỏ. Điều này không đúng vì bắt đầu một luồng có thể mất một lượng thời gian và tài nguyên hệ thống đáng kể, tùy thuộc vào loại luồng và hệ thống. D. Bắt đầu một luồng Java là cách duy nhất để viết một ứng dụng Android đồng thời. Điều này không đúng vì có nhiều cách để viết một ứng dụng Android đồng thời, chẳng hạn như sử dụng các thư viện đồng thời như Executor hoặc Reactor.
Mở trang câu hỏi này →
Aremove()
Bdelete()
Cclear()
Ddestroy()
Lời giải
Để xóa tất cả dữ liệu trong SharedPreference, chúng ta cần sử dụng phương thức phù hợp. Trong các lựa chọn đã cho, phương thức "clear()" là lựa chọn đúng. Phương thức này được sử dụng để xóa tất cả các giá trị đã lưu trữ trong SharedPreference. Điều này có nghĩa là tất cả các khóa và giá trị sẽ bị xóa khỏi bộ nhớ cache. Phương thức "remove()" chỉ xóa một khóa cụ thể, trong khi "delete()" không phải là phương thức mặc định trong SharedPreference. Phương thức "destroy()" cũng không phải là phương thức chính thức trong SharedPreference. Vì vậy, để xóa tất cả dữ liệu trong SharedPreference, chúng ta nên sử dụng phương thức "clear()".
Mở trang câu hỏi này →
AThe google API includes Google Maps and other Google-specific libraries. The Android one only includes core android libraries.
BThe google API one only includes core android libraries. The Android includes Google Maps and other Google-specific libraries.
CThe android API includes Google Maps and core android libraries. The google API includes Google libraries
DThe android API and Google API is same
Lời giải
Android API và Google API là hai khái niệm khác nhau trong lập trình di động. Android API là bộ công cụ lập trình được phát triển bởi Google để xây dựng các ứng dụng di động trên nền tảng Android. Trong khi đó, Google API là một bộ công cụ lập trình được phát triển bởi Google để truy cập vào các dịch vụ và dữ liệu của Google, chẳng hạn như Google Maps, Google Drive, v.v. Android API chỉ bao gồm các thư viện cơ bản của Android, trong khi Google API bao gồm cả Google Maps và các thư viện khác của Google. Điều này có nghĩa là khi bạn sử dụng Android API, bạn chỉ có thể truy cập vào các chức năng và dịch vụ cơ bản của Android, trong khi khi sử dụng Google API, bạn có thể truy cập vào các dịch vụ và dữ liệu của Google. Ví dụ, nếu bạn muốn sử dụng Google Maps trong ứng dụng của mình, bạn cần sử dụng Google API, vì Android API không bao gồm Google Maps. Tương tự, nếu bạn muốn sử dụng Google Drive để lưu trữ dữ liệu của ứng dụng, bạn cần sử dụng Google API, vì Android API không bao gồm Google Drive.
Mở trang câu hỏi này →
AThe name of the component to be started
BThe type of operation to be performed, such as "ACTION_VIEW," "ACTION_SEND", "ACTION_DIAL".
CThe layout of the user interface
DThe permissions required to use the Intent.
Lời giải
Trong Android, hành động (action) của một Intent đại diện cho loại hoạt động nào đó mà ứng dụng muốn thực hiện. Ví dụ, ACTION_VIEW, ACTION_SEND, ACTION_DIAL, v.v. Hành động này giúp hệ thống Android xác định ứng dụng nào phù hợp để thực hiện yêu cầu của Intent. Nó giống như một lệnh hoặc một yêu cầu được gửi đến hệ thống Android, và hệ thống sẽ tìm kiếm ứng dụng phù hợp để thực hiện yêu cầu đó. Hành động có thể được sử dụng để thực hiện các hoạt động như xem, gửi, gọi điện, v.v. Nó là một phần quan trọng của Intent và giúp hệ thống Android hiểu được yêu cầu của ứng dụng.
Mở trang câu hỏi này →
AThe bulk of these apps are written in C/C++
BThe bulk of these apps are written in Java
CIt's possible to write portions of the apps in C/C++
DThese apps cannot be written in C/C++
Lời giải
Các ứng dụng Android được viết bằng nhiều ngôn ngữ lập trình khác nhau. Tuy nhiên, phần lớn ứng dụng Android được viết bằng ngôn ngữ Java. Điều này là do Android cung cấp một môi trường phát triển tích hợp (IDE) mạnh mẽ và các công cụ hỗ trợ phát triển ứng dụng (SDK) được xây dựng trên nền tảng Java. Ngoài ra, các nhà phát triển cũng có thể viết phần nào của ứng dụng bằng C/C++, nhưng phần lớn ứng dụng vẫn được viết bằng Java. Vì vậy, câu trả lời đúng là "The bulk of these apps are written in Java" và "It's possible to write portions of the apps in C/C++".
Mở trang câu hỏi này →
ARoom
BViewModel
CData
DNavigation
Lời giải
Các thư viện Jetpack có thể được sử dụng trong lớp dữ liệu là những thư viện giúp chúng ta quản lý dữ liệu một cách hiệu quả. Trong số các lựa chọn trên, Room là một thư viện quan trọng trong lớp dữ liệu. Room giúp chúng ta tạo ra cơ sở dữ liệu địa phương trên thiết bị di động và thực hiện các truy vấn cơ sở dữ liệu một cách hiệu quả. Ngoài ra, Room cũng hỗ trợ các tính năng như lưu trữ dữ liệu, truy vấn dữ liệu và cập nhật dữ liệu một cách tự động. Vì vậy, Room là một lựa chọn tốt cho lớp dữ liệu.
Mở trang câu hỏi này →
AIt will react on broadcast announcements.
BIt will do background functionalities as services.
CIt will pass the data between activities
DNone of the others
Lời giải
Broadcast receiver trong Android là một thành phần quan trọng giúp ứng dụng phản ứng với các thông báo (broadcast) được gửi ra. Khi một ứng dụng muốn gửi ra thông báo, nó sẽ sử dụng một lớp Broadcast để gửi thông tin đến các ứng dụng khác. Các ứng dụng nhận được thông báo này có thể sử dụng Broadcast Receiver để xử lý thông tin và phản ứng lại. Broadcast Receiver có thể được sử dụng để thực hiện các tác vụ như nhận thông tin từ các ứng dụng khác, cập nhật dữ liệu, hoặc thực hiện các hành động khi ứng dụng đang chạy ở nền tảng.
Mở trang câu hỏi này →
44What is mean by ANR?4 lựa chọn
AApplication not Recognized
BAndroid not recognized
CApplication Not Responding
DNone of these others
Lời giải
ANR là viết tắt của từ Application Not Responding, có nghĩa là ứng dụng không phản hồi. Khi một ứng dụng không phản hồi, điều đó có nghĩa là ứng dụng đã bị mắc kẹt trong một tình huống và không thể tiếp tục thực hiện các tác vụ. Điều này có thể xảy ra do nhiều nguyên nhân khác nhau, chẳng hạn như ứng dụng bị lỗi, hệ thống bị quá tải hoặc ứng dụng đã bị đóng băng. Khi một ứng dụng không phản hồi, người dùng sẽ thấy một thông báo cảnh báo và có thể buộc phải đóng ứng dụng. ANR là một vấn đề nghiêm trọng và có thể gây ra sự gián đoạn cho người dùng.
Mở trang câu hỏi này →