company_banner

Разбор конкурса-квиза по 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

    HeadHunter
    HR Digital

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое