Разбор конкурса-квиза по Android со стенда hh.ru на Mobius 2019 Moscow

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

0juw1fvmmc6pktg1hcuj24giyb8.jpeg


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


Ответ


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

o8hoori7dyywnalyijb_5sqvgck.jpeg
wm3_oofhrswbtt6y8wo8nqhbh3y.jpeg


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


Ответ

Что прочитает конкретный read в многопоточной программе?


Пояснение

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


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

ii28fd2ig-ug02bea2anxk_9yn4.jpeg
-bpkhk9hckota7tfemttubsc04i.jpeg


Вопрос 3
Результатом выполнения следующего блока кода будет …

Observable.create { emitter ->
    try {
        throw Exception("whoa")
    } finally {
        emitter.onNext(1)
    }
}.subscribe { print("onNext $it + ") }

crgmmqu9nsse8jxq3uennumjbjk.jpeg


Ответ

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».


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

dls9j7sm1-wzafd-xyb3ic40h_s.jpeg
m7i_2mtex3cmt-b-l2elzvvasis.jpeg


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


Ответ

Lollipop 5.0


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

07gtobl0k6ivy6dnqqpzq0xiups.jpeg
nlab4wjjoidahowwfp79txzjyfs.jpeg


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


Ответ


Пояснение

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


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

jdgacruppvc6e1e_heau25p3hoo.jpeg
rhar4wfkwkd2ijisnxo8gtq-9b8.jpeg


Вопрос 6
Какого типа будет результат выражения в Kotlin?

mutableListOf() + mutableListOf()

ssteqfun6bt2jjr8sfnsuhw4c74.jpeg


Ответ


Пояснение

Ответ неочевидный, с первого взгляда логично, что результатом будет MutableList. Мы сами только недавно заметили такую особенность стандартной библиотеки Kotlin. Разбираемся почему именно так.
В Kotlin над коллекциями можно выполнять бинарные операции используя синтаксис a + b, что транслируется в a.plus (b). Метод plus для MutableList из исходников Kotlin:

public operator fun  Collection.plus(elements: Array): List {
    ..
}

То есть возвращаемый тип List, в нашем случае List. При этом тип второго mutableListOf указывать необязательно, Kotlin сам выведет тип по первому аргументу сложения.


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

ciqgkf-jr-_lrq997itnt9lnceu.jpeg
yxt9ag6r5xlh7kksxdceco6ulqc.jpeg


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


Ответ


Пояснение

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


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

7ius3a66nbcr8tct9d5soq8vge8.jpeg
m6ywqxlebdayab0ptms70gg02ms.jpeg


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


Ответ

Source over


Пояснение

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


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

dcedz0z0wrdlxdiflf1uc3wk21i.jpeg
mzoa1kgcd15mtont05m_wykdgpq.jpeg


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


Ответ


Пояснение

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


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

rfhfnruzhoztldz0qvuf8bhk2ky.jpeg
xxjnq-s2_lmhgi9peigzktouoom.jpeg


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


Ответ


Пояснение

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 не существует.


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

zszywo-vieglifwzf_hondcrf38.jpeg
6trayyn8w6mcvr53y1vpbddww1m.jpeg


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


Ответ

What a terrible failure!


Пояснение

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


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

s3j8lxler95zlxrmzefyrgcur60.jpeg
wjmgup0uyctlruiqux3xr8ydrao.jpeg


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


Ответ


Пояснение

С выходом 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 так и не вышли.


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

lc0wewxlx7xdbkokdh5z5o_e6pe.jpeg
2lfhnj8m1snjuqqgmjnkwawd6wu.jpeg


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


Ответ


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

6go083d07p4wnf1gjlxdcilxefo.jpeg
wcp7t7bbaermhbx4dstl7tfbjeo.jpeg


Вопрос 14
Какого раздела нет в приложении hh для соискателей?
byyxfwf4fdjyg1ki4d7sl-6huvo.jpeg


Ответ

Автопоиски


Пояснение

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


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

volmpqdmr1dcwj7nusuojlwgqfu.jpeg
gfmusxiovzs-whc4j8zh8qf8mqk.jpeg


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


Ответ

Изображение человека на двери уборной


Пояснение

«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


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

axjmnobev6p6opppgayp3zh2kcg.jpeg
-s-yuqjhnjmbfresb-l-iplk4b0.jpeg

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

© Habrahabr.ru