// home Android Practice Insights →

Luyện kiến thức Android, Kotlin và Jetpack Compose với đề 25 câu, tổng 100 điểm. Mỗi lần mở trang là một đề mới lấy ngẫu nhiên từ kho câu hỏi; AI bổ sung câu hỏi mỗi ngày từ tin tức chính thức.

Kho có 127 câu · Dễ 30 · Trung bình 35 · Khó 32 · Rất khó 30 · 7 câu kiến thức mới trong 7 ngày

Câu 1 Rất khó Kotlin

Đoạn mã dưới đây in ra bốn dòng nào, theo thứ tự?

val nan = Double.NaN
val x: Any = Double.NaN
println(nan == nan)
println(x == x)
println(0.0 == -0.0)
val y: Any = 0.0
val z: Any = -0.0
println(y == z)
Câu 2 Trung bình Kotlin

Vì sao hàm dưới đây bắt buộc phải khai báo `inline` thì mới dùng được `reified`?

inline fun <reified T> Any.isType(): Boolean = this is T
Câu 3 Dễ Android

Quyền truy cập Internet của ứng dụng cần được khai báo ở đâu?

Câu 4 Trung bình Kotlin Kiến thức mới

Trong Kotlin Toolchain 0.13, hai lệnh kotlin new và kotlin init khác nhau ở điểm nào?

Câu 5 Trung bình Android

Một ViewModel cần giữ lại chuỗi tìm kiếm nhỏ của người dùng kể cả khi tiến trình ứng dụng bị hệ thống kết thúc rồi khôi phục. Cách nào phù hợp nhất?

Câu 6 Khó Android

Một Fragment gọi supportFragmentManager.beginTransaction()...commit() trong callback bất đồng bộ chạy sau khi Activity đã gọi onSaveInstanceState (ví dụ Activity đang ở nền). Điều gì xảy ra?

Câu 7 Trung bình Kotlin

Đoạn mã dùng Sequence dưới đây in ra những dòng nào, theo đúng thứ tự?

val result = listOf(1, 2, 3, 4)
    .asSequence()
    .filter { println("f$it"); it % 2 == 0 }
    .map { println("m$it"); it * 2 }
    .first()
Câu 8 Dễ Kotlin

Đoạn mã sau in ra gì?

data class User(val id: Int, val name: String)
val a = User(1, "An")
val b = User(1, "An")
println(a == b)
Câu 9 Trung bình Jetpack Compose

Việc truyền tham số key trong items(list, key = { it.id }) của LazyColumn mang lại lợi ích chính nào?

LazyColumn {
    items(users, key = { it.id }) { user ->
        UserRow(user)
    }
}
Câu 10 Khó Android

Trong một luồng nền do bạn tự tạo bằng Thread (chưa gọi Looper.prepare()), bạn tạo một Handler bằng constructor không truyền Looper. Điều gì xảy ra?

Câu 11 Khó Kotlin

Điều gì xảy ra với hàm đánh dấu `tailrec` dưới đây?

tailrec fun sum(n: Int): Long =
    if (n == 0) 0 else n + sum(n - 1)
Câu 12 Dễ Jetpack Compose

Với đoạn mã sau, điều gì xảy ra khi hiển thị Text?

Text(
    text = "Xin chào",
    modifier = Modifier
        .padding(16.dp)
        .background(Color.Red)
)
Câu 13 Dễ Kotlin

Đoạn mã sau sẽ xảy ra điều gì?

val count = 5
count = 6
println(count)
Câu 14 Rất khó Kotlin

Đoạn mã dưới đây in ra giá trị nào?

fun main() = runBlocking {
    val r = try {
        coroutineScope {
            launch { delay(100); throw IllegalStateException("x") }
            async { delay(1000); 1 }.await()
        }
    } catch (e: IllegalStateException) { -1 }
    println(r)
}
Câu 15 Dễ Android

Nguyên nhân phổ biến nhất khiến ứng dụng hiện hộp thoại ANR (Application Not Responding) là gì?

Câu 16 Khó Kotlin

Khi chạy `main`, điều gì xảy ra với đoạn mã dưới đây?

open class Base {
    init { println("Base init"); show() }
    open fun show() {}
}
class Derived : Base() {
    val x = "hi"
    override fun show() { println(x.length) }
}
fun main() { Derived() }
Câu 17 Rất khó Jetpack Compose

Khối cache của Modifier.drawWithCache trong đoạn mã sau được chạy lại vào thời điểm nào?

Modifier.drawWithCache {
    val brush = Brush.linearGradient(
        listOf(Color.Red, Color.Blue),
        end = Offset(size.width, 0f)
    )
    onDrawBehind { drawRect(brush) }
}
Câu 18 Khó Kotlin

Trong hàm inline dưới đây, bộ chỉnh `crossinline` trên tham số `block` dùng để làm gì?

inline fun runLater(crossinline block: () -> Unit) {
    Thread { block() }.start()
}
Câu 19 Dễ Android

Để cung cấp chuỗi tiếng Việt cho ứng dụng đã có chuỗi mặc định tiếng Anh, bạn nên đặt tệp strings.xml vào thư mục nào?

Câu 20 Dễ Android

Khi một Activity được tạo mới, phương thức vòng đời nào được hệ thống gọi đầu tiên?

Câu 21 Trung bình Android

Ứng dụng nhắm tới Android 12 (API 31) khai báo một Activity có <intent-filter> nhưng không có thuộc tính android:exported. Điều gì xảy ra?

Câu 22 Trung bình Android Kiến thức mới

Theo Chính sách Thanh toán Google Play, trường hợp nào dưới đây bắt buộc phải dùng hệ thống thanh toán của Play (Play Billing)?

Câu 23 Trung bình Kotlin

Hai lệnh `println` dưới đây lần lượt in ra giá trị nào?

data class P(val x: Int)

fun main() {
    val p1 = P(1)
    val p2 = P(1)
    println(p1 == p2)
    println(p1 === p2)
}
Câu 24 Khó Jetpack Compose

Vì sao dùng phiên bản lambda của Modifier.offset dưới đây hiệu quả hơn so với offset(y = (-scroll.value / 2).dp) khi người dùng cuộn liên tục?

val scroll = rememberScrollState()
Box(
    Modifier.offset { IntOffset(0, -scroll.value / 2) }
)
Câu 25 Rất khó Jetpack Compose

Điều gì xảy ra với composable sau, vốn ghi vào trạng thái mà nó vừa đọc trong cùng thân hàm (backwards write)?

@Composable
fun Bad() {
    var count by remember { mutableIntStateOf(0) }
    Text("$count")
    count++
}
Đã trả lời 0/25 câu

Câu hỏi do AI (Claude) soạn và có thể có sai sót; mỗi câu có lời giải thích và link tài liệu chính thức để đối chiếu.