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
ссылка на оригинал статьи https://habr.com/ru/company/hh/blog/480950/
Добавить комментарий