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

от автора

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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *