company_banner

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

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

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



Поехали!


Вопрос 1


Ответ
Astra boy/Bender


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

Источник

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





Вопрос 2


Ответ
Marshmallow


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

Источник

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


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





Вопрос 3


Ответ
measure()


Пояснения


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

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

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

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

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


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





Вопрос 4



Ответ
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.


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





Вопрос 5



Ответ
private static final int mobius = 2018


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


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





Вопрос 6


Ответ
sdpi


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

Источник.

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


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





Вопрос 7


Ответ
Упаковывает все ресурсы и файлы в 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 приложения в общих чертах приведен в документации.


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





Вопрос 8



Ответ
RIGHT OUTER JOIN


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

Источник.


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





Вопрос 9



Ответ
2x


Пояснения
Name Density
ldpi 0.75
mdpi 1
tvdpi 1.3
hdpi 1.5
xhdpi 2
xxhdpi 3 и 2.6
xxxhdpi 4 и 3.5



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





Вопрос 10


Ответ
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


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


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





Вопрос 11


Ответ
YAGNI


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

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

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

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


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





Вопрос 12


Ответ
Application Not Responding


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

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

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

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


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





Вопрос 13


Ответ
Size & mode


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

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

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

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


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





Вопрос 14


Ответ
Linux Kernel


Пояснения

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.


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





Вопрос 15


Ответ
invokeabstract


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

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

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

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


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



HeadHunter
148,00
HR Digital
Поделиться публикацией

Комментарии 0

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое