Maison  >  Article  >  Partage de questions d'entrevue avec Baidu Android

Partage de questions d'entrevue avec Baidu Android

藏色散人
藏色散人avant
2020-07-31 14:23:563198parcourir

Recommandé : "Résumé des questions d'entretien Android 2020 [Collection] "

1, Android dvm et Linux processus, Si les processus de candidature sont le même concept

DVMRéfère à la machine virtuelle de dalivk. Chaque application Android s'exécute selon son propre processus et dispose d'un Dalvik Virtuel indépendant instance de machine. Et chaque DVM est un processus sous Linux , il peut donc être considéré comme le même concept.

2, simQuelle est la fonction du fichier bloquéEF fichier

simLe système de fichiers de la carte a ses propres spécifications, principalement pour la communication avec les téléphones portables, sim lui-même peut avoir son propre système d'exploitation, EF est utilisé pour le stockage et la communication avec les téléphones mobiles

3, quels sont les types de gestion de la mémoire du système d'exploitation embarqué et quelles sont leurs caractéristiques ?

Page, paragraphe, page de paragraphe, en utilisant MMU,Espace virtuel et autres technologies

4, Qu'est-ce que Système d'exploitation temps réel embarqué , Android Le système d'exploitation est-il un système d'exploitation temps réel 🎜>?,

Le système d'exploitation en temps réel intégré signifie que lorsque des événements ou des données externes sont générés, il peut les accepter et les traiter à une vitesse suffisamment rapide, et les résultats du traitement peuvent contrôler la production dans le délai spécifié. Processus ou système d'exploitation intégré qui répond rapidement au système de traitement et contrôle toutes les tâches en temps réel pour s'exécuter de manière coordonnée. Principalement utilisé dans le contrôle industriel, les équipements militaires, l'aérospatiale et d'autres domaines qui ont des exigences strictes en matière de temps de réponse du système, ce qui nécessite l'utilisation de systèmes en temps réel. Il peut être divisé en temps réel doux et temps réel dur, et android
est basé sur linux Kernel, donc c'est du soft temps réel. 5

, combien coûte le message court le plus long octet ?Chinois70(

Y compris la ponctuation ), anglais 160 octets 6

, android, et quelles sont leurs caractéristiques et différences ? Deux types, l'un est l'animation Tween

, et l'autre L'animation le genre est une animation Frame. Tween animation, cette implémentation peut faire bouger, agrandir, rétrécir le composant de vue et produire un autre Frame L'animation, une méthode d'animation traditionnelle, est réalisée en jouant séquentiellement des images disposées, semblables à un film.

7, gestionnairePrincipe du mécanisme

andriod fournit Handler et Looper pour répondre à la communication entre les fils. Gestionnaire Principe du premier entré, premier sorti. La classe Looper est utilisée pour gérer l'échange de messages entre objets au sein d'un fil de discussion spécifique (Message Exchange).
1
)Looper : Un fil de discussion peut engendrer un Looper, qui gère la Message Queue(Message Queue dans ce fil ).
2
)Handler : Vous pouvez construire Handler objet de communiquer avec Looper afin de pousser nouveaux messages arriver à la Message Queue ou recevoir du Looper de File d'attente des messagesRécupérez le message envoyé par ).
3
) File d'attente des messages(File d'attente des messages) : est utilisé pour stocker les messages mis par les fils de discussion.
4
) Sujet : Fil de l'interface utilisateur généralement thème principal, et Android créera un File d'attente des messages.

8, parlez demvc Le principe du motif , son application dans android

MVC(Model_view_controller) » Modèle_Vue _Contrôleur. MVCUne application se compose toujours de ces trois parties. Événement(Événement) résultats dans ContrôleurChangerModèle ou Voir , ou modifiez les deux en même temps. Tant que le Contrôleur modifie les données ou les propriétés des Modèles, tous dépendants Vue sera mise à jour automatiquement. De même, tant que Contrôleur change Vue, View se rafraîchira en obtenant les données du Modèle sous-jacent.

VueLe redessinage et les fuites de mémoire semblent être des questions fréquemment posées lors des entretiens
1. Actualiser la vue :

Utilisez là où vous devez rafraîchir , poignée. sendmessageEnvoyer un message, puis dans handle Le getmessage de est exécuté en invalidate ou post-invalidation.

2.GCFuite de mémoire
Occurrence :
1.
curseur de la base de données Pas de fermeture
2.
Constructionadaptateur Lorsque , n'utilise pas de cachecontentview
dérivé Problèmes d'optimisation de listview-----Réduire la création afficher les objets , utiliser pleinement contentview, Vous pouvez utiliser une classe statique pour optimiser le processus de getview/
3. Bitmap
Utilisez recycle() pour libérer de la mémoire lorsque l'objet n'est pas utilisé
4. Le cycle de vie de l'objet en activité
est supérieur à l'activité
méthode de débogage  : DDMS==> HEAPSZIE==>dataobject==>[Taille totale]

Un Cycle de vie de l'activité
Deux Laissons l'Activité devenir une fenêtre : ActivitéParamètres de propriété
Trois Votre arrière-plan Activité est bloqué par le système
Que faire du recyclage : onSaveInstanceState
quatre appel Invoqué avec : Notre Messager - Intention
Un Vie cycle d'Activité et autres téléphones portables

La plateforme possède les mêmes applications que AndroidLe cycle de vie de l'application est uniformément contrôlé, ce qui signifie que le sort de l'application que nous écrivons est entre les mains d'autrui (système). Nous ne pouvons pas la changer, nous pouvons seulement l'apprendre et nous y adapter.

Laissez-moi vous expliquer brièvement pourquoi c'est le cas : lorsque notre téléphone mobile exécute une application , , il peut y avoir appels entrants. Lorsqu'un message texte est envoyé au téléphone ou que la batterie est déchargée, le programme sera interrompu à ce moment-là et la priorité sera donnée aux fonctions de base du téléphone. ne vous permet pas d'occuper trop de ressources. Au moins la fonction téléphonique doit être garantie ,Ainsi, lorsque les ressources sont insuffisantes, vous risquez d'être tué. Plus près de chez nous, le cycle de vie de base de l'Activité est tel qu'indiqué dans le code suivant :

Java Code

public class MyActivity extends Activity{
    protected void onCreate(Bundle savedInstanceState);
    protected void onStart();
    protected void onResume();
    protected void onPause();
    protected void onStop();
    protected void onDestroy();
}

Écrit par vous-mêmeL'activitésera répétée selon les besoins contient ces méthodes, onCreate est inévitable, dans une Activité Lors du démarrage normal, l'ordre dans lequel ils sont appelés est onCreate -> onStart ->onResume, dans L'activité est tuée dans l'ordre de onPause -> onStop -> onDestroy , c'est un complet cycle de vie, mais quelqu'un a demandé, un appel est arrivé pendant que le programme était en cours d'exécution, que dois-je faire avec ce programme ? Elle est interrompue. Si la nouvelle Activité est en plein écran lorsqu'elle est interrompue, alors : onPause->onStop , lors de la reprise de onStart->onResume , si la personne qui a interrompu cette application est un Le thème est Translucide ou Dialogue de Activité puis juste en Pause, lors de la restauration de onResume . Présentons en détail ce que fait le système et ce que nous devons faire dans ces méthodes :
onCreate :
Créez une interface ici et effectuez quelques initialisations de données travail
onStart :
À ce stade, il devient visible et non interactif pour l'utilisateur
onResume :
Il devient interactif avec l'utilisateur Oui, (dans activité le système de pile gère ces Activités en haut, après avoir exécuté et éclaté la pile, revenez à l'Activité)onPause :
à Cette étape est visible mais non interactive. Le système arrêtera les animations et autres choses qui consomment du CPU de la description. ci-dessus Nous savons déjà que certaines de vos données doivent être enregistrées ici , car à ce moment la priorité de votre programme est réduite et il peut être repris par le système. Les données enregistrées ici doivent être lues dans onResume Remarque : le temps nécessaire pour faire les choses dans cette méthode doit être court, car le prochain <.>activité n'attendra pas la fin de cette méthode avant de démarrer onstop :
devient invisible , couvert par la prochaine activitéonDestroy :

C'est la dernière méthode appelée avant que l'activité ne soit tuée. Elle peut être appelée par une classe externe Méthode finish ou le système la tue temporairement pour économiser de l'espace, vous pouvez utiliser isFinishing() pour en juger, si vous avez un dialogue de progression qui tourne dans le fil, veuillez appeler onDestroy annuler, sinon lorsque le fil de discussion se termine, appelez Dialogcancel de 🎜> lèvera une exception. onPause, onstop, onDestroy , dans les trois états l'activité peut être supprimée par le système Afin de garantir l'exactitude du programme, vous devez effectuer onPause ()Écrivez le code de l'opération de couche de persistance pour enregistrer le contenu modifié par l'utilisateur sur le support de stockage (généralement sont toutes des bases de données). Dans le travail réel, de nombreux problèmes sont causés par des changements dans le cycle de vie. Par exemple, si votre application a un nouveau thread en cours d'exécution et qu'il est interrompu à ce moment-là, vous devez toujours maintenir ce thread, que ce soit pour le suspendre ou le supprimer. 🎜> C'est toujours un rollback de données, non ? Parce que Activity peut être tué, vous devez donc faire attention aux variables et à certains éléments d'interface utilisés dans le fil. Généralement, j'utilise Android mécanisme de message [Handler,Message] pour gérer les questions de multi-threading et d'interaction d'interface. J'en parlerai plus tard, car ces choses sont devenues très populaires récemment, je les partagerai donc avec vous après avoir vidé mon esprit.

Deux Laissez Activité devenir une fenêtre : ActivitéParamètres de propriété

Parlons-en à la légère ,Certaines personnes voudront peut-être créer une application qui flotte sur l'interface principale du téléphone . , alors c'est très simple Il vous suffit de définir le thème de l'Activité. Voici une phrase où Activité est définie dans AndroidManifest.xml  : 🎜> >android:theme="@android:style/Theme.Dialog"
Cela fera apparaître votre candidature dans le formulaire d'une boîte de dialogue, ou android:style/Theme.Translucent"


deviendra translucide, [Rappel amical-.-]
Similaire à ceci

Les attributs de l'activité peut être trouvé dans la classe android.R.styleable AndroidManifestActivity Comme on le voit dans le méthode, l'introduction des attributs de tous les éléments dans AndroidManifest.xml peut faire référence à cette classe android.R.styleableCe qui précède est le nom de l'attribut. La valeur spécifique est en android.R.style
Vous pouvez voir, comme ceci"@android:style/Theme.Dialog" Correspond à android.R.style.Theme_Dialog, ('_' Remplacer par '.' <--Remarque : ceci est le contenu de l'article, pas un visage souriant) et il peut être utilisé dans la description fichier
Si vous appuyez sur , vous comprendrez en cherchant la relation correspondante dans le fichier de définition et de description de classe .

Trois Que faire si votre background Activité est recyclé par le système : onSaveInstanceState

Lorsqu'une certaine Activité A de votre programme est en cours d'exécution, exécutez activement ou passivement une autre nouvelle Activité B À ce moment A exécutera JavaCode
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong( "id", 1234567890);
}
public void onSaveInstanceState(Bundle outState) {
B
Vous reviendrai une fois terminé A, Il y a deux situations en ce moment, l'une est que A est recyclé, et l'autre est qu'il n'est pas recyclé , si est renvoyé, A doit être rappelé à nouveau méthode onCreate(), différente du démarrage direct, cette fois onCreate() est Bring les paramètres saveInstanceState, et ceux qui n'ont pas été récupérés sont toujours onResume .
saveInstanceState
est un objet Bundle Vous pouvez essentiellement le comprendre comme un géré par le système pour vous. Objet Carte. Vous pouvez l'utiliser dans onCreate() S'il démarre normalement, onCreateIl n'y en aura pas, il faut donc vérifier s'il est vide lors de son utilisation. Java
Codeif(savedInstanceState !=null){
identifiant long =savedInstanceState .getLong("id");
}
if(savedInstanceState !=null){

Tout comme le Notepadtutoriel
, vous éditez une certaine note , s'il est interrompu soudainement, alors mettez cette note id N'oubliez pas que lorsque vous vous relèverez, vous pouvez utiliser cet identifiant pour l'obtenir note Sortez-le et le programme sera plus complet. Cela dépend également si votre application doit enregistrer quelque chose. Par exemple, si votre interface doit lire une liste, alors il n'est pas nécessaire de se souvenir de quoi que ce soit en particulier, oh,
Peut-être devez-vous vous souvenir de la position de la barre de défilement...

Quatre Appeler et être appelé : Notre messager Intention

va a ditIntention , Intention est cette intention. Les applications Intention communiqueront et ouvriront un appel. être envoyé à Intent, C'est AndroidL'essence du couplage lâche de l'architecture améliore grandement la réutilisabilité des composants. Par exemple, si vous souhaitez cliquer sur un bouton de votre application pour appeler quelqu'un, c'est très simple jetez d'abord un œil au code : Java
Code :Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL) ;
intent. setData(Uri.parse("tel:"+ number));
startActivity(intent);
Copier le code
Jetez une telle intention, le système voit votre intention et réveille le composeur téléphonique pour passer un appel. Pour lire des contacts, envoyer des messages texte ou des e-mails, il vous suffit de supprimer l'intention Cette partie est vraiment bien conçue.
PuisIntentionComment indiquer au système qui doit accepter Et lui ? Il existe généralement deux façons d'utiliser Intent La première consiste à indiquer directement quelle classe est nécessaire pour recevoir le code comme suit : .  : Java
CodeIntent intent = new Intent(this,MyActivity.class);
intent.getExtras( ).putString( "id","1");
startActivity(intent);
Intent intent = new Intent(this,MyActivity.class);intent.getExtras().putString("id"," 1"); tartActivity(intent);
Copier le codeLa première façon est évidente, précisez directement MyActivity comme destinataire , et transmis quelques données à MyActivity, dans MyActivity peut être utilisé dans getIntent() pour arriver iciintent et des données.
La deuxième option est de jeter un œil à AndroidMenifest intentfilter est configuré avec le
Xml
code

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:value="android.intent.action.EDIT" />
<action android:value="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:value="android.intent.action.EDIT" />
<action android:value="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
</intent-filter>

这里面配置用到了action, data, category这些东西,那么聪明的你一定想到intent里也会有这些东西,然后一匹配不就找到接收者了吗?action其实就是一个意图的字符串名称。
Haut Section Nouillesintent-filter montre que cette Activité peut accepter différentes Action , bien sûr, la logique du programme correspondant est également différente ,Mentionnez cela mimeType, Il est défini dans ContentProvider Si vous en implémentez un vous-🎜>ContentProviderVous savez. , vous devez spécifier mimeType pour permettre aux données d'être utilisées par d'autres. Je ne sais pas si le principe est clair. Pour résumer, on n'appelle pas d'autres interfaces directement nouvelle cette interface, mais en lançant un intention, laissez le système vous aider à appeler cette interface, elle est si faiblement couplée et elle est conforme au principe selon lequel le cycle de vie est géré par le système. Vous voulez savoir ce que contient catégorie, Android est pré-personnalisé pour vous actionetc., veuillez visiter le lien officiel en personneIntentionps : Étudiants qui veulent savoir comment appeler les applications système peuvent examiner de plus près votre logcat pour voir s'il y a des informations à chaque fois que vous exécutez un programme, comme comme  :

Starting activity: Intent {action=android.intent.action.MAINcategories={android.intent.category.LAUNCHER}flags=0x10200000comp={com.android.camera/com.android.camera.GalleryPicker} }

再对照一下Intent的一些set方法,就知道怎么调用咯,希望你喜欢:)

Un, listviewComment l'avez-vous optimisé ?
Deux, Actualisation de la vue, comme mentionné précédemment
Trois, IPCet principes
Quatre, Android Multi-threading
Cinq, AndroidPourquoi concevoir4 Les gros composants, la connexion entre eux, ne peuvent-ils pas être conçus (principalement pour réaliser le modèle MVC , Cependant, le mode le plus difficile en java est aussi celui-ci, et peu de produits peuvent bien faire ce mode [ Le intervieweur chez Technicolor a demandé ceci])
Six, service cycle, cycle d'activité, parlez de vos réflexions sur Compréhension des applications internes d'Android, telles que les applications de téléphone, et de contacts. Il y a beaucoup de choses dans la couche framework, il est donc préférable d'en savoir plus sur la manière dont Android est effectué. ou le développement de la couche de cadre d'application, cela sera très bénéfique.
Voici votre expérience de projet, mettant en évidence les difficultés que vous avez rencontrées et comment vous les avez résolues ! Essayez de mettre en évidence chaque point technique. Bien entendu, l'intervieweur vous posera parfois des questions telles que le module que vous avez utilisé dans cette application et le nombre de cours que vous avez utilisés pour montrer si vous l'avez réellement fait. Parfois, certains intervieweurs vous demanderont si vous avez utilisé le test unitaire intégré d'Android et comment l'utilisez-vous ? Bien sûr, j'ai interviewé de nombreuses entreprises, dont certaines fabriquent des tablettes, des téléphones portables, des téléviseurs numériques, et d'autres font des clients tels que erp, etc. Les trois premiers consistent essentiellement à changer tout Android Si vous voulez vraiment le faire, . Android, tout le monde a encore beaucoup à apprendre. Bref En un mot, il existe toutes sortes d'enquêteurs Quand on se présente à l'entretien, il faut être préparé mentalement, qu'il soit technique ou basique. . solide. La capacité de conversation d'une personne est également très importante. De toute façon, ce n'est pas un mandarin très standard. L'explication du fonctionnaire est très approfondie, vous avez donc plus de chances d'obtenir une offre, et vous aurez également un avantage dans la négociation du salaire~~Bien sûr, un intervieweur d'une entreprise m'a dit un jour que la technologie ne coûte pas d'argent, tant que vous en avez la capacité, peu importe combien c'est. Il les a tous invités.

1. Comment actualiser la vue ?
2. Quelle est la différence entre DDMS
et TraceView ?
3. Que dois-je faire si l'activité
est recyclée ?
4. Comment introduire
Java

🎜>C Langue ? Réponse de référence
 :La vue peut être. appelé
invalidate() et postInvalidate()Ces deux méthodes actualisent2.DDMS est une visionneuse d'exécution de programme, dans laquelle vous pouvez voir des informations telles que les threads et les piles,
TraceView est un analyseur de performances de programme3. L'activité est recyclée, alors il n'y a pas d'autre choix que de démarrer une. le nouveau
4.java appelle le programme de langage
C, vous pouvez utiliser l'interface JNI pour implémenter la La réponse ci-dessus est pour référence seulement. Après tout, mes capacités personnelles sont limitées, donc il est inévitable que vous donniez de mauvaises réponses, haha
......Réponse :
1. La vue
est soumise à l'actualisation du système (il y a une boucle à l'intérieur du système à surveiller). événements et faire des affaires (traitement, dessin UI), vous pouvez utiliser postInvalidate() pour inviter le système à actualiser .
2.
(Je ne sais vraiment pas)
3.
Veuillez vous référer au cycle de vie de l'Activité Si le système est détruire. , Autrement dit, le recyclage ne peut repartir que de zérocommencer
4.
Appelé via JNI. Il est recommandé de lire "The Java Native InterfaceProgrammer's Guide and Spécification", version anglaise, de sun Téléchargez le site Internet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer