Les 7 et 8 décembre, une conférence pour les développeurs mobiles Mobius 2019 Moscou s'est éteinte. Les rapports sont lus, les invités sont nourris, les prix sont tirés au sort, et voici l'analyse des questions les plus intéressantes des trois quiz'ov du stand hh.ru.

Question 1
Quelle quantité physique le capteur de lumière d'un smartphone mesure-t-il?

Question 2
Le principal problème que JMM résout

La réponseQue lira une lecture particulière dans un programme multithread?
ExplicationMalheureusement, le JMM ne répond pas à la question "Comment écrire correctement des programmes multithreads", mais il nous donne des informations sur la façon dont le modèle de mémoire en Java est conçu afin que nous puissions prendre les bonnes décisions.
"Qu'est-ce qu'une écriture particulière écrit dans un programme multithread?" n'est pas la bonne réponse, car, en tant que programmeurs, nous sommes généralement intéressés par le résultat de cette entrée.
"Etre ou ne pas être" est un extrait du célèbre monologue shakespearien Hamlet et, qui aurait pensé, n'a rien à voir avec des programmes multithread.
La dernière option reste - "Ce qu'une lecture particulière lira dans un programme multithread", ce qui est la bonne réponse.
Au sujet de JMM, nous vous recommandons de voir le rapport d'Alexei Shipilev "Pragmatic JMM"
Question 3
Le résultat du prochain bloc de code sera ...
Observable.create<Int> { emitter -> try { throw Exception("whoa") } finally { emitter.onNext(1) } }.subscribe { print("onNext $it + ") }

La réponseonNext 1 + OnErrorNotImplementedException
ExplicationÀ l'intérieur de la fonction de création, nous appelons un bloc try-finally dans lequel nous lançons une exception Exception ("whoa"). Puisqu'il n'y a pas de bloc catch, une exception doit interrompre l'exécution de la chaîne et le contrôle est passé au gestionnaire onError de l'interface Observer, où Exception ("whoa") aurait dû avoir. Mais il y a deux points importants.
Premièrement: nous avons un bloc enfin qui doit être exécuté. Dans ce document, nous envoyons la chaîne «onNext 1» au gestionnaire onNext, qui affiche cette chaîne dans la console avec l'ajout du caractère «+».
Et le second: le gestionnaire onError n'est pas défini dans la fonction d'abonnement, donc RxJava lève une exception "io.reactivex.exceptions.OnErrorNotImplementedException", et il est également sorti sur la console. Nous obtenons donc la chaîne «onNext 1 + OnErrorNotImplementedException».
Question 4
Quelle version d'Android répertoriée ci-dessous est la moins utilisée par developer.android.com?

Question 5
Quelle bibliothèque n'a PAS réellement 2 dans le nom?

Question 6
De quel type sera le résultat de l'expression dans Kotlin?
mutableListOf<Any>() + mutableListOf()

ExplicationLa réponse n'est pas évidente, à première vue, il est logique que le résultat soit une MutableList. Nous avons nous-mêmes récemment remarqué une telle fonctionnalité de la bibliothèque standard de Kotlin. Nous comprenons pourquoi il en est ainsi.
Dans Kotlin, vous pouvez effectuer des opérations binaires sur des collections en utilisant la syntaxe a + b, qui se traduit par a.plus (b) . La méthode plus pour MutableList à partir de sources Kotlin:
public operator fun <T> Collection<T>.plus(elements: Array<out T>): List<T> { .. }
Autrement dit, le type de retour est List <T>, dans notre cas List <Any>. Dans ce cas, le type du second mutableListOf est facultatif; Kotlin lui-même déduira le type en fonction du premier argument d'addition.
Question 7
Quel cadre pour tester l'interface utilisateur des applications Android n'existe PAS?

ExplicationEspresso est une bibliothèque de Google. Il a été publié en 2013. Il a une syntaxe verbeuse, Kakao s'est porté volontaire pour résoudre ce problème
Kakao fournit une syntaxe pratique pour écrire l'interface utilisateur à l'aide de Kotlin DSL et Espresso, vous permet d'utiliser le modèle d' objet de page .
Kaspresso est allé encore plus loin et résout les problèmes de tests de clignotement, de journalisation, d'utilisation d'Adb, de travail avec Android OS, de création de captures d'écran. Article complet pour Kaspresso
Mokko - n'existe pas
Question 8
Quel type de mode de fusion est PorterDuff.Mode montré dans l'image?


ExplicationPorterDuff.Mode porte le nom de Thomas Porter et Tom Duff, qui ont écrit l' article «Compositing Digital Images» en 1984, qui comprenait 12 opérations de superposition d'une image sur une autre. PorterDuff.Mode vous permet simplement d'obtenir les résultats de ces 12 opérations.

Question 9
À quoi ressemble le DatePickerDialog standard sur Android 10?

Explication1 à partir d'Android 4.4
2 à partir d'Android 6.0 et supérieur
3 d'Android 5.0
4 - Un meuble préféré dans les bureaux russes et un cadeau de rêve du Nouvel An - Calendrier mural
Question 10
Le premier smartphone Google Android lancé en collaboration avec les fabricants de téléphones

ExplicationGoogle Nexus est une série de smartphones de Google et de partenaires de fabrication.
Le Nexus G1 n'existe pas, mais il pourrait être confondu avec le premier smartphone Android T-Mobile G1 ou HTC Dream .
Nexus One a également produit HTC. Le smartphone fonctionnait sous Android 2.1.
Le Galaxy Nexus est le troisième smartphone de la série Nexus développé conjointement par Google et Samsung.
Le Nexus 11 pro n'existe pas.
Question 11
Comment, selon la documentation, l'abréviation wtf est déchiffrée dans le système de journalisation Android (Log.wtf ())?

ExplicationDocumentation log.wtf
Wrestling Takedown Federation - Le 10e épisode de la 13e saison de la série "South Park".
Wtf est aussi une abréviation d'argot Internet, dont le décodage est contraire aux règles habr, mais vous savez déjà tout parfaitement.
Question 12
Quelle est la dernière version d'Appcompat?

ExplicationAvec la sortie d' AndroidX, Google a partagé les bibliothèques de support et ajouté un nouveau package androidx, en commençant un nouveau compte à partir de 1. Cela signifie que la dernière version d'Appcompat se trouve désormais dans androidx.appcompat: appcompat et possède la dernière version 1.1.0.
Dans le package com.android.support:appcompat-v7 , la bibliothèque a été mise à jour uniquement vers la version 28.0.0. Mais les versions 29.0.0 RC et 29.0.0 ne sont jamais sorties.
Question 13
C'est ainsi que le logo Android est appelé par l'équipe Google Android.

Question 14
Quelle section ne figure pas dans la demande hh pour les demandeurs d'emploi?

ExplicationFin 2018, une refonte importante de l'application a été effectuée. Et «recherche automatique» a été renommé «abonnement de recherche». C'est-à-dire qu'à l'heure actuelle il n'y a pas de section avec le nom "recherche automatique".

Question 15
Le symbole Android est un robot vert. L'auteur du logo est considéré comme Irina Block. Qu'est-ce qui l'a inspirée?

La réponseImage de l'homme à la porte des toilettes
Explication"Au final, elle s'est inspirée d'une source distinctement humaine: les pictogrammes de l'homme et de la femme universels qui apparaissent souvent sur les portes des toilettes." The New York Times
L'analyse du quiz a été réalisée par notre développeur Georgy Ryabykh georgyR