Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow

в 15:10, , рубрики: android, mobius, mobius2018moscow, quiz, разбор задач, Разработка под android

Сегодня разбираем Android quiz с конференции для мобильных разработчиков Mobius 2018 Moscow.

Формат был довольно стандартный: 15 вопросов по 4 варианта ответа. Временной лимит 30 секунд на каждый вопрос.

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 1

Поехали!


Вопрос 1

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 2

Ответ

Astra boy/Bender

Пояснения

Всем известно, что каждая новая версия Android получает кодовое наименование на тему сладостей и присваиваются они в алфавитном порядке (Cupcake, Donut, Eclair и т.д.).
Однако, первоначально, разработчиками планировалось давать версиям названия, используя вымышленные имена роботов. Поэтому, первые версии Android носили имя Astra boy и Bender. Это были внутренние релизы еще до выпуска безымянной версии 1.0. Однако, по определенным причинам вектор сменился и версию 1.1 было решено назвать Petit Four. Это была первая сладкая версия Android. А уже начиная со следующей версии (Cupcake 1.5), имена начали присваивать соблюдая алфавитный порядок.

Источник

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 3

Вопрос 2

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 4

Ответ

Marshmallow

Пояснения

С выходом API 23 (Marshmallow) в Android ввели новое понятие runtime permissions. Эта фича должна была добавить прозрачности для пользователей к разрешениям выдаваемым приложению. До релиза “зефирки” выдача разрешений происходила в момент установки приложения.

Источник

На заметку, Android содержит в себе более 100 уникальных permissions.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 5

Вопрос 3

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 6

Ответ

measure()

Пояснения

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 7

measure() — вызывается для определения требований к размеру View и всех его дочерних элементов.

onMeasure() — вызывается из measure() для проведения фактической работы по определению размеров View.

onLayout() — вызывается для расположения элемента внутри контейнера

onDraw() — вызывается для отрисовки View контента.

Более подробную информацию по отрисовке View можно найти здесь.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 8

Вопрос 4

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 9

Ответ

isUserSmell()

Пояснения

В SDK отсутствует метод isUserSmell(). Возможно в будущем, с появлением на устройствах соответствующих датчиков…

Разберем что же делают остальные методы:

isUserMonkey() — метод предназначен для проверки является ли пользователь тестовым в рамках автоматизированного теста monkey.

isUserAGoat() — начиная с API 21, проверяет установлено ли приложение Goat Simulator GoatZ (“Симулятор козла”). На версиях ниже, метод всегда возвращает false. Располагается в классе android.os.UserManager.

isFinalCountdown() — метод открывает клип группы Europa «The Final Countdown». Добавили его в API 26. Расположен в классе android.widget.Chronometer.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 10

Вопрос 5

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 11

Ответ

private static final int mobius = 2018

Пояснения

Здесь проверялось знание ключевого слова const, которое используется для объявления compile time constants. В мире Java это соответствует модификаторам static final.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 12

Вопрос 6

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 13

Ответ

sdpi

Пояснения

Если xhdpi и mdpi у разработчиков на слуху, то с tvdpi дела обстоят иначе. Популярности оно не снискало, а потому и устройств в категории tvdpi очень и очень мало, но они были. Наиболее известное из них — Nexus 7 (2012).

Источник.

На заметку, tvdpi имеет коэффициент 1.3 относительно mdpi.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 14

Вопрос 7

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 15

Ответ

Упаковывает все ресурсы и файлы в apk

Пояснения

AAPT (Android Asset Packaging Tool) — Android инструмент для создания .APK файлов.

Условно работу этой утилиты можно разделить на два этапа:
— Компиляция. На данном этапе идет подготовка ресурсов: генерируется класс R, ресурсы XML переводятся в бинарный формат, производится обработка PNG и пр.
— Упаковка (линкование). Все промежуточные файлы, созданные на этапе компиляции, упаковываются в APK.

Что касается остальных вариантов ответа:
— обфускацией кода обычно занимается proguard.
— Java байт-код является результатом работы Java Compiler, который транслирует исходный код в Java байт-код.
— Dalvik байт-код является результатом работы Dalvik Compiler (DX, D8), который транслирует .class (Java байт-код) в .dex (Dalvik байт-код). Исходный код в Dalvik байт-код не транслируется напрямую.

Процесс сборки Android приложения в общих чертах приведен в документации.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 16

Вопрос 8

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 17

Ответ

RIGHT OUTER JOIN

Пояснения

Из перечисленного не поддерживается RIGHT OUTER JOIN.

Источник.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 18

Вопрос 9

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 19

Ответ

2x

Пояснения

Name Density
ldpi 0.75
mdpi 1
tvdpi 1.3
hdpi 1.5
xhdpi 2
xxhdpi 3 и 2.6
xxxhdpi 4 и 3.5

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 20

Вопрос 10

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 21

Ответ

ART

Пояснения

ART (Android RunTime) — новая среда исполнения DEX байт-кода, пришедшая на смену Dalvik. Наиболее существенным отличием Dalvik от ART является то, что Dalvik основан на JIT (Just-in-Time) компиляции, в то время как ART — на AOT (Ahead-of-Time). В общих чертах это означает, что Dalvik переводит dalvik байт-код в машинный всякий раз во время выполнения приложения, а ART занимается этим один раз, на этапе установки приложения, сохраняя результат в памяти устройства. Это приводит к тому, что на ART происходит более быстрый запуск и выполнение приложений по сравнению с Dalvik, но при этом увеличивается время установки приложения. Помимо этого в ART провели оптимизацию GC, а также добавили ряд функций для улучшения разработки и отладки приложений.

ART и Dalvik

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 22

Кроме того, стоит отметить, что ART также включает в себя JIT компилятор, который дополняет AOT. Подробнее об этом здесь.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 23

Вопрос 11

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 24

Ответ

YAGNI

Пояснения

KISS (Keep It Simple, Stupid) — не усложняй!

DRY (Don’t repeat yourself), DIE (Duplication Is Evil) — не повторяйся!

WTF (количество “чёзана” в секунду) — единица измерения качества кода на ревью.

YAGNI (You aren't gonna need it) — вам это не понадобится!

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 25

Вопрос 12

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 26

Ответ

Application Not Responding

Пояснения

ANR (Application Not Responding) — проблема, возникающая при невозможности основного потока приложения обрабатывать пользовательские события и перерисовывать UI.

В Android за отзывчивостью приложения наблюдают системные сервисы ActivityManager и WindowManager. Если выполнится одно из нижеперечисленных условий:

— нет реакции на события ввода (touch и key pressed события),
— BroadcastReceiver не завершит выполнение в течение 10 секунд,

то система уведомит пользователя о проблеме, показав соответствующий диалог ANR.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 27

Вопрос 13

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 28

Ответ

Size & mode

Пояснения

MeasureSpec предназначен для передачи требований к размерам от родителя к дочерним view компонентам. Эти требования составляются по двум измерениям: ширина и высота. Значения по каждому из измерений являются составными: первая часть содержит в себе информацию о доступном пространстве (в пикселях), вторая часть — ограничения на использование доступного пространства. Эти ограничения могут быть следующими:

MeasureSpec.UNSPECIFIED — ограничений нет, view может принимать любой размер, который ей потребуется.

MeasureSpec.AT_MOST — определены точные размеры, view будут даны именно эти границы.

MeasureSpec.EXACTLY — определены максимальные размеры. View может быть настолько большим, насколько хочет, но до указанного размера.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 29

Вопрос 14

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 30

Ответ

Linux Kernel

Пояснения

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 31

Linux Kernel (ядро линукс) — этот слой обеспечивает функционирование системы и отвечает за безопасность, управление памятью, процессами, а также предоставляет сетевой стек и модель драйверов (Display Driver, Camera Driver и другие драйвера).

Libraries (библиотеки) — это промежуточный слой программного обеспечения, предназначенный для обеспечения базового функционала для приложений, таких как поддержку файловых форматов, осуществление кодирования и декодирования информации (например, кодеки), отрисовку графики и многое другое (Surface Manager, Media Framework, SQLite и др.).

Android Runtime — располагается на одном уровне с Libraries. Ключевыми компонентами здесь являются Dalvik VM и ряд библиотек ядра (Core Libraries).

Application Framework — уровень каркаса приложений. Именно через каркасы приложений разработчики получают доступ к API, лежащими ниже уровнем. Сюда входят: ActivityManager, Package Manager, Window Manager и др.

Applications — уровень приложений, как базовых (предустановленных на ОС: браузер, календарь, контакты и пр.), так и установленных пользователем.

На заметку, авторы квиза олдскулы, т.к. в официальной документации слои выделены иным способом: source.android.com/devices/architecture.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 32

Вопрос 15

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 33

Ответ

invokeabstract

Пояснения

goto — переход к другой инструкции.

invokeinterface — используется для вызова методов интерфейса.

invokestatic — используется для вызова static-методов.

Описание остальных инструкций.

Статистика ответов

Разбор конкурса-квиза по Android со стенда HeadHunter на Mobius 2018 Moscow - 34

Автор: dv1zh0k

Источник

* - обязательные к заполнению поля