Analyse du deuxième concours de quiz Android sur le stand HeadHunter au Mobius 2018 Moscou

À l'extérieur de la fenêtre, il y a du printemps humide et de la neige fondante, mais à l'automne Mobius au stand HeadHunter, il faisait très chaud. Nous avons publié la première partie du quiz , aujourd'hui nous publions la seconde, afin que vous puissiez vous étirer la cervelle avant les futures conférences.
C'est parti!



C'est parti!



Question 1

La réponse
 

Explications
En général, Android a été initialement développé par Android Inc. Les créateurs ont prévu qu'il serait utilisé pour créer des «caméras intelligentes». En 2005, Google a acheté Android Inc et a changé le vecteur d'application de la plateforme vers les appareils mobiles.

"Exactement la même plate-forme et le même système d'exploitation que nous avons créés pour les caméras - sont devenus Android pour les téléphones mobiles", a déclaré le co-fondateur d'Android Andy Rubin.

Statistiques de réponse




Question 2

La réponse
 Android Debug Bridge 

Explications
ADB (Android Debug Bridge) est un outil en ligne de commande qui exécute des commandes sur des appareils Android. Il s'agit d'un programme client-serveur composé de trois composants:

- un client qui vous permet d'envoyer des commandes;
- un démon exécutant des commandes sur un appareil;
- Un serveur gérant les communications entre le client et le démon.

Statistiques de réponse




Question 3

La réponse
 Android Package 

Explications
APK (package Android) est un format de fichier exécutable d'archive pour Android. Fourni avec aapt (Android Asset Packaging Tool). Conditionnellement, le travail de cet utilitaire peut être divisé en deux étapes:
- Compilation. A ce stade, des ressources sont en cours de préparation: la classe R est générée, les ressources XML sont traduites au format binaire, traitement PNG, etc.
- Emballage (liaison). Tous les fichiers intermédiaires créés au stade de la compilation sont regroupés dans l'APK.

Le processus de création d'une application Android est décrit dans la documentation .

Statistiques de réponse




Question 4


La réponse
 Agera 

Explications
Agera est un cadre de programmation réactif pour Android. Non inclus dans JetPack.

Jetpack - un ensemble de bibliothèques qui simplifient le développement de nouvelles applications pour Android.

Slices - Modèles d'interface utilisateur pour l'intégration dans d'autres applications.

Android KTX est un ensemble de fonctionnalités d'extension Kotlin qui simplifient le développement Android.

La liaison de données est une technologie avec laquelle nous pouvons lier automatiquement des données directement dans du code XML.



Statistiques de réponse




Question 5


La réponse
 val hh = 1. 

Explications
La question était à l'horizon des langages de programmation.
L'option `hh = 1` se trouve en Python,` def hh = 1` - dans Groovy, et la dernière option - en Java, dans laquelle nous devons spécifier le type de données.

Statistiques de réponse




Question 6


La réponse
 Remote 

Explications
Normal - cette catégorie inclut des autorisations qui ne nécessitent pas l'accès à des données utilisateur confidentielles ou n'affectent pas le fonctionnement d'autres applications. Le système accorde automatiquement ces autorisations à l'application lors de l'installation et les utilisateurs ne peuvent pas les révoquer.

Signature - sont automatiquement fournis à l'application par le système lors de l'installation, ainsi que les autorisations normales. Cependant, la différence est que toutes les applications ne peuvent pas obtenir ces autorisations. Pour ce faire, il doit être signé avec le même certificat que l'application qui a annoncé cette autorisation.

Dangereux - cette catégorie comprend les autorisations qui nécessitent l'accès à des données utilisateur confidentielles ou peuvent affecter le fonctionnement d'autres applications.

Spécial est SYSTEM_ALERT_WINDOW et WRITE_SETTINGS.

La documentation

Statistiques de réponse




Question 7


La réponse
 Principle Of Least Astonishment 

Explications
Oh, ces cinq lettres.

Principe de responsabilité unique - une classe doit faire une chose.
O Principe de fermeture - les entités logicielles doivent être ouvertes pour l'expansion, mais fermées pour le changement.
Principe de substitution L iskov (principe de substitution Barbara Liskov) - le comportement de la classe héritière ne doit pas contredire le comportement spécifié par la classe parent.
Principe de ségrégation d'interface - les entités logicielles ne doivent pas dépendre de méthodes qu'elles n'utilisent pas
Principe d'inversion de la dépendance - Les abstractions ne devraient pas dépendre des détails. Les détails doivent dépendre des abstractions.

Mais «Principe du moindre étonnement» n'est pas inclus dans SOLID . Cette règle stipule que si la finalité d'un élément n'est pas claire, son comportement doit être attendu de l'utilisateur (principe de la moindre surprise).

Statistiques de réponse




Question 8


La réponse
 Slices 

Explications
À propos de la liaison de données et des tranches, nous avons parlé un peu plus haut. Toast et Snackbar sont des éléments de notification aux utilisateurs dans les applications Android et ne peuvent pas être intégrés dans d'autres applications. Bien que Toast puisse s'afficher après et après avoir réduit l'application, contrairement à Slices, il ne peut être intégré nulle part.

Statistiques de réponse




Question 9


La réponse
 64K 

Explications
La spécification du fichier dex limite le nombre total de méthodes pouvant être référencées à 65 536.
Dans les versions avec Dalvik à bord (époque pré-API 21), pour contourner cette limitation, il est nécessaire de connecter la bibliothèque multidex, qui devient une partie du fichier dex principal et contrôle l'accès au reste.
ART, à son tour, prend en charge le chargement de nombreux fichiers dex hors de la boîte. Lors de l'installation de l'application, ART analyse les fichiers classesN.dex et les compile en un seul fichier .oat pour une initialisation plus poussée de l'application.

Multidex

Statistiques de réponse




Question 10


La réponse
 onPostPause() 

Explications
onPostCreate () - appelé après avoir appelé onStart () et onRestoreInstanceState ()
onPostResume () - appelé après avoir appelé onResume ()
onResumeFragments () est une version fragmentée de la méthode onResume (). Appelé à l'intérieur de onPostResume (), après que l'onResume () ait appelé les fragments.

Statistiques de réponse




Question 11


La réponse
   

Explications
9-patch est une image .png standard dans laquelle les bords 1px contiennent des informations de service interprétées par le sous-système graphique Android comme suit:
les bordures gauche et supérieure définissent la zone de contenu qui sera étirée.
les bordures droite et inférieure définissent la zone dans laquelle le contenu sera placé.

Statistiques de réponse




Question 12


La réponse
 Zygote 

Explications
Zygote est l'un des composants clés de tout système Android. Il est responsable de l'initialisation, du démarrage des services système, du démarrage et de l'arrêt des applications utilisateur et de nombreuses autres tâches. Lors de l'initialisation, Zygote forme l'environnement d'exécution pour les applications Java (en chargeant toutes les classes Java du framework) et démarre les services système de haut niveau (WindowManager, ActivityManager, etc.), après quoi il se met en veille. Lors de la réception d'une demande de démarrage de l'application, Zygote se copie (fork) et lance l'application souhaitée au-dessus de la copie reçue de la machine virtuelle. Ce principe de fonctionnement vous permet de réduire la consommation de mémoire (Linux copie la mémoire de copie sur écriture pendant le fork) et accélère le démarrage de l'application (le fork du processus est beaucoup plus rapide que le démarrage d'une nouvelle machine virtuelle).

Statistiques de réponse




Question 13


La réponse
 Libraries 

Explications
Les niveaux de l'architecture Android ont été analysés dans le quiz précédent à la question 14.

Statistiques de réponse




Question 14


La réponse
  VM 

Explications
Il existe deux manières principales d'implémenter une machine virtuelle: la pile (Java, .Net CLR) et l' enregistrement (Lua VM, Dalvik VM). La principale différence entre les deux approches est le mécanisme utilisé pour écrire et recevoir les opérandes et les résultats d'exécution des commandes.

La pile VM utilise la pile pour stocker les opérandes. Les opérations reçoivent les données de la pile, les traitent et repoussent le résultat sur la pile selon la règle LIFO.

Register VM utilise des registres de processeur pour allouer des opérandes. Les instructions d'une telle machine virtuelle doivent contenir explicitement les adresses (registres) dans lesquelles les opérandes sont contenus.

En raison de cette différence, les instructions dans la machine virtuelle de registre sont plus rapides que les instructions similaires dans la machine virtuelle de pile, mais en moyenne, elles occupent plus de mémoire en spécifiant explicitement des opérandes.

Un autre avantage du registre VM est la possibilité de stocker la valeur calculée dans le registre, ce qui économise le temps nécessaire pour recalculer les expressions.

Raisons du choix d'une implémentation Dalvik VM comme machine virtuelle de registre ( vidéos ou diapositives (35.36)

Statistiques de réponse




Question 15


La réponse
 Z 

Explications
JNI - Interface native Java - offre la possibilité d'exécuter du code C / C ++ natif à partir de Java, et vice versa.
Pour appeler une fonction Java à partir du code C ++, vous devez décrire correctement sa signature. Supposons que nous voulons appeler une fonction:

 boolean f(String s) 

Ensuite, dans JNI, nous pouvons obtenir un lien vers celui-ci comme suit:

 jmethodID myFunc = env->GetMethodID( activityClass, "myFunc", "(Ljava/lang/String;)Z"); 

Concernant les types dans la description de la signature: 'B' est utilisé pour l'octet, 'C' est char, 'I' est int.

Signature de typeType Java
Zbooléen
Boctet
Cchar
Scourt
Jeint
Jlongue
Fflotter
Ddouble
L classe entièrement qualifiée;classe entièrement qualifiée
[typetapez []
(types-arg) type-rettype de méthode

( Source )

Il est curieux que le râteau avec «B» et «Z» soit apparemment si populaire que les quais Android indiquent clairement: «Rappelez-vous que« B »est octet et« Z »est booléen . »

Eh bien, nous nous souvenons)

Statistiques de réponse

Source: https://habr.com/ru/post/fr443786/


All Articles