KT Kotlin  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Jetpack Compose

Compose проверяется через владение состоянием, повторную композицию и жизненный цикл побочных эффектов. Вопросы требуют замечать нестабильные ключи, лишнюю работу, неправильное запоминание значений и тесты, которые проверяют интерфейс, а не детали реализации.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом задании верен только один вариант. После завершения будут показаны общий результат и 6 тематических шкал.
Вопрос 1 из 30
Какой соседний случай отличает устойчивое решение «Актуальные параметры при recomposition» от удачного примера?
Вопрос 2 из 30
Команда собирается выбирать ключи, которые действительно требуют перезапуска, и не использовать постоянный ключ для эффекта, зависящего от меняющегося параметра. Что придётся учитывать после внедрения в «Effect с ключом userId»?
Вопрос 3 из 30
Что проверяет тест?
KotlinТестирование и инструменты · Проверка интерфейс через semantics
// Проследите фактическое выполнение без изменения кода.
@Test
fun counter_increments_after_click() {
    composeRule.setContent { Counter() }
    composeRule.onNodeWithText("0").assertExists()
    composeRule.onNodeWithRole(Role.Button).performClick()
    composeRule.onNodeWithText("1").assertExists()
}
Вопрос 4 из 30
Какое правило нужно применить, чтобы объяснить «Однонаправленный поток Compose»?
KotlinАрхитектура и конкурентность · Однонаправленный поток Compose
// На ревью требуется объяснить причину поведения.
@Composable
fun Screen(vm: ScreenViewModel) {
    val state by vm.state.collectAsStateWithLifecycle()
    Content(state = state, onAction = vm::dispatch)
}
Вопрос 5 из 30
На какой контракт языка или библиотеки опирается «Чистое описание интерфейс»?
KotlinКомпоненты Composable · Чистое описание интерфейс
// На ревью требуется объяснить причину поведения.
@Composable
fun Greeting(name: String) {
    Text("Hello, $name")
}
Вопрос 6 из 30
Как превратить неявное предположение в проверяемый контракт «Observable state счётчика»?
KotlinСостояние в Compose · Observable state счётчика
// Сохраните назначение фрагмента, но укрепите его контракт.
@Composable
fun Counter() {
    var count by remember { mutableIntStateOf(0) }
    Button(onClick = { count++ }) { Text("$count") }
}
Вопрос 7 из 30
Когда запустится блок `LaunchedEffect`?
KotlinПобочные эффекты Compose · Effect с ключом userId
// Проследите фактическое выполнение без изменения кода.
@Composable
fun AnalyticsScreen(userId: String, analytics: Analytics) {
    LaunchedEffect(userId) { analytics.opened(userId) }
}
Вопрос 8 из 30
Какой принцип лежит в основе поведения «Проверка интерфейс через semantics»?
KotlinТестирование и инструменты · Проверка интерфейс через semantics
// На ревью требуется объяснить причину поведения.
@Test
fun counter_increments_after_click() {
    composeRule.setContent { Counter() }
    composeRule.onNodeWithText("0").assertExists()
    composeRule.onNodeWithRole(Role.Button).performClick()
    composeRule.onNodeWithText("1").assertExists()
}
Вопрос 9 из 30
Какая небольшая правка заметно повышает надёжность «Однонаправленный поток Compose»?
KotlinАрхитектура и конкурентность · Однонаправленный поток Compose
// Сохраните назначение фрагмента, но укрепите его контракт.
@Composable
fun Screen(vm: ScreenViewModel) {
    val state by vm.state.collectAsStateWithLifecycle()
    Content(state = state, onAction = vm::dispatch)
}
Вопрос 10 из 30
Как сделать ответственность во фрагменте «Чистое описание интерфейс» понятной следующему разработчику?
KotlinКомпоненты Composable · Чистое описание интерфейс
// Сохраните назначение фрагмента, но укрепите его контракт.
@Composable
fun Greeting(name: String) {
    Text("Hello, $name")
}
Вопрос 11 из 30
Где поведение «Observable state счётчика» требует отдельной проверки?
Вопрос 12 из 30
Что может усложниться в сопровождении после изменения «Актуальные параметры при recomposition»: Использовать неизменяемые модели, стабильные ключи списков и `rememberUpdatedState` там, где долгоживущий effect должен видеть свежий callback?
Вопрос 13 из 30
Что следует изменить прежде всего во фрагменте «Проверка интерфейс через semantics»?
KotlinТестирование и инструменты · Проверка интерфейс через semantics
// Сохраните назначение фрагмента, но укрепите его контракт.
@Test
fun counter_increments_after_click() {
    composeRule.setContent { Counter() }
    composeRule.onNodeWithText("0").assertExists()
    composeRule.onNodeWithRole(Role.Button).performClick()
    composeRule.onNodeWithText("1").assertExists()
}
Вопрос 14 из 30
Какой пограничный сценарий обязательно добавить к проверкам «Однонаправленный поток Compose»?
Вопрос 15 из 30
Что проверить отдельно, чтобы не принять «Чистое описание интерфейс» за универсальное правило?
Вопрос 16 из 30
Какова практическая цена решения «Observable state счётчика»: Поднимать состояние к владельцу, если его должны разделять несколько composable или сохранять бизнес-логика?
Вопрос 17 из 30
Какой фактор сильнее всего влияет на корректность при recomposition?
KotlinПовторная композиция · Актуальные параметры при recomposition
// Проследите фактическое выполнение без изменения кода.
@Composable
fun UserRow(user: User, onOpen: (String) -> Unit) {
    Row(Modifier.clickable { onOpen(user.id) }) { Text(user.name) }
}
Вопрос 18 из 30
Почему поведение «Effect с ключом userId» не является случайностью?
KotlinПобочные эффекты Compose · Effect с ключом userId
// На ревью требуется объяснить причину поведения.
@Composable
fun AnalyticsScreen(userId: String, analytics: Analytics) {
    LaunchedEffect(userId) { analytics.opened(userId) }
}
Вопрос 19 из 30
Для «Однонаправленный поток Compose» предлагают правку: Не отдавать mutable flow наружу, моделировать одноразовые эффекты отдельно от устойчивого состояния и обрабатывать гонки в dispatch. Какой компромисс нельзя пропустить?
Вопрос 20 из 30
Какую обратную сторону имеет решение для «Чистое описание интерфейс»: Передавать состояние параметрами, события — callback-ами, а долгую работу запускать в ViewModel или подходящем Effect API?
Вопрос 21 из 30
Что произойдёт после нажатия?
KotlinСостояние в Compose · Observable state счётчика
// Проследите фактическое выполнение без изменения кода.
@Composable
fun Counter() {
    var count by remember { mutableIntStateOf(0) }
    Button(onClick = { count++ }) { Text("$count") }
}
Вопрос 22 из 30
Какое правило нужно применить, чтобы объяснить «Актуальные параметры при recomposition»?
KotlinПовторная композиция · Актуальные параметры при recomposition
// На ревью требуется объяснить причину поведения.
@Composable
fun UserRow(user: User, onOpen: (String) -> Unit) {
    Row(Modifier.clickable { onOpen(user.id) }) { Text(user.name) }
}
Вопрос 23 из 30
Что изменить в «Effect с ключом userId», чтобы скрытое допущение стало явным контрактом?
KotlinПобочные эффекты Compose · Effect с ключом userId
// Сохраните назначение фрагмента, но укрепите его контракт.
@Composable
fun AnalyticsScreen(userId: String, analytics: Analytics) {
    LaunchedEffect(userId) { analytics.opened(userId) }
}
Вопрос 24 из 30
Какой тест лучше всего защищает край контракта «Проверка интерфейс через semantics»?
Вопрос 25 из 30
Как следует понимать вызов `Greeting("Ada")`?
KotlinКомпоненты Composable · Чистое описание интерфейс
// Проследите фактическое выполнение без изменения кода.
@Composable
fun Greeting(name: String) {
    Text("Hello, $name")
}
Вопрос 26 из 30
На какой контракт языка или библиотеки опирается «Observable state счётчика»?
KotlinСостояние в Compose · Observable state счётчика
// На ревью требуется объяснить причину поведения.
@Composable
fun Counter() {
    var count by remember { mutableIntStateOf(0) }
    Button(onClick = { count++ }) { Text("$count") }
}
Вопрос 27 из 30
Какая небольшая правка заметно повышает надёжность «Актуальные параметры при recomposition»?
KotlinПовторная композиция · Актуальные параметры при recomposition
// Сохраните назначение фрагмента, но укрепите его контракт.
@Composable
fun UserRow(user: User, onOpen: (String) -> Unit) {
    Row(Modifier.clickable { onOpen(user.id) }) { Text(user.name) }
}
Вопрос 28 из 30
Где упрощённое объяснение «Effect с ключом userId» перестаёт работать?
Вопрос 29 из 30
Какую обратную сторону имеет решение для «Проверка интерфейс через semantics»: Использовать устойчивые semantic properties и test tags только там, где пользовательский смысл не даёт надёжного селектора?
Вопрос 30 из 30
Почему такая граница удобна?
KotlinАрхитектура и конкурентность · Однонаправленный поток Compose
// Проследите фактическое выполнение без изменения кода.
@Composable
fun Screen(vm: ScreenViewModel) {
    val state by vm.state.collectAsStateWithLifecycle()
    Content(state = state, onAction = vm::dispatch)
}

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу