Pull to refresh
140.64
hh.ru
HR Digital

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

Reading time5 min
Views1.6K

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

Tags:
Hubs:
Total votes 10: ↑9 and ↓1+8
Comments0

Articles

Information

Website
hh.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия