16 вопросов, около 12 минут
Итоговый тест по курсу «Android-разработчик»
16 вопросов по основам Android-разработки с разбором ответов: Kotlin, Compose, состояние, навигация, сеть и публикация. В конце — какие темы повторить и вывод: стоит ли идти в профессию дальше.
Тест по всему курсу
Проверьте, как усвоился курс: вопросы по всем урокам, а в конце — разбор ошибок и темы, которые стоит повторить.
-
Компания хочет одно приложение сразу для Android и iOS из общего кода. Какой подход ей подходит?
Кроссплатформенные технологии позволяют писать общий код для обеих платформ. Нативный подход — отдельное приложение под каждую.
-
Откуда приложение маркетплейса берёт список товаров?
Товары меняются каждую минуту, поэтому хранятся на сервере. Приложение запрашивает их по API и показывает на экране.
-
Вы подключили новую библиотеку в build.gradle.kts. Что нужно сделать, чтобы она стала доступна в коде?
Gradle читает файл сборки при синхронизации: скачивает библиотеку и подключает её к проекту.
-
Название приложения под иконкой задано как android:label="@string/app_name". Где поменять сам текст?
@string/app_name — ссылка на строковый ресурс. Сам текст лежит в strings.xml.
-
Что выведет код: val items = listOf(3, 8, 1); println(items.filter { it > 2 })?
filter оставляет элементы, для которых условие верно. Больше двух — 3 и 8.
-
Переменная объявлена как var city: String? = null. Как безопасно получить длину названия или 0?
?. не даст вызвать метод у null, а ?: подставит 0. Вариант с !! упадёт, если значения нет.
-
Нужно показать картинку товара, а поверх неё в углу — значок «Скидка». Какой контейнер подходит?
Box кладёт элементы друг на друга. Column и Row располагают их по вертикали и горизонтали.
-
Зачем в строке товара параметр onDelete: () -> Unit, вместо того чтобы удалять товар прямо внутри строки?
Компонент, который не знает, откуда данные и как их менять, проще переиспользовать и проверять.
-
Что делает remember в записи var text by remember { mutableStateOf("") }?
remember хранит значение, пока composable-функция на экране. Поворот экрана он не переживает: для этого есть rememberSaveable и ViewModel.
-
Почему во ViewModel наружу отдают StateFlow, а изменяемый MutableStateFlow оставляют приватным?
Если экран сможет сам менять список, логику станет трудно отследить. Методы вроде add и delete — единственный путь изменить данные.
-
Что делает navController.navigate(DetailsRoute(5))?
navigate кладёт новый экран на вершину стека. Параметр маршрута — id товара.
-
Пользователь на экране подробностей нажал системную кнопку «Назад». Куда он попадёт?
NavController снимает верхний экран со стека и показывает предыдущий. Приложение закроется, только если экран был последним.
-
Где хранить список покупок, чтобы он открывался и без интернета?
Room сохраняет данные на устройстве. Приложение покажет их сразу, а с сервером синхронизирует, когда появится связь.
-
Зачем экрану отдельные состояния «загрузка», «данные» и «ошибка»?
Без явных состояний экран может долго оставаться пустым или упасть при ошибке сети. Три состояния покрывают все варианты.
-
Вы потеряли ключ, которым подписывали приложение. Чем это грозит?
Подпись подтверждает автора. Поэтому ключ и пароль хранят надёжно и делают резервную копию.
-
Что лучше всего показать на первом собеседовании?
Своё законченное приложение показывает, что вы умеете довести работу до результата и объяснить свои решения.
А теперь о вас
Три вопроса без правильных ответов — о том, подходит ли вам это направление.
Что дальше
Если тема зацепила, продолжить можно так.