Тест для Android-разработчиков

Какие проблемы могут возникнуть, при добавлении ListView в ScrollView?
Проблем не будет, все будет корректно работать
Возникнет ошибка отрисовки элементов на экране, элементы не отрисуются
Возникнет проблема скролинга, один из элементов скролиться не будет
Скролл не будет работать ни в одном из элементов

Что представляет из себя Google Play Services?
Набор подключаемых и документированных библиотек для доступа к Google Services
API документация, для доступа к Google Services
Установленное на устройство пользователя приложение Google Play Services, доступ к которому происходит через вызовы Intent
Установленное на устройство пользователя приложение Google Play Services, доступ к которому происходит через набор подключаемых библиотек.

Какой тип данных можно положить в Bundle?
Любой Object можно передать в bundle (и все варианты что ниже)
Можно передавать Map - связка ключ, значение
Bundle не предназначен для передачи данных
Можно передавать Bundle в Bundle

Можно ли отправлять и читать SMS сообщения?
Можно читать, если есть нужный permission, но отправлять нельзя
Можно читать и отправлять, если на это есть специальные permissions.
Можно отправлять если есть нужный permission, но читать нельзя
Нельзя ни отправлять, ни читать. Никаких похожих Permissions нет.

Как обойти проблему 65к методов?
Проблема не обходится, нужно писать меньше методов.
После компиляции APK необходимо сжать с помощью архиватора
Использовать Multidex
Задать в настройках сборки специальные параметры

Какой порядок жизненного цикла правильный во Fragment?
onAttach(), onCreateView(), onAcitivtyCreated(), onDetach()
onAttach(), onAcitivtyCreated(), onCreateView(), onDetach()
onAcitivtyCreated(), onAttach(), onCreateView(), onDetach()
onCreateView(), onAttach(), onAcitivtyCreated(), onDetach()

Что произойдет, если несколько раз вызывать startService?
Создастся столько инстансов сервисов, сколько раз вызывался startService
Произойдет ошибка при повторном вызове. Приожение автоматически остановится. Необходимо делать проверку перед запуском сервиса, что сервис не запущен
При каждом запуске startService будет создан новый инстанс, но запуск сервиса произойдет только после завершения предыдущего сервиса
Будет создан один истанс, все последующие startService() уведомляют ранее созданный экземпляр через специальный метод

Как называется набор утилит для подключения нативных библиотек?
ADB
SDK
NDK
ADT

Что такое Toast?
UI элемент, добавляемый в Layout
Alert диалог
Всплывающее сообщение, скрываемое через Х миллисекунд
Системное сообщение в шторке устройства

Сколько раз вызывается Service.onStartCommand?
Один раз, при запуске сервиса
Каждый раз, когда вызывается Context.startService с соответствующим Intent-ом
Каждый раз, когда приложение «уходит» в фоновый режим работы
Каждый раз, когда происходит binding к сервису

Что будет, если в манифесте не указать “главную” Activity?
Возникнет ошибка сборки приложения
Возникнет ошибка при установке приложения
Возникнет ошибка при установке приложения при API >= 11
Приложение соберется и установится, но не появится в списке приложений на устройстве.

В каком потоке выполняется вызов метода OnClickListener.onClick у View?
В потоке, который указан программистом при создании View
В отдельном потоке, который создает Android при регистрации события
В потоке, в котором было создано View
В главном потоке приложения

Если вернуть false из View.onTouchEvent, в ответ на MotionEvent с действием ACTION_DOWN, то:
Ни один MotionEvent текущего жеста больше не попадет в onTouchEvent данного View
Если данное View не является ViewGroup, то Android никак не интерпретирует возвращаемое значение
Все MotionEvent-ы текущего жеста будут попадать в это View
Если данное View является ViewGroup, то Android никак не интерпретирует возвращаемое значение

Какие компоненты никогда не прописываются в манифесте?
Activity
Service
Receiver
Loader

Если печатать логи в каждом из перечисленных методов activity: onCreate, onStart, onResume, onPause, onRestart, onDestroy, какие цепочки логов невозможны?
onPause - onDestroy - onCreate - onStart
onPause - onCreate - onStart
onPause - onRestart - onResume - onPause
onPause - onResume - onPause - onRestart

При каких значениях параметра “android:launchMode” activity будет существовать в системе максимум в одном экземпляре?
standard и singleTop
singleTop и singleTask
singleTask и singleInstance
singleInstance и standard

Как можно совсем отключить пересоздание activity?
Совсем отключить пересоздание activity в android нельзя
Задать значение параметра activity “android:launchMode=”singleInstance”
Отключить поворот экрана с помощью параметра activity “android:screenOrientation”
С помощью параметра activity “android:configChanges”

Как внутри метода activity onCreate() определить, что activity была пересоздана, а не запущена в первый раз?
Только так: getIntent() == null;
Только так: savedInstanceState != null;
Только так: isChangingConfigurations();
Можно использовать любой из вышеперечисленных способов

Чем могут быть вызваны утечки памяти?
Сохранение ссылки на Activity или View в статической переменной
Вызов FragmentManager.replace() не на GUI-потоке
Циклические ссылки
Отсутствие вызова setContentView(null) в методе Activity.onDestroy()

Что из нижеперечисленного появилось в Android Lollipop?
Material design
Поддержка нескольких пользователей
Поддержка NFC
Всё перечисленное

Какой(ие) метод(ы) обязательны для переопределения при создании AsynсTask?
doInBackground()
doInBackground() и onProgressUpdate()а
doInBackground(), onProgressUpdate(), onPostExecute(), onPreExecute()
doInBackground() и onCancelled()

Какой permission необходимо указать в AndroidManifest.xml при использовании HttpURLConnection?
android.permission.INTERNET и android.permission.WRITE_EXTERNAL_STORAGE
android.permission.INTERNET и android.permission.ACCESS_NETWORK_STATE
только android.permission.INTERNET
для использования HttpURLConnection не требуется никакой permission

Чему равен 1 dp., если плотность пикселей экрана устройства соответсвует hdpi?
1 px
1,5 px
2 px
3 px

При нехватке ресурсов в системе какой из перечисленных процессов android убьет в последнюю очередь, при условии, что ни один из процессов в данный момент не отображает видимого пользователю UI-интерфеса?
Процесс, в котором запущены три activity
Процесс, в котором запущен сервис и одна activity
Процесс, который не содержит ни одного запущенного компонента
Процесс, который занимает меньше всего памяти

В каких случаях пересоздается activity, созданная с параметрами по умолчанию?
После перезагрузки устройства
При выходе приложения из background
При повороте экрана

Основные компоненты приложения. Жизненный цикл приложения.

1. Как влияет количество запущенных в процессе компонентов на важность процесса с точки зрения Android?
Никак не влияет
Процесс с запущенными компонентам, важнее, чем процесс без компонент. Точное количество роли не играет
Чем больше компонентов — тем больше важность
Чем больше компонентов - тем меньше важность

2. Если печатать логи в каждом из перечисленных методов активити: onCreate, onStart, onResume, onPause, onStop, onDestroy, какие цепочки логов невозможны?
onStop -> onStart -> onResume -> onPause -> onResume
onStop -> onDestroy -> onCreate -> onStart
onCreate -> onStart -> onPause
onPause -> onCreate -> onStart

3. После вызова метода onResume, в каких случаях будет вызван метод activity onPause? (Нужно выбрать один НЕПРАВИЛЬНЫЙ вариант ответа )
При пересоздании activity
При уходе приложения в background
При показе приложением диалога (наследника DialogFragment)
При старте другой activity

4. Как влияет количество памяти, занимаемой процессом, на важность процесса с точки зрения Android?
Никак не влияет
Процессы, занимающие меньше 5Мб памяти более важные, чем процессы, занимающие больше 5Мб. Точное количество роли не играет.
Чем больше занятой памяти - тем больше важность
Чем больше занятой памяти - тем меньше важность

5. Как влияет время CPU, потребляемое процессом, на важность процесса с точки зрения Android?
Никак не влияет
Процесс, занимающий более 5% времени CPU - более важный, чем процесс занимающий менее 5% времени CPU. Точное количество роли не играет.
Чем больше времени CPU потребляет процесс - тем больше важность
Чем больше времени CPU потребляет процесс - тем меньше важность

6. Как влияет количество отображаемых процессом UI-элементов, видимых пользователю, на важность процесса с точки зрения Android?
Никак не влияет
Процесс отображающий видимые UI-элементы важнее, чем процесс не отображающий видимый UI. Точное количество роли не играет.
Чем больше видимых UI-элементов, тем больше важность
Чем меньше видимых UI-элементов, тем меньше важность


Intent'ы, IntentFilter'ы и BackStack Activity

Какой элемент приложения необязательно объявлять в AndroidManifest.xml?
Activity
Service
BroadcastReceiver
Application

Явным (explicit) называется Intent, который
Содержит категорию
Содержит класс получателя
Создан при помощи метода
Intent.createExplicit()
Содержит флаг Intent.FLAG_EXPLICIT

Класс PendingIntent используется для того, чтобы
Передать Intent в другой процесс
Сохранить Intent на диск
Запустить Intent в определённое время
Отправить Intent на другое устройство

Для запуска Activity в новом таске следует
Указать флаг Intent. FLAG_ACTIVITY_NEW_TASK
Указать у activity в AndroidManifest.xml атрибут taskAffinity
Выполнить оба действия

Какой launchMode нужно указать при объявлении activity в AndroidManifest.xml, чтобы activity всегда находилась в своём отдельном таске?
standard
singleTop
singleTask
singleInstance


Ресурсы приложения, модификаторы

Какие типы ресурсов поддерживает Android?
Только файлы
Только значения
Файлы и значения

Что собой представляет R.java?
Файл, используемый для поддержки проектов Eclipse IDE
Файл, используемый для поддержки Gradle
Файл, генерируемый AAPT, содержащий идентификаторы всех ресурсов приложения
Файл, генерируемый Android SDK, для поддержки локализации строковых ресурсов

Укажите, как выглядит ссылка на ресурс изображения "cat.png"?
R.drawable.cat
R,image.cat
R.color.cat
R.drawable.cat.png

В какой папке находятся звуковые ресурсы?
/assets и /res/raw
/res/sounds
/res/assets
/res

Укажите наиболее подходящий с точки зрения Android альтернативный ресурс ("cat.png"), в случае, если на устройстве установлена английская локаль, альбомная ориентация и меньшая сторона экрана меньше 720 dp.
/res/drawable/cat.png
/res/drawable-ru-land/cat.png
/res/drawable-sw720dp/cat.png

/res/drawable-land/cat.png


Хранение данных

Где должны храниться файлы приложения, доступ к которым должен быть только у этого приложения?
Internal Storage
External Storage
Shared Preferences
База данных

Какой тип данных нельзя сохранить в Shared Preferences?
Set<String>
int
ArrayList<String>
Integer

Какое из встроенных в платформу средств НЕ рекомендуется использовать для взаимодействия по HTTP протоколу?
URLConnection
Apache HTTP Client
Оба
Ни одно

Какая СУБД используется в Android-платформе?
MS SQL
SQLite
Postgre SQL
Oracle

Найдите НЕ правильное утверждение:
ContentProvider – компонент платформы помогающий инкапсулировать реализацию хранилища данных
ContentProvider может быть реализован только с использованием базы данных
CursorLoader помогает асинхронно получать данные из БД
Можно запретить доступ к ContentProvider-у другим приложениям

ContentProvider + Loader

Для чего нужны Loader-ы?
Загрузка данных через сеть
Упрощение организации асинхронного получения данных из любых источников
Упрощение организации асинхронного получения данных из ContentProvider-ов
Являются единственным способом получения данных из ContentProvider-ов

Для чего нужны ContentProvider-ы?
Являются рекомендованным способом абстрагирования работы с SQLite
Представляют API для доступа к ресурсам приложения
Является частью API Loader-ов
Для организации sharing-а данных между приложениями

Как использовать ContentObserver?
Передать, в качестве одного из параметров, Loader-у, чтобы отслеживать состояние загрузки данных
Зарегистрировать экземпляр в ContentResolver-е и переопределить необходимые методы
Запросить экземпляр внутри метода Activity.onCreated или Fragment.onActivityCreated и указать обработчик
Унаследовать класс ContentObserver и объявить его в манифесте

Какую функциональность добавляет AsyncTaskLoader к классу Loader?
Добавляет возможность асинхронной работы
Позволяет запускать Loader в любом ExecutorService
Добавляет возможность регистрировать ContentObserver для отслеживания изменения данных
В отличие от обычного Loader-а не пересоздается при изменении ориентации экрана

Что такое ContentResolver?
Это класс, который необходимо расширить для создания собственного ContentProvider-а
Обеспечивает доступ к ContentProvider-ам
Класс, позволяющий получить список URI всех доступных ContentProvider-ов
Это класс, который необходимо расширить для создания собственного ContentObserver-а

Service, BroadcastReceiver

Как запустить сервис?
только метод startService
только метод bindService
оба метода

Как передать данные в сервис?
Передать переменную в startService
Передать переменную в bindService
Bundle в интент методов startService, bindService

Когда метод onBind(Intent intent) должен вернуть null?
Всегда
Если он использует startService
Если сервис не использует bind механизм

Как остановить сервис? (выберите НЕПРАВИЛЬНЫЙ вариант ответа)
метод stopService
метод stopSelf
любой метод

Когда надо использовать IntentService?
Всегда
Для отдельных процессов
Для простой одиночной задачи

Уведомления

Когда нужно показывать нотификации?
Рекламное сообщение
Событие из календаря
Отображение информации о текущем количестве пройденных шагов
Сообщение об обновлении данных приложения

Когда не стоит использовать Heads-up нотификации?
Обновление приложения
Информация о разряде батареи телефона
Входящий звонок
СМС ообщение

Какие виды нотификаций существуют?
Диалоги, нотификации, тосты и снэкбары
Тосты, снэкбары, фрагменты и диалоги
Диалоги, тосты, снэкбары и СМС
Тосты, диалоги, снэкбары и интенты

Какого типа расширенного вида нотификаций не существует?
Отображение большой картинки
Отображение html страницы
Отображение списка строк
Расширенное текстовое описание события

Когда не нужно показывать нотификации?
Низкий заряд батареи телефона
Информация о входящем звонке
Информация о текущей проигрываемой мелодии
Приложение активно

Android Animation Framework

Какой движок анимаций является рекомендованным к использованию в настоящее время?
Drawable Animation
Property Animation
View Animation
Animator Framework

Какой движок анимации вы выберите для создания покадровой анимации?
Flip Animation System
Property Animation
Drawable Animation
View Animation

Что нужно сделать, чтобы получить эффект отскакивания для анимации перемещения виджета?
Задать для анимации BounceEvaluator
Задать для анимации BounceInterpolator
Задать несколько последовательных анимаций с помощью AnimatorSet

Какой самый простой способ сделать анимацию появления/удаления виджета?
Создать ObjectAnimator'ы для появления и удаления
Добавить аттрибут android:animateLayoutChanges="true" для предка виджета
Использовать упрощенный API — ViewPropertyAnimator

Анимации переходов между экранами с общим виджетом (transition with shared object) появились в:
Android Marshmallow
Android Lollipop
Android Kitkat

GooglePlayServices

Какие параметры приложения нужно указать в developer console для формирования API Key?
Ничего не нужно указывать, доступно всем приложениям у кого есть ключ
Достаточно указать имя пакета.
SHA1 Fingerprint от подписываемого ключа
Имя пакета + SHA1 Fingerprint от подписываемого ключа

Какой максимальный размер данных можно отправить в сообщении от сервера к мобильному приложению через PUSH уведомление?
Нет ограничений
8 кб
4 кб
2 кб

Какой из следующих пунктов не достигается с помощью Google Play Services?
Возможность автоматически обновлять на устройстве пользователя разработанную версию приложения при ее появлении в Google Play
Возможность обновления services через Google Play
Простота подключения Google Services
Размер приложения увеличивается минимально

Какая основная проблема решается, при делении Google Play Services на несколько подключаемых библиотек?
Приложение работает быстрее, если подключаться только нужные библиотеки
Код компилируется быстрее и размер выходного APK файла, имеет меньший размер
Нет лишних методов, которые не нужны разработчику. Тем самым решается проблема 65К+ методов
Ничего не решается, просто сделано для удобства подключения

Что произойдет с приложением, использующее Google Play Services, при запуске на устройстве и обращению к методам сервисов, где не установлены Google Play Services?
Ничего не произойдет, приложение запустится, но функционал будет не доступен
Приложение упадет, но если поставить проверку, которая будет определять отсутствие сервисов и предлагать пользователю их установить или обновить, то все будет нормально.
Операционная система автоматически определить по Android Manifest, что приложению требуется Google Play Services и перед запуском предложит пользователю установить последнюю версию.
Такого не может быть, так как на всех устройствах есть установленные Google Play Services


Android Support Library, Fragment Framework: декомпозиция приложения и практики навигации

Какой минимальный уровень API требуется для поддержки фрагментов?
3
7
11
21

Какая библиотека используется в том числе для поддержки фрагментов (и других API) в более ранних версиях Android?
Apache PhoneGap
Compatibility Toolkit
Mobile FragmentFramework
Android Support Library

Какой класс используется для программной работы с фрагментами?
FragmentManager
ViewLoader
FragmentRuntime
ActivityContext​​

Можно ли без написания Java кода декларативно определить разный пользовательский интерфейс для ландшафтного и портретного режимов работы приложения?
Да, можно
Нет, нельзя
Да, но только с использованием NDK
Да, но только с использованием Apache Cordova

Какое высказывание является верным?
Фрагменты и Activity имеют жесткую связь и фрагмент, созданный для одной Activity не может быть использован внутри другой
Activity может содержать несколько фрагментов
Фрагмент может содержать несколько Activity внутри себя
Можно использовать фрагменты без Activity