Am 7. und 8. Dezember ist eine Konferenz für Mobilfunkentwickler Mobius 2019 in Moskau erloschen. Die Berichte werden gelesen, die Gäste werden gefüttert, die Preise verlost, und hier ist die Analyse der interessantesten Fragen der drei Quiz'ov vom Stand hh.ru.

Frage 1
Welche physikalische Größe misst der Lichtsensor eines Smartphones?

Frage 2
Das Hauptproblem, das JMM löst

Die antwortWas liest ein bestimmter Lesevorgang in einem Multithread-Programm?
ErklärungLeider beantwortet der JMM die Frage "Wie schreibe ich Multithread-Programme richtig?" Nicht. Er gibt uns jedoch Auskunft darüber, wie das Speichermodell in Java aufgebaut ist, damit wir die richtigen Entscheidungen treffen können.
"Was schreibt ein bestimmter Schreibvorgang in einem Multithread-Programm?" ist nicht die richtige Antwort, da wir als Programmierer in der Regel am Ergebnis dieses Eintrags interessiert sind.
"Sein oder Nichtsein" ist ein Auszug aus dem berühmten Shakespeare-Monolog Hamlet und hat, wer hätte gedacht, nichts mit Multithread-Programmen zu tun.
Die letzte Option bleibt - "Was ein bestimmter Lesevorgang in einem Multithread-Programm liest", was die richtige Antwort ist.
Zum Thema JMM empfehlen wir Ihnen den Bericht von Alexei Shipilev "Pragmatic JMM"
Frage 3
Das Ergebnis des nächsten Codeblocks ist ...
Observable.create<Int> { emitter -> try { throw Exception("whoa") } finally { emitter.onNext(1) } }.subscribe { print("onNext $it + ") }

Die antwortonNext 1 + OnErrorNotImplementedException
ErklärungInnerhalb der Funktion create rufen wir einen try-finally-Block auf, in dem wir eine Ausnahme ("whoa") auslösen. Da es keinen catch-Block gibt, muss eine Ausnahme die Ausführung der Kette unterbrechen, und die Steuerung wird an den onError-Handler der Observer-Schnittstelle übergeben, wo Exception ("whoa") hätte sein sollen. Es gibt jedoch zwei wichtige Punkte.
Erstens: Wir haben einen finally-Block, der ausgeführt werden muss. Darin senden wir die Zeichenfolge "onNext 1" an den onNext-Handler, der diese Zeichenfolge in der Konsole mit dem Zusatz "+" anzeigt.
Und zweitens: Der onError-Handler ist in der subscribe-Funktion nicht definiert, sodass RxJava eine Ausnahme "io.reactivex.exceptions.OnErrorNotImplementedException" auslöst und diese auch an die Konsole ausgibt. Wir erhalten also die Zeichenfolge "onNext 1 + OnErrorNotImplementedException".
Frage 4
Welche der unten aufgeführten Android-Versionen wird am wenigsten von developer.android.com verwendet?

Frage 5
Welche Bibliothek hat NICHT 2 im Namen?

Frage 6
Welche Art wird das Ergebnis des Ausdrucks in Kotlin sein?
mutableListOf<Any>() + mutableListOf()

ErklärungDie Antwort ist nicht offensichtlich, auf den ersten Blick ist es logisch, dass das Ergebnis eine MutableList ist. Wir selbst haben erst kürzlich eine solche Funktion der Kotlin-Standardbibliothek bemerkt. Wir verstehen, warum das so ist.
In Kotlin können Sie binäre Operationen mit Auflistungen ausführen, indem Sie die Syntax a + b verwenden, die in a.plus (b) übersetzt wird . Die Plus-Methode für MutableList aus Kotlin-Quellen:
public operator fun <T> Collection<T>.plus(elements: Array<out T>): List<T> { .. }
Das heißt, der Rückgabetyp ist List <T>, in unserem Fall List <Any>. In diesem Fall ist der Typ des zweiten mutableListOf optional, Kotlin selbst leitet den Typ gemäß dem ersten Argument der Addition ab.
Frage 7
Welches Framework zum Testen von Android-Anwendungen auf der Benutzeroberfläche gibt es NICHT?

ErklärungEspresso ist eine Bibliothek von Google. Es wurde im Jahr 2013 veröffentlicht. Es hat eine ausführliche Syntax, Kakao hat sich freiwillig gemeldet, um dieses Problem zu lösen
Kakao bietet eine praktische Syntax zum Schreiben der Benutzeroberfläche mit Kotlin DSL und Espresso, mit der Sie das Seitenobjektmuster verwenden können .
Kaspresso ist noch einen Schritt weiter gegangen und löst die Probleme der Flash-Tests, der Protokollierung, der Verwendung von adb, der Arbeit mit Android-Betriebssystemen und der Erstellung von Screenshots. Vollständiger Testbericht für Kaspresso
Mokko - existiert nicht
Frage 8
Was für ein Mischmodus ist PorterDuff.Mode im Bild?


ErklärungPorterDuff.Mode, benannt nach Thomas Porter und Tom Duff, der 1984 den Artikel „Compositing Digital Images“ schrieb, der 12 Operationen zum Überlagern eines Bildes auf ein anderes beinhaltete. Mit PorterDuff.Mode können Sie nur die Ergebnisse dieser 12 Vorgänge abrufen.

Frage 9
Wie sieht der Standard-DatePickerDialog unter Android 10 aus?

Erklärung1 von Android 4.4
2 von Android 6.0 und höher
3 von Android 5.0
4 - ein Lieblingsmöbelstück in russischen Büros und ein Neujahrstraumgeschenk - Wandkalender
Frage 10
Das erste Google Android-Smartphone, das in Zusammenarbeit mit Telefonherstellern herausgebracht wurde

ErklärungGoogle Nexus ist eine Reihe von Smartphones von Google und Herstellungspartnern.
Nexus G1 gibt es nicht, aber es könnte mit dem ersten Android-Smartphone T-Mobile G1 oder HTC Dream verwechselt werden.
Nexus One produzierte auch HTC. Auf dem Smartphone wurde Android 2.1 ausgeführt.
Das Galaxy Nexus ist das dritte Smartphone der Nexus- Serie, das Google und Samsung gemeinsam entwickelt haben.
Nexus 11 Pro gibt es nicht.
Frage 11
Wie wird laut Dokumentation die Abkürzung wtf im Android-Logging-System (Log.wtf ()) entschlüsselt?

Die antwortWas für ein schrecklicher Misserfolg!
ErklärungDokumentation log.wtf
Wrestling Takedown Federation - Die 10. Folge der 13. Staffel der Serie "South Park".
Wtf ist auch eine Abkürzung für Internet-Slang, dessen Dekodierung den habr-Regeln widerspricht, aber Sie wissen bereits alles perfekt.
Frage 12
Was ist die neueste Version von Appcompat?

ErklärungMit der Veröffentlichung von AndroidX teilte Google Support-Bibliotheken und fügte ein neues Androidx-Paket hinzu, wobei eine neue Anzahl von 1 angegeben wurde. Dies bedeutet, dass die neueste Version von Appcompat jetzt in androidx.appcompat: appcompat enthalten ist und die neueste Version 1.1.0 aufweist.
Im Paket com.android.support:appcompat-v7 wurde die Bibliothek nur auf Version 28.0.0 aktualisiert. Die Versionen 29.0.0 RC und 29.0.0 wurden jedoch nie veröffentlicht.
Frage 13
So heißt das Android-Logo vom Google Android-Team.

Frage 14
Welcher Abschnitt ist nicht in der Bewerbung für Arbeitsuchende enthalten?

ErklärungEnde 2018 wurde eine umfassende Neugestaltung der Anwendung vorgenommen. Die automatische Suche wurde in Suchabo umbenannt. Das heißt, im Moment gibt es keinen Abschnitt mit dem Namen "automatische Suche".

Frage 15
Das Android-Symbol ist ein grüner Roboter. Der Autor des Logos ist Irina Block. Was hat sie inspiriert?

Die antwortBild eines Mannes auf einer Toilettentür
Erklärung"Am Ende ließ sie sich von einer ausgesprochen menschlichen Quelle inspirieren: den Piktogrammen des universellen Mannes und der universellen Frau, die oft an den Türen der Toilette auftauchen." The New York Times
Die Quizanalyse wurde von unserem Entwickler Georgy Ryabykh georgyR durchgeführt