7-8 декабря отгремела конференция для мобильных разработчиков Mobius 2019 Moscow. Доклады прочитаны, гости накормлены, призы разыграны, и вот п��ред вами разбор самых интересных вопросов из трех quiz’ов со стенда hh.ru.

Вопрос 1
Какую физическую величину измеряет датчик света в смартфоне?

Люкс
https://developer.android.com/guide/topics/sensors/sensors_environment.html

Единица измерения Illuminance (Освещённость) в СИ — лк (люкс)


Вопрос 2
Главный вопрос, который решает JMM

Что прочитает конкретный read в многопоточной программе?
На вопрос "Как правильно писать многопоточные программы" JMM, к сожалению, не отвечает, но дает нам информацию о том, как устроена модель памяти в Java, чтобы мы могли сами принимать правильные решения.
"Что запишет конкретный write в многопоточной программе?" не является правильным ответом, потому что, обычно нас, как программистов, интересует результат этой записи.
"Быть или не быть" — отрывок из знаменит��го монолога шекспировского Гамлета и, кто бы мог подумать, не имеет никакого отношения к многопоточным программам.
Остается последний вариант — "Что прочитает конкретный read в многопоточной программе", который и является правильным ответом.
На тему JMM рекомендуем посмотреть доклад Алексея Шипилева "Прагматичный JMM"


Вопрос 3
Результатом выполнения следующего блока кода будет …
Observable.create<Int> { emitter ->
try {
throw Exception("whoa")
} finally {
emitter.onNext(1)
}
}.subscribe { print("onNext $it + ") }
onNext 1 + OnErrorNotImplementedException
Внутри функции create мы вызываем блок try-finally, в котором бросаем исключение Exception("whoa"). Так как блок catch отсутствует, исключение должно прервать выполнение цепочки, и управление передается в обработчик onError интерфейса Observer, куда и должно было попасть Exception("whoa"). Но здесь есть два важных момента.
Первый: у нас есть блок finally, который должен обязательно выполнится. В нем мы отправляем строку “onNext 1” в обработчик onNext, который выводит эту строку в консоль с добавлением символа “+”.
И второй: в функции subscribe обработчик onError не определен, поэтому RxJava бросает исключение “io.reactivex.exceptions.OnErrorNotImplementedException”, и оно то��е выводится в консоль. Таким образом мы и получаем строку “onNext 1 + OnErrorNotImplementedException”.


Вопрос 4
Какую версию android из перечисленных используют меньше всего пользователей согласно developer.android.com?

Lollipop 5.0
https://developer.android.com/about/dashboards
Скриншот от 10.12.2019



Вопрос 5
Какая из библиотек на самом деле НЕ имеет в названии цифры 2?

Room2
Последняя версия Room — 2.2.2. Но в названии библиотеки цифры 2 нет.
Camera2
ViewPager2
Retrofit2


Вопрос 6
Какого типа будет результат выражения в Kotlin?
mutableListOf<Any>() + mutableListOf()
List<Any>
Ответ неочевидный, с первого взгляда логично, что результатом будет MutableList. Мы сами только недавно заметили такую особенность стандартной библиотеки Kotlin. Разбираемся почему именно так.
В Kotlin над коллекциями можно выполнять бинарные операции используя синтаксис a + b, что транслируется в a.plus(b). Метод plus для MutableList из исходников Kotlin:
public operator fun <T> Collection<T>.plus(elements: Array<out T>): List<T> {
..
}То есть возвращаемый тип List<T>, в нашем случае List<Any>. При этом тип второго mutableListOf указывать необязательно, Kotlin сам выведет тип по первому аргументу сложения.


Вопрос 7
Какого фреймворка для UI тестирования Android приложений НЕ существует?

Mokko
Espresso — библиотека от Google. Была выпущена в далеком 2013. Имеет многословный синтаксис, эту проблему вызвалась решить Kakao
Kakao предоставляет удобный синтаксис для написания UI используя Kotlin DSL и Espresso, позволяет использовать паттерн Page Object.
Kaspresso пошла еще дальше и решает проблемы флэкающих тестов, логирования, использования adb, работы с OS Android, создания скриншотов. Статья с полным обзором Kaspresso
Mokko — не существует


Вопрос 8
Что за режим наложения PorterDuff.Mode изображен на картинке?


Source over
PorterDuff.Mode названный в честь Томаса Портера и Тома Даффа, написавших в 1984 г. статью “Compositing Digital Images”, в рамках которой были представлены 12 операций наложение одного изображение на другое. PorterDuff.Mode как раз и позволяет получить результаты этих 12 операций.



Вопрос 9
Как выглядит стандартный DatePickerDialog на Android 10?

2
1 из Android 4.4
2 из Android 6.0 и выше
3 из Android 5.0
4 — излюбленный предмет интерьера в российских офисах и новогодний подарок мечты — настенный календарь


Вопрос 10
Первый android-смартфон Google выпущенный в сотрудничестве с производителями телефонов

Nexus One
Google Nexus — серия смартфонов от Google и партнеров-производителей.
Nexus G1 не существует, но можно было спутать с первый android-смартфоном T-Mobile G1 или HTC Dream.
Nexus One производила также HTC. Смартфон работал под управлением Android 2.1.
Galaxy Nexus третий смартфон серии Nexus, разработанный совместно Google и Samsung.
Nexus 11 pro не существует.


Вопрос 11
Как согласно документации расшифровывается сокращение wtf в системе логирования Android (Log.wtf())?

What a terrible failure!
Документация log.wtf
Wrestling Takedown Federation — 10-й эпизод 13-го сезона сериала «South Park».
Также wtf является аббревиатурой в интернет-сленге, расшифровка которой противоречит правилам habr, но вы и так все прекрасно знаете.


Вопрос 12
Какая последняя версия Appcompat?

1.1.0
С выходом AndroidX гугл разделил support-библиотеки и добавил новый пакет androidx, запустив новый отсчет с 1. Это означает, что последняя версия Appcompat теперь лежит в androidx.appcompat:appcompat и имеет последнюю версию 1.1.0.
В пакете com.android.support:appcompat-v7 библиотека обновилась только до версия 28.0.0. А версии 29.0.0 RC и 29.0.0 так и не вышли.


Вопрос 13
Именно так называют логотип Android сотрудники Google Android Team

Bugdroid


Вопрос 14
Какого раздела нет в приложении hh для соискателей?

Автопоиски
В конце 2018 был произведен большой редизайн приложения. И “автопоиски” были переименованы в “подписки на поиск”. То есть на текущий момент раздела с названием “автопоиски” нет.



Вопрос 15
Символ Android — зеленый робот. Автором логотипа принято считать Ирину Блок. Что послужило для нее вдохновением?

Изображение человека на двери уборной
“In the end, she took inspiration from a distinctly human source: the pictograms of the universal man and woman that often appear on restroom doors.” The New York Times


Разбор квиза произвел наш разработчик Георгий Рябых georgyR
