wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Trích xuất câu hỏi từ phiếu bài tập (ảnh chụp màn hình)

Total questions: 40

Worksheet time: 22mins

Name
Class
Date
1.

Giả sử có 2 activity đã được tạo trong project là MainActivity và SecondActivity. Hãy chọn phần còn thiếu để hoàn thành khai báo Intent mở SecondActivity từ MainActivity trong Kotlin: val intent = Intent(this, (a)   ). (Chú ý phân biệt chữ hoa chữ thường)

2.

Chọn hằng số phù hợp để mở giao diện gọi điện nhưng chưa thực hiện cuộc gọi. Điền vào vị trí X trong Intent.X

(a)  

3.

Thành phần nào là đối tượng được tự động tạo bởi Data Binding?

a)

ViewModel

b)

LiveData

c)

Binding Class

d)

LayoutInflater

4.

Phương thức nào được sử dụng để kết thúc một activity đang chạy?

a)

dispose()

b)

finish()

c)

finishActivity()

d)

destroy()

5.

Loại menu nào được mở khi người dùng nhấn và giữ đối tượng trong một khoảng thời gian?

a)

Context Menu

b)

Option Menu

c)

Drawer Menu

d)

Popup Menu

6.

LiveData trong Android được sử dụng để làm gì?

a)

Lưu trữ dữ liệu lâu dài

b)

Quan sát và phản ứng với các thay đổi của dữ liệu một cách tự động

c)

Thay thế toàn bộ ViewModel

d)

Hiển thị thông báo lỗi

7.

Để hiển thị ảnh tạm thời khi Glide tải ảnh từ Internet, phương thức nào được sử dụng?

a)

Sử dụng RequestOptions() và gọi phương thức placeholder() với ảnh nằm trong thư mục resource drawable

b)

Gắn thuộc tính Glide.placeholder cho id của ảnh nằm trong thư mục resource drawable

c)

Sử dụng RequestOptions() và gọi phương thức loadingImage() với ảnh nằm trong thư mục resource drawable

d)

Sử dụng phương thức into() với id ảnh nằm trong thư mục resource drawable

8.

Phương thức nào không bắt buộc phải override khi khai báo lớp adapter kế thừa từ lớp RecyclerView.Adapter?

a)

onBindViewHolder

b)

getItemCount

c)

onCreateViewHolder

d)

getItemViewType

9.

Đối tượng nào được sử dụng để tạo giao diện có thể tái sử dụng trong các phần khác nhau của activity?

a)

Intent

b)

Service

c)

BroadcastReceiver

d)

Fragment

10.

Để chạy một đoạn chương trình ở luồng background trong activity, lệnh nào sau đây được sử dụng?

a)

lifecycleScope.launch(Dispatchers.Main) { /* Đoạn lệnh cần thực hiện */ }

b)

lifecycleScope.launch(Dispatchers.IO) { /* Đoạn lệnh cần thực hiện */ }

c)

viewModelScope.launch(Dispatchers.IO) { /* Đoạn lệnh cần thực hiện */ }

d)

viewModelScope.launch(Dispatchers.Main) { /* Đoạn lệnh cần thực hiện */ }

11.

Phương thức nào được sử dụng để mở activity mới từ activity hiện tại?

a)

beginActivity

b)

startActivity

c)

newActivity

d)

openActivity

12.

Intent ngầm định (Implicit intent) được sử dụng với mục đích gì?

a)

Để mở một service của ứng dụng hiện tại

b)

Để mở một activity của ứng dụng khác

c)

Để đóng activity của ứng dụng khác

d)

Để mở một activity của ứng dụng hiện tại

13.

Giả sử đối tượng database trong thư viện Room được khởi tạo như sau: Room.databaseBuilder(context.applicationContext, StudentDatabase::class.java, "student_db").fallbackToDestructiveMigration().build() Khi chạy ứng dụng trên máy, các file student_db được lưu vào vị trí nào trong thư mục dành riêng của ứng dụng?

a)

databases

b)

cache

c)

shared_prefs

d)

files

e)

Không file nào được tạo ra

14.

Liệt kê các phương thức callback trong vòng đời của activity?

a)

onCreate(), onStart(), onActivityStarted(), onResume(), onPause(), onStop(), onActivityDestroy(), onDestroy()

b)

onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy()

c)

onCreate(), onInit(), onStart(), onPause(), onStop(), onDestroy(), onResume()

d)

onCreate(), onStart(), onPause(), onResume(), onFinish(), onStop(), onDestroy()

15.

Lớp nào được sử dụng để theo dõi sự thay đổi trong vòng đời của một activity?

a)

LiveData

b)

LifecycleObserver

c)

ViewModel

d)

DataBinding

16.

Phát biểu nào sau đây không đúng về intent?

a)

Các intent xác định yêu cầu xác định lớp activity cần mở

b)

Có intent ngầm định và intent xác định cho phép ứng dụng mở activity khác

c)

Các intent được thực hiện bằng cách sử dụng phương thức startActivity()

d)

Khi thực hiện một intent ngầm định, hệ thống luôn mở hộp thoại hỏi người dùng lựa chọn activity cần thực hiện

17.

Điều gì xảy ra nếu Timeout() vượt quá thời gian giới hạn?

a)

Gửi cảnh báo nhưng không dừng coroutine

b)

Coroutine tiếp tục chạy

c)

Gây ra ngoại lệ TimeoutCancellationException

d)

Dừng hoàn toàn ứng dụng

18.

Trong lập trình với Coroutine, hàm launch() trả về loại đối tượng nào?

a)

Thread

b)

CoroutineScope

c)

Job

d)

Deferred

19.

LiveData là một phần của thư viện nào trong Android?

a)

AndroidX ViewBinding

b)

Android Room

c)

Android Jetpack

d)

Android Core Library

20.

Giả sử có file layout với nội dung sau: Sử dụng Data Binding expression, hãy điền đoạn mã còn thiếu vào chỗ trống [ ] để khi người dùng chọn CheckBox thì TextView sẽ hiện, còn khi bỏ chọn thì TextView sẽ ẩn. Chọn đáp án đúng.

(a)  

21.

Lớp ArrayAdapter không sử dụng được với kiểu danh sách nào?

a)

GridView

b)

ListView

c)

Spinner

d)

RecyclerView

22.

Phát biểu nào sau đây đúng về intent ngầm định (implicit intent)?

a)

Hệ điều hành Android nhận các yêu cầu và tìm ứng dụng thỏa mãn

b)

Hệ điều hành Android cần danh sách các ứng dụng đăng ký để chạy intent ngầm định

c)

Để mở bằng intent ngầm định, cần phải biết tên lớp của activity cần mở

d)

Hệ điều hành Android sẽ mở hộp thoại cho phép người dùng chọn ứng dụng nếu có nhiều hơn một ứng dụng có thể thực hiện intent ngầm định

23.

Dispatcher nào được sử dụng để chạy coroutine trên luồng giao diện?

a)

Dispatchers.IO

b)

Dispatchers.Default

c)

newSingleThreadContext()

d)

Dispatchers.Main

24.

Nếu phương thức onCreateOptionsMenu được viết chồng trong activity, loại menu nào sẽ được tạo?

a)

Context Menu

b)

Popup Menu

c)

Navigation Drawer Menu

d)

ActionBar Menu

25.

Giả sử có đoạn chương trình sau: @Entity(tableName = "students") data class Student( @PrimaryKey val mssv: Int, val name: String, val email: String ) @Dao interface StudentDao { // Đoạn mã thiếu cần điền fun deleteStudentByMssv(mssv: Int) } Hãy điền mã nguồn còn thiếu vào chỗ trống để thực hiện xóa sinh viên theo mã số sinh viên. Chọn đáp án đúng.

a)

@Delete("DELETE FROM students WHERE mssv = :mssv")

b)

@Delete

c)

@Query("DELETE FROM students WHERE mssv - :mssv")

d)

@Query("DELETE FROM students WHERE mssv = :mssv")

26.

Khi sử dụng thư viện Room, chú thích nào được sử dụng để đánh dấu một lớp ứng với một bảng trong cơ sở dữ liệu?

a)

@Entity

b)

@Dao

c)

@PrimaryKey

d)

@Database

27.

Thư viện Room được sử dụng với mục đích gì?

a)

Xác thực người dùng

b)

Thực hiện các thao tác cơ sở dữ liệu

c)

Kết nối mạng

d)

Mã hoá dữ liệu

28.

Để kích hoạt Data Binding trong dự án, cần thêm gì vào tệp build.gradle?

a)

enableDataBinding()

b)

buildFeatures { dataBinding = true }

c)

Không cần thay đổi gì

d)

dataBinding.enabled = true

29.

Nếu một activity có tên là SampleActivity.kt sử dụng file layout activity_sample.xml, đáp án nào là tên của lớp binding được tạo tự động khi sử dụng kỹ thuật data binding?

a)

SampleActivityBinding

b)

ActivitySampleBinding

c)

sample_activity_binding

d)

activity_sample_binding

30.

Khi sử dụng Data Binding, thuộc tính nào trong XML được sử dụng để gắn giá trị từ ViewModel vào View?

a)

#{}

b)

@{}

c)

%{}

d)

${}

31.

Để hiển thị một danh sách với kiểu giao diện phức tạp nhiều thành phần, đối tượng nào có cách thiết lập khác với các đối tượng còn lại?

a)

AutoCompleteTextView

b)

Spinner

c)

RecyclerView

d)

GridView

e)

ListView

32.

Phát biểu nào sau đây không chính xác về ViewModel?

a)

ViewModel có thể được sử dụng để chia sẻ dữ liệu giữa các fragment.

b)

ViewModel có thể được sử dụng để chia sẻ dữ liệu giữa các activity.

c)

Mỗi fragment có thể tạo ViewModel riêng.

d)

Fragment có thể truy nhập vào ViewModel của activity chủ.

33.

Phát biểu nào không phải là ưu điểm khi sử dụng fragment (so với activity)?

a)

Di chuyển giữa các fragment cho phép sử dụng các mẫu thiết kế phức tạp như TabBar hoặc NavigationDrawer.

b)

Fragment gọn nhẹ hơn activity nên cần ưu tiên sử dụng fragment hơn activity.

c)

Sử dụng các fragment trong một activity cho phép thực hiện kiểu giao diện thích nghi với các kích thước màn hình khác nhau.

d)

Cùng một lớp fragment có thể được tái sử dụng ở các activity khác nhau.

34.

Lớp nào không được sử dụng để xử lý các thao tác kết nối mạng trong Android?

a)

Retrofit

b)

Volley

c)

HttpURLConnection

d)

JSONObject

35.

Lớp "RecyclerView" được sử dụng với mục đích gì?

a)

Truy nhập cơ sở dữ liệu

b)

Là một kiểu layout để bố trí giao diện

c)

Là công cụ quản lý bộ nhớ

d)

Hiển thị một danh sách

36.

Phương thức onCreateView() chỉ được gọi một lần trong suốt vòng đời của fragment là đúng hay sai?

a)

Đúng

b)

Sai

37.

Giả sử có API với endpoint như sau: https://example.com/users/123

Endpoint này sử dụng phương thức GET để lấy về thông tin của user có id là 123.

Đoạn mã sau định nghĩa hàm trong interface Retrofit ứng với endpoint này:

@GET("users/{uid}")

suspend fun getUser([ ] userid: String): User

Hãy điền vào chỗ trống đoạn mã còn thiếu?

a)
  • @Path("uid")

b)
  • @Path("userid")

c)
  • @Query("uid")

d)
  • @Query("userid")

38.

Mục đích chính của Coroutine trong Kotlin là gì?

a)

Lưu trữ dữ liệu

b)

Phân tích chuỗi định dạng XML

c)

Xử lý ảnh

d)

Đơn giản hóa việc lập trình bất đồng bộ

39.

Chọn phát biểu không chính xác về kỹ thuật ViewHolder được áp dụng cho các đối tượng kiểu danh sách trong Android?

a)

Giúp giảm số lần tham chiếu các đối tượng khi sử dụng phương thức findViewById()

b)

Được áp dụng mặc định với RecyclerView

c)

Không sử dụng được với ListView

d)

Cần phải tạo lớp riêng chứa các đối tượng giao diện

40.

Màn hình console sẽ hiện ra kết quả như thế nào?

a)

CBA

b)

BAC

c)

CAB

d)

ABC