WorksheetsCâu hỏi về phát triển Android với Kotlin
Total questions: 89
Worksheet time: 46mins
1. Đuôi tệp nào được sử dụng để lưu tệp Kotlin?
.java
.kot
.kt hoặc .kts
.android
2. Từ khóa nào được sử dụng để định nghĩa một biến không thay đổi?
var
val
immulvar
immutableVar
3. Kotlin có tương thích với ngôn ngữ lập trình Java không?
Có, nó tương thích
Không, nó không tương thích
4. Lệnh nào sẽ trả về độ dài của một chuỗi trong Kotlin?
str.length
length(str)
str.lengthOf
str.getLength()
5. Trong số các tùy chọn sau, tùy chọn nào được sử dụng để viết mã an toàn với null trong Kotlin?
Range
Sealed Class
Elvis Operator
Lambda Function
6. Cách chính xác để tạo một Arraylist trong Kotlin là gì?
val map = hashMapOf(1 to "one", 2 to "two", 3 to "three")
enum class Color {RED, GREEN, BLUE}
val set = hashSetOf(1, 2, 3)
val list = arrayListOf(1, 2, 3)
1. Các hàm trong Kotlin được tạo ra bằng từ khóa nào?
void
fun
function
def
2. Kiểu trả về mặc định của bất kỳ hàm nào được định nghĩa trong Kotlin là gì?
Int
Double
void
Unit
3. Hàm để in một dòng trong Kotlin là gì?
println()
printLine()
linePrint()
line()
4. Câu lệnh 'when' trong Kotlin tương tự với câu lệnh nào trong các ngôn ngữ lập trình khác?
if
break
switch
continue
5. Lambda là gì trong Kotlin?
Một lambda là một kiểu dữ liệu trong Kotlin
Một lambda là một kiểu lớp trong Kotlin
Một lambda là một giao diện trong Kotlin
Một lambda là một biểu thức mô tả một hàm. Nhưng thay vì khai báo một hàm có tên, bạn khai báo một hàm không có tên
1. Hành vi mặc định của các lớp trong Kotlin là gì?
Tất cả các lớp đều là private
Tất cả các lớp đều là sealed
Tất cả các lớp đều là final
Tất cả các lớp đều là protected
2. Cách chính xác để khai báo đối tượng cho lớp Book trong Kotlin là gì?
Book b1 = new Book()
val b1 = Book()
var b1 = (Book) new()
val b1 = (new) Book()
3. Điều gì đúng về các hàm mở rộng trong Kotlin?
Cho phép bạn viết các hàm mới cho một lớp mà bạn không thể sửa đổi
Sử dụng cú pháp chấm để gọi chúng trên các biến của loại bạn đang mở rộng
Nó phải được khai báo trong cùng một tệp với lớp gốc mà bạn đang mở rộng
Sử dụng từ khóa extend để khai báo các hàm này
4. Điều nào sau đây là đúng về các lớp dữ liệu?
Bạn cần phải triển khai phương thức toString()
Không cần tham số cho bộ khởi tạo chính
Sử dụng nó cho các lớp lưu trữ dữ liệu
Các phương thức getter được tự động tạo cho bạn (và các phương thức setter cho các biến có thể thay đổi)
5. Từ khóa nào được sử dụng để chỉ ra rằng một lớp có thể được kế thừa?
public
protected
internal
open
1. Phương thức nào trên một Activity làm cho bố cục của ứng dụng được tạo và làm cho các view của nó có sẵn dưới dạng đối tượng?
onCreate()
setClickListener()
setContentView()
show()
2. Thuộc tính view nào bạn sử dụng để đặt chiều rộng của một View sao cho nó điều chỉnh để phù hợp với nội dung?
android:view_width="wrap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
3. Phương thức nào thay đổi tài nguyên hình ảnh cho một ImageView trong mã Kotlin?
setImageResource()
setImageURI()
setImage()
setImageRes()
4. Từ khóa lateinit trong khai báo biến trong mã Kotlin chỉ ra điều gì?
Biến không bao giờ được khởi tạo.
Biến chỉ được khởi tạo tại thời điểm chạy ứng dụng.
Biến tự động được khởi tạo thành null.
Biến sẽ được khởi tạo sau.
5. Cấu hình Gradle nào chỉ ra mức API gần đây nhất mà ứng dụng của bạn đã được thử nghiệm?
minSdkVersion
compileSdkVersion
targetSdkVersion
testSdkVersion
6. Trong số các công cụ truy cập sau, công cụ nào được tích hợp sẵn với hầu hết các thiết bị Android?
Trong Android Studio, Refactor > Thêm hỗ trợ RTL khi có thể
Accessibility Scanner
TalkBack
Lint
1. Trong số các tùy chọn sau, tùy chọn nào là ViewGroup?
EditText
LinearLayout
TextView
Button
2. Trong số các cấu trúc hiển thị được liệt kê sau, cấu trúc nào không hợp lệ?
LinearLayout > TextView, TextView, ImageView
ScrollView > LinearLayout > TextView, Button, ScrollView > TextView
TextView > TextView, ImageView, ScrollView
ConstraintLayout > TextView, EditText, Button
3. Các kiểu là tài nguyên được định nghĩa trong styles.xml. Sử dụng các kiểu, bạn có thể định nghĩa màu sắc, phông chữ, kích thước văn bản và nhiều đặc điểm khác của một view. Đúng hay sai?
Đúng, bạn có thể định nghĩa những điều này.
Sai, bạn không thể định nghĩa những điều này.
4. Một View có thể chứa bất kỳ số lượng View hoặc ViewGroup nào làm con của nó. Đúng hay sai?
Đúng, View có thể chứa bất kỳ số lượng View hoặc ViewGroup.
Sai, View chỉ có thể có 1 con.
5. EditText là một lớp con của loại nào?
TextField
LinearLayout
TextView
Button
6. Trong số các giá trị thuộc tính visibility sau, nếu được đặt trên một view, giá trị nào làm cho view bị ẩn và không chiếm không gian nào trong bố cục?
visible
invisible
gone
hide
7. Một trong những tuyên bố sau đây là đúng về các view Button?
Một view Button là một ViewGroup.
Bạn chỉ có thể có ba view Button trên mỗi màn hình.
Các view Button có thể nhấp, và khi nhấp, listener nhấp đính kèm thực hiện một hành động.
Button là một phần mở rộng của ImageView.
8. Trong một ConstraintLayout, lựa chọn nào sau đây mô tả các ràng buộc cần thiết để giữ một view ở vị trí trong thời gian chạy?
Hai ràng buộc ngang.
Một ràng buộc dọc.
Ít nhất một ràng buộc ngang và một ràng buộc dọc.
Không cần ràng buộc view.
9. Trong số các loại ràng buộc sau, loại nào mở rộng một view chỉ nhiều như cần thiết để phù hợp với nội dung của nó?
Wrap content
Match constraint
Fixed constraint
Baseline constraint
10. Một số lợi ích của việc sử dụng Trình chỉnh sửa Bố cục trong Android Studio là gì?
Kéo và thả các phần tử UI lên màn hình với trình chỉnh sửa thiết kế trực quan
Chỉnh sửa thuộc tính view
Kiểm tra hành vi nhấp nút và xem ứng dụng sẽ phản ứng như thế nào
Chọn loại và kích thước thiết bị để xem trước bố cục của bạn
11. Trong số các lý do sau, lý do nào không phải là lý do để giảm thiểu các cuộc gọi đến findViewById()?
Mỗi lần findViewById() được gọi, nó duyệt qua cấu trúc view.
findViewById() chạy trên luồng chính hoặc luồng UI.
Các cuộc gọi này có thể làm chậm giao diện người dùng.
Ứng dụng của bạn ít có khả năng bị sập.
12. Cách chính xác để tham chiếu dữ liệu đã ràng buộc trong bố cục XML là gì?
android:text="@={myDataClass.property}"
android:text="@={myDataClass}"
android:text="@={myDataClass.property.string}"
android:text="@={myDataClass.bound_data.property}"
1. Trong số các tuyên bố sau về các fragment, tuyên bố nào là đúng? Chọn tất cả những gì áp dụng.
Bạn có thể sử dụng một Fragment trong nhiều Activity.
Một Activity có thể có nhiều fragment.
Sau khi bạn định nghĩa một Fragment trong một lớp Kotlin, fragment sẽ tự động được thêm vào tệp activity_main.xml.
Sử dụng thẻ
2. Làm thế nào để bạn cho phép dự án của mình sử dụng các thành phần điều hướng?
Đảm bảo mỗi lớp Activity đều mở rộng lớp NavigationActivity.
Sử dụng lớp NavigationController làm activity khởi động.
Thêm uses-navigation vào tệp AndroidManifest.xml.
Thêm các phụ thuộc cho navigation-fragment-ktx và navigation-ui-ktx trong tệp build.gradle (module).
3. Các tuyến đường điều hướng có thể có trong ứng dụng của bạn được định nghĩa ở đâu?
Trong một tệp (thường được gọi là navigation.xml) trong thư mục res > layout.
Trong một tệp (thường được gọi là navigation.xml) trong thư mục app > navigation.
Trong một tệp (thường được gọi là navigation.xml) trong thư mục res > navigation.
Trong tệp AndroidManifest.xml, dưới phần tử.
Bạn cần làm gì để kích hoạt menu tràn (còn được gọi là menu tùy chọn)? Bạn có thể giả định rằng bạn đã định nghĩa các mục menu.
Gọi setHasOptionsMenu(true) trong onCreate() cho một Activity hoặc onCreateView() cho một Fragment.
Triển khai onCreateOptionsMenu() trong Activity hoặc Fragment để tạo menu.
Đặt thuộc tính onClick trong tệp menu.xml thành onShowOptionsMenu, trừ khi bạn đang triển khai một trình lắng nghe onClick tùy chỉnh cho menu tùy chọn, trong trường hợp đó hãy chỉ định tên của trình lắng nghe tùy chỉnh đó.
Triển khai onOptionsItemSelected() trong Activity hoặc Fragment để xác định những gì xảy ra khi người dùng chọn một mục menu trong menu tùy chọn.
Plugin Gradle Safe Args làm gì? Chọn tất cả những gì áp dụng.
Tạo các lớp đối tượng và lớp xây dựng đơn giản cho việc truy cập an toàn kiểu đến các tham số được chỉ định cho các điểm đến và hành động.
Tạo các lớp Điều hướng mà bạn có thể chỉnh sửa để đơn giản hóa việc truyền tham số giữa các fragment.
Tạo một phương thức cho mỗi hành động mà bạn đã định nghĩa trong đồ thị điều hướng.
Ngăn chặn mã của bạn sử dụng khóa sai khi trích xuất dữ liệu từ một gói.
Ứng dụng của bạn chứa một mô phỏng vật lý yêu cầu tính toán nặng để hiển thị. Sau đó, người dùng nhận được một cuộc gọi điện thoại. Điều nào sau đây là đúng?
Trong cuộc gọi điện thoại, bạn nên tiếp tục tính toán vị trí của các đối tượng trong mô phỏng vật lý.
Trong cuộc gọi điện thoại, bạn nên ngừng tính toán vị trí của các đối tượng trong mô phỏng vật lý.
Phương thức vòng đời nào bạn nên ghi đè để tạm dừng mô phỏng khi ứng dụng không hiển thị trên màn hình?
onDestroy()
onStop()
onPause()
onSaveInstanceState()
Để làm cho một lớp nhận thức vòng đời thông qua thư viện vòng đời Android, lớp đó nên triển khai giao diện nào?
Lifecycle
LifecycleOwner
Lifecycle.Event
LifecycleObserver
Trong những hoàn cảnh nào phương thức onCreate() trong hoạt động của bạn nhận được một Bundle với dữ liệu trong đó (tức là, Bundle không null)?
Hoạt động được khởi động lại sau khi thiết bị được xoay.
Hoạt động được khởi động từ đầu.
Hoạt động được phục hồi sau khi trở về từ nền.
Thiết bị được khởi động lại.
Phương thức vòng đời nào được gọi để làm cho một hoạt động hiển thị?
onPause()
onVisible()
onStart()
onDestroy()
Phương thức vòng đời nào được gọi để cho một hoạt động có được tiêu điểm?
onResume()
onVisible()
onStart()
onFocus()
Để tránh mất dữ liệu trong quá trình thay đổi cấu hình thiết bị, bạn nên lưu dữ liệu ứng dụng trong lớp nào?
ViewModel
LiveData
Fragment
Activity
Một ViewModel không bao giờ nên chứa bất kỳ tham chiếu nào đến các fragment, hoạt động hoặc view. Đúng hay sai?
Đúng, nó không nên chứa bất kỳ tham chiếu nào.
Sai, nó nên chứa ít nhất một tham chiếu đến một trong những điều trên.
Khi nào một ViewModel bị hủy?
Khi bộ điều khiển UI liên quan bị hủy và được tạo lại trong quá trình thay đổi định hướng thiết bị.
Trong một thay đổi định hướng.
Khi bộ điều khiển UI liên quan bị hoàn thành (nếu đó là một hoạt động) hoặc bị tách (nếu đó là một fragment).
Khi người dùng nhấn nút Quay lại.
Giao diện ViewModelFactory dùng để làm gì?
Khởi tạo một đối tượng ViewModel.
Giữ lại dữ liệu trong quá trình thay đổi định hướng.
Làm mới dữ liệu đang được hiển thị trên màn hình.
Nhận thông báo khi dữ liệu ứng dụng bị thay đổi.
Làm thế nào để bạn đóng gói LiveData được lưu trữ trong ViewModel để các đối tượng bên ngoài có thể đọc dữ liệu mà không thể cập nhật nó?
Bên trong đối tượng ViewModel, thay đổi kiểu dữ liệu của dữ liệu thành LiveData riêng tư. Sử dụng thuộc tính hỗ trợ để xuất dữ liệu chỉ đọc của kiểu MutableLiveData.
Bên trong đối tượng ViewModel, thay đổi kiểu dữ liệu của dữ liệu thành MutableLiveData riêng tư. Sử dụng thuộc tính hỗ trợ để xuất dữ liệu chỉ đọc của kiểu LiveData.
Bên trong bộ điều khiển UI, thay đổi kiểu dữ liệu của dữ liệu thành MutableLiveData riêng tư. Sử dụng thuộc tính hỗ trợ để xuất dữ liệu chỉ đọc của kiểu LiveData.
Bên trong đối tượng ViewModel, thay đổi kiểu dữ liệu của dữ liệu thành LiveData. Sử dụng thuộc tính hỗ trợ để xuất dữ liệu chỉ đọc của kiểu LiveData.
LiveData cập nhật một bộ điều khiển UI (chẳng hạn như một fragment) nếu bộ điều khiển UI ở trong trạng thái nào sau đây?
Đã phục hồi
Trong nền
Đã tạm dừng
Đã dừng
Trong mẫu quan sát LiveData, đối tượng quan sát (được quan sát) là gì?
Phương thức quan sát
Dữ liệu trong một đối tượng LiveData
Bộ điều khiển UI
Đối tượng ViewModel
Trong lớp nào bạn nên thêm logic định dạng dữ liệu sử dụng phương thức Transformations.map() để chuyển đổi LiveData thành một giá trị hoặc định dạng khác?
ViewModel
Fragment
Activity
MainActivity
Phương thức Transformations.map() cung cấp một cách dễ dàng để thực hiện các thao tác dữ liệu trên LiveData và trả về ___.
Một đối tượng ViewModel
Một đối tượng LiveData
Một chuỗi đã định dạng
Một đối tượng RoomDatabase
Các tham số cho phương thức Transformations.map() là gì?
Một LiveData nguồn và một hàm sẽ được áp dụng cho LiveData
Chỉ một LiveData nguồn
Không có tham số
ViewModel và một hàm sẽ được áp dụng
Hàm lambda được truyền vào phương thức Transformations.map() được thực thi trong luồng nào?
Luồng chính
Luồng nền
Luồng UI
Trong một coroutine
Bạn làm thế nào để chỉ ra rằng một lớp đại diện cho một thực thể để lưu trữ trong cơ sở dữ liệu Room?
Làm cho lớp mở rộng DatabaseEntity.
Chú thích lớp với @Entity.
Chú thích lớp với @Database.
Làm cho lớp mở rộng RoomEntity và cũng chú thích lớp với @Room.
DAO (đối tượng truy cập dữ liệu) là một giao diện mà Room sử dụng để ánh xạ các hàm Kotlin đến các truy vấn cơ sở dữ liệu. Làm thế nào để bạn chỉ ra rằng một giao diện đại diện cho một DAO cho cơ sở dữ liệu Room?
Làm cho giao diện mở rộng RoomDAO.
Làm cho giao diện mở rộng EntityDao, sau đó triển khai phương thức DaoConnection().
Chú thích giao diện với @Dao.
Chú thích giao diện với @RoomConnection.
Bạn có thể sử dụng chú thích nào trong giao diện @Dao của bạn? Chọn tất cả những gì áp dụng.
@Get
@Update
@Insert
@Query
Điều nào sau đây không phải là lợi ích của việc sử dụng coroutine?
Chúng chạy bất đồng bộ.
Chúng có thể được chạy trên một luồng khác ngoài luồng chính.
Chúng luôn làm cho ứng dụng chạy nhanh hơn.
Chúng có thể sử dụng ngoại lệ.
Điều nào sau đây không đúng với các hàm Suspend?
Một hàm được chú thích với từ khóa Suspend.
Một hàm có thể được gọi bên trong các coroutine.
Trong khi một hàm Suspend đang chạy, luồng gọi bị tạm dừng.
Các hàm Suspend phải luôn chạy trong nền.
Điều nào sau đây là KHÔNG đúng?
Khi thực thi bị chặn, không có công việc nào khác có thể được thực hiện trên luồng bị chặn.
Khi thực thi bị tạm dừng, luồng có thể thực hiện công việc khác trong khi chờ đợi công việc được chuyển giao hoàn thành.
Tạm dừng hiệu quả hơn, vì các luồng có thể không chờ đợi, làm không có gì.
Dù bị chặn hay tạm dừng, thực thi vẫn đang chờ kết quả của coroutine trước khi tiếp tục.
Biến nào sau đây là hợp lệ?
var hello: Int? = ""
String "hello" = hello
val hello = "hello"
hello: String = "hello"
Được coi là thực tiễn tốt nhất để khai báo một biến sẽ không thay đổi bằng var thay vì val.
Đúng
Sai
Những cách nào sau đây là hợp lệ để cập nhật một biến?
total++
total - 1
total--
total = total + 1
Trong Kotlin, các bình luận có thể là đơn hoặc đa dòng và bị trình biên dịch bỏ qua.
Đúng
Sai
Điều nào sau đây không phải là kiểu dữ liệu trong Kotlin?
String
Decimal
Int
Boolean
Float cũng đại diện cho một số thập phân, nhưng kém chính xác hơn Double.
Đúng
Sai
Trong Kotlin, điểm vào của một chương trình là ___.
câu lệnh println()
biến val
hàm main()
câu lệnh return
Điều nào sau đây là đúng về giá trị trả về của hàm?
Nếu một hàm không chỉ định kiểu trả về, kiểu trả về là Unit.
Một giá trị trả về có thể được lưu trữ trong một biến.
Các hàm có kiểu trả về là Unit phải bao gồm một câu lệnh trả về.
Kiểu của một giá trị trả về phải khớp với kiểu trả về của một hàm.
Điều nào sau đây là đúng về các hàm?
Các hàm có thể nhận tham số, hoặc biến đầu vào.
Tham số hàm yêu cầu có các đối số mặc định.
Khi gọi một hàm với các tham số, các giá trị được truyền vào được gọi là đối số.
Phân chia mã của bạn thành các hàm riêng biệt giúp mã của bạn dễ bảo trì hơn.
Mục đích của việc sử dụng một thiết bị ảo, hoặc trình giả lập, trong Android Studio là gì?
Để hiển thị nhiều thông báo lỗi cho người dùng
Để thử nghiệm mã ứng dụng một cách an toàn
Để kiểm tra ứng dụng của bạn trên một thiết bị mà không cần thiết bị vật lý đó
Để xem ứng dụng của bạn trông như thế nào trong trình duyệt web
Trong Android Studio, mẫu dự án tốt cho điều gì?
Nó khiến Android Studio tải tệp nhanh hơn.
Nó giúp bắt đầu xây dựng một ứng dụng mới nhanh hơn.
Nó cung cấp một cấu trúc theo các phương pháp tốt nhất.
Nó là cách duy nhất để xây dựng ứng dụng có thể được xem trước trong Android Studio.
Nó giúp xây dựng một ứng dụng mới ít lỗi hơn bằng cách tự động điền dự án với một số mã ứng dụng
Bạn tạo một dự án mới trong Android Studio như thế nào?
Nếu bạn đã mở một dự án, chọn Tệp > Mới > Dự án mới từ menu Android Studio.
Trong cửa sổ 'Chào mừng đến với Android Studio', nhấp vào 'Bắt đầu một dự án Android Studio mới.'
Đăng xuất khỏi Android Studio, và điều hướng đến thư mục dự án của bạn để tìm hướng dẫn.
Tạo một tệp mới trên máy tính của bạn, và đặt tên cho nó là 'Dự án Android Studio Mới.'
___ là một hàm được sử dụng để định nghĩa một bố cục trong ứng dụng của bạn bằng cách sử dụng các hàm Composable.
ComponentActivity()
onCreate()
DefaultPreview()
setContent()
Một hàm Compose yêu cầu chú thích @Composable.
Đúng
Sai
Một ___ là một Composable có màu nền và có thể chứa các Composables khác.
Màu
Container
Surface
Box
Padding là một ví dụ về ___
Thuộc tính
Composable
Thuộc tính
Modifier
Cái nào sau đây là sai về Compose?
Mẫu Empty Compose Activity được sử dụng để tạo một ứng dụng đơn giản.
Các bố cục có thể được xem trong cửa sổ Xem trước, mà không cần thực sự chạy ứng dụng của bạn.
Tất cả các phần tử và chủ đề trong một ứng dụng Compose đều được chứa trong một Surface.
Các chủ đề, chẳng hạn như GreetingCardTheme cho phép bạn định kiểu cho các Composables.
Jetpack Compose là gì?
Một bộ công cụ hiện đại để phát triển UI Android
Bộ công cụ để thiết kế thư viện
Giao diện cơ sở dữ liệu
Plugin để xây dựng APK
Các hàm Composable là khối xây dựng cơ bản của Compose.
Đúng
Sai
Chú thích nào được sử dụng để chú thích một hàm Composable?
@Annotation
@ComposableFunction
@Composable
@Preview
Ba phần tử bố trí tiêu chuẩn cơ bản trong Compose là
Column
Row
Text
Box
Công cụ nào là cửa sổ công cụ để nhập, tạo, quản lý và sử dụng tài nguyên trong ứng dụng của bạn?
Trình quản lý ứng dụng
Trình quản lý tài nguyên
Công cụ tài nguyên
Trình quản lý bố cục
Lớp nào là lớp tự động được tạo bởi Android chứa các ID của tất cả các tài nguyên trong dự án.
Lớp Android
Lớp Tài nguyên
Lớp R
Lớp ResourceID
Hàm nào được sử dụng để tải một tài nguyên hình ảnh drawable.
Hàm stringResource()
Hàm painterResource()
Hàm ImageResource()
Hàm loadResource()
Tham số hàm nào được sử dụng để thêm văn bản truy cập, được sử dụng bởi talkback?
accessibilityText
contentText
accessibilityDescription
contentDescription
Bố cục Box xếp chồng các phần tử UI lên nhau.
Đúng
Sai
Tham số nào được sử dụng để căn chỉnh phần tử con về phía đầu của phần tử cha?
Alignment.End
Alignment.Begin
Alignment.Start
Alignment.Top
