téléchargement du logiciel de développement apk! La route d'entrevue Android amère d'Erben ordinaire, les questions d'entrevue BAT les plus complètes

Préface

Les programmeurs, une profession très populaire ces dernières années, ont attiré un grand nombre de diplômés à rejoindre les rangs des programmeurs avec d'énormes écarts de marché et des salaires élevés. Cela inclut des étudiants dans diverses majeures, y compris des majors d'automatisation comme moi. Ceux qui ne sont pas d'un cours d'informatique peuvent être considérés comme un moine à mi-parcours. Alors, quelle est la différence entre un programmeur à mi-parcours et un étudiant en informatique?

Examinons d'abord un programme universitaire d'informatique: structure et algorithme de données, principe de composition informatique, programmation en langage assembleur, programmation en langage Java, programmation C / C ++, système d'exploitation, structure du système informatique, principe du système de base de données, programmation réseau et technologie informatique, génie logiciel, réseau informatique, méthodes de développement logiciel, etc.

J'ai honte de dire que j'ai été sur une programmation en langage C. L'obtention du diplôme et la recherche d'emploi reposent également sur des programmes d'auto-apprentissage, puis Niuke.com (site Web Juniu Questions) pose des questions, lit des livres d'entrevue et réalise de petits projets pour trouver un emploi. Par exemple, lorsque vous interviewez une entreprise bien connue, écrivez à la main le programme d'inversion de liste chaînée et les règles de division des adresses IP sur place, cela ressemble à une seconde sur place. Maintenant que l'écart est reconnu, il faut toujours le rattraper. J'ai résumé les aspects suivants en fonction de mon propre processus d'apprentissage.

Département des entretiens + Poste : Commercialisation - Ingénieur principal en développement Android
Sentiments d'entrevue : Le visage global est relativement fatigué, le visage basique, le visage croisé, le visage du patron et 6 intervieweurs (des 3 côtés que je m'étais dit au début + RH Le visage semble être un peu bien pire (¬_¬). L'algorithme est toujours en cours d'écriture au patron, mais heureusement l'intervieweur ne m'a pas gêné (j'ai honnêtement expliqué que l'algorithme ne préparait pas grand chose, hé ...), l'algorithme n'est pas trop difficile. Le projet global a plus de questions que les bases.
Suggestions d'entrevue : les algorithmes et les fondations sont le tremplin, les projets sont des pierres de touche et une bonne image d'entrevue est un bonus.
Pensez aux éléments listés sur votre CV, pourquoi avez-vous réalisé ce projet? Quel est le but de ce projet? Quel est mon plan? Quels sont mes avantages par rapport aux autres programmes? Quels sont les avantages du projet? Le diagramme d'architecture du projet peut-il être dessiné? Les principaux principes du cadre utilisés dans le projet sont-ils clairs avant et après? (Je me suis probablement sauvé du projet, et la préparation de base est un peu hâtive T ^ T).
S'il s'agit d'une interview sur site ou vidéo, une bonne image d'entrevue est encore plus nécessaire. Dans l'entrevue du département TL, j'ai mentionné que mon meilleur que beaucoup d'autres intervieweurs est que l'image de la personne dans son ensemble est meilleure et que les gens ne se sentent pas très fatigués.

[ 1 côté basique ]

  1. Lorsque vous avez développé Android, comment avez-vous adapté le px du brouillon de l'interface utilisateur?
  • dpi: densité de pixels de l'écran, fait référence au nombre de pixels par unité de taille spécifié sur le logiciel système , il s'agit souvent d'une valeur fixe écrite dans le fichier de configuration d'usine du système;
  • ppi: C'est aussi la densité de pixels de l'écran, mais c'est un concept physique , et il existe objectivement et ne changera pas. dpi est une valeur spécifiée manuellement par le logiciel après référence à la densité de pixels physiques, ce qui garantit que la densité de pixels physiques dans un certain intervalle utilise la même valeur sur le logiciel;
  • dp plus la disposition adaptative et la disposition proportionnelle au poids peuvent résoudre 90% des problèmes d'adaptation . Comme tous les téléphones mobiles 1080P n’ont pas un ppp de 480, par exemple, le ppp du Pixel2 de Google (1920 * 1080) est de 420;
  • Adaptation des qualificatifs de largeur et de hauteur: épuisez les valeurs de pixels de largeur et de hauteur de tous les téléphones Android sur le marché, définissez une résolution de référence et d'autres résolutions sont calculées en fonction de cette résolution de référence. Dans des dossiers de tailles différentes, selon Écrire les dimensions correspondantes fichier pour cette taille. Mais il a un défaut fatal, c'est-à-dire qu'il doit être précisément frappé pour s'adapter, et la taille du package d'application deviendra également plus grande.
  1. Deux objets entiers avec des valeurs égales, == comparer pour déterminer s'ils sont égaux?

  2. L'activité A passe à l'activité B, l'activité B puis appuie sur la touche retour pour revenir en arrière, le cycle de vie des deux processus

  • Dans le processus d'ActivityA passant à ActivityB, l'ordre d'exécution de leurs cycles de vie respectifs. Par exemple: A.onCreate A.onStart A.onPause A.onStop B.onCreate B.onStart B.onPause B.onStop B.onDestroy?
    L'ordre d'exécution du cycle de vie ActivityA et ActivityB est le suivant: A.onPause -> B.onCreate -> B .onStart-> B.onResume-> A.onStop
  • ActivitéB appuyez sur le bouton retour?
    Après avoir appuyé sur la touche Retour: B.onPause-> A.onRestart-> A.onStart-> A.onResume-> B.onStop-> B.onDestory
  • Quand ActivityB est une fenêtre Activity, qu'en est-il des conclusions de 1 et 2?
    Si ActivityB est une fenêtre, lorsque ActivityA passe à ActivityB, la partie d'ActivityA qui perd le focus est visible, donc onStop ne sera pas appelée. À ce stade, la séquence du cycle de vie: A.onPause -> B.onCreate -> B. onStart -> B.onResume est
    pressé Après la touche Back: B.onPause-> A.onResume-> B.onStop-> B.onDestory
  • OnCreate sera-t-il appelé lors du basculement entre les écrans horizontaux et verticaux? plusieurs fois?
    Lorsque le programme est en cours d'exécution, la configuration de certains appareils peut changer, par exemple: basculement entre les écrans horizontaux et verticaux, disponibilité du clavier ou changement de langue, etc. À ce stade, l'activité redémarrera. Le processus est le suivant: avant de détruire, il appellera onSaveInstancestate () pour enregistrer certaines données dans l'application, puis appelera onDestory (), et enfin appelera onCreate () ou onRestoreInstanceState pour redémarrer Activiy. Lors du changement d'écran, chaque cycle de vie sera appelé à nouveau. OnCreate sera exécuté une fois lors du passage à un écran horizontal et onCreate sera exécuté deux fois lors du passage à un écran vertical.
  1. Les threads enfants peuvent-ils être context.startActivity () (tels que ApplicationContext), y aura-t-il des problèmes?

Il est possible d'écrire une démo et de l'essayer. Mais quel sera le problème n’a pas encore été élucidé ...

  1. Le processus global du mécanisme Handler; pourquoi Looper.loop () ne bloque pas le thread principal; IdHandler (mécanisme d'inactivité); l'implémentation spécifique de postDelay (); la différence entre post () et sendMessage (); quels problèmes faut-il prêter attention lors de l'utilisation de Handler et comment le résoudre?

Les questions sont très détaillées, vous pouvez donc vous préparer autant que vous le pouvez. Ils ont encapsulé un ensemble de gestionnaires pour éviter les fuites de mémoire

  1. Lorsque les pages Native, H5 et RN sont mélangées pour sauter, comment fonctionne le pont d'effacement de page?

Pour un projet réalisé par vous-même, expliquez simplement le principe clairement et dessinez l'image si vous ne l'expliquez pas clairement.

  1. Comment calculer le pourcentage de la partie visible d'une vue à l'écran?

  2. Mécanisme de délégation des parents de ClassLoader

  3. Présentez brièvement le principe de Https

  4. Qu'est-ce qui cause la fuite de mémoire et comment y remédier?

  5. Comment puis-je m'assurer de télécharger une grande image sans oom?

  6. Avez-vous optimisé l'interface utilisateur et qu'avez-vous fait?

  • Déboguer le overdraw GPU, réduire Overdraw à une plage raisonnable;
  • Réduisez le niveau d'imbrication et le nombre de contrôles, gardez l'arborescence de la vue aussi plate que possible (utilisez la visionneuse de hiérarchie pour une visualisation facile) et supprimez toutes les vues qui n'ont pas besoin d'être rendues;
  • Utilisez le GPU pour configurer l'outil de rendu, recherchez l'étape spécifique où le problème s'est produit et utilisez TraceView pour localiser avec précision le code;
  • Utiliser des balises, fusionner pour réduire les niveaux d'imbrication, initialisation retardée de viewStub, réutilisation de la mise en page d'inclusion (utilisée avec la fusion)
  1. Quelle est la différence entre l'interaction WebView et JS, shouldOverrideUrlLoading et onJsPrompt use

  2. Avez-vous été en contact avec Flutter et Kotlin?

  3. Autres problèmes liés au projet

  4. L'arbre d'algorithme-binaire génère des éléments de nœud de niveau k-ième

Spécial Projet 2 Côtés

  1. Lorsque les pages Native, H5 et RN sont mélangées pour sauter, le pont d'effacement de page est implémenté

  2. Conception et difficultés du cadre hybride de page

  3. Conception du conteneur universel RN

  4. Conception de programmes de surveillance du comportement des utilisateurs

  5. Programme de gestion des erreurs JS

  6. La page RN surveille le comportement des utilisateurs et la gestion des erreurs JS, quels sont les gains et les points d'optimisation de la découverte de problèmes

  7. Quels sont les avantages de Meituan RN par rapport à RN natif

[ Fondation 3 côtés approfondie ]

  1. Avez-vous déjà utilisé Picasso dans votre entreprise? Laissez-moi vous présenter

  2. Picasso mono-moteur, comment assurer l'isolation des données dans le cas de plusieurs Bundles?

  3. La différence entre Meituan RN et Picasso

4. Omettez certains problèmes liés au projet ...

  1. Comment le suivi des pages de RN est mis en œuvre

  2. La page d'accueil Meituan est-elle une page RN? Principe MTFlexBox

  3. Méthode statique modifiée synchronisée, méthode ordinaire, classe, différence de bloc de méthode

  4. Principe de mise en œuvre sous-jacent synchronisé

  5. Le rôle et le principe de volatile

  6. Une variable int est décorée avec volatile et multi-thread pour faire fonctionner i ++. Est-ce thread-safe? Comment garantir la sécurité des threads i ++? Le principe de réalisation sous-jacent d'AtomicInteger?

Utilisez AtomicInteger pour sécuriser les threads i ++

  1. Parlez de la compréhension du pool de threads et de plusieurs paramètres clés pour créer le pool de threads

  2. Le mécanisme Handler demande à nouveau ...

  3. Quelle est la différence entre le mécanisme Binder et le mécanisme de partage de mémoire?

  4. Collection Java, présentez les scénarios d'utilisation de ArrayList et HashMap, et le principe d'implémentation sous-jacent

  5. La différence entre ArrayList et LinkedList

  6. Algorithme - la fusion de deux listes chaînées ordonnées

  7. Algorithme: saisissez une chaîne (à l'exclusion de * et.), Régulière (toute combinaison de lettres, * et.), Et jugez si la chaîne est légale

  8. Présentez brièvement quelques difficultés techniques rencontrées dans le projet

4 côtés croisés côtés

  1. Dans le code suivant, quelle est la valeur finale de str? Quelle est la valeur de Integer? Sera-t-elle modifiée?
  • Site de test : transfert de valeur Java (idem pour la question 2). Écrivez un test de code, modifiez les paramètres d'entrée dans la méthode changeValue () et cela ne changera pas la valeur précédente;
  • Principe : La méthode obtient une copie de toutes les valeurs de paramètre, c'est-à-dire qu'elle ne peut pas modifier le contenu d'une variable de paramètre qui lui est passée. Le paramètre de type de base reçoit une copie du paramètre et le paramètre de type d'objet est une copie de l' adresse de l' objet;
  • Solution : dans changeValue (), pour le paramètre de type d'objet, modifiez directement la valeur de la copie d'adresse d'objet , donc l'adresse de la variable n'a pas été modifiée auparavant! Si vous modifiez une valeur dans l'instance d'objet, la variable précédente sera modifiée
public void test() {
    String str = "123";
    changeValue(str); 
    System.out.println("str值为: " + str);  // str未被改变,str = "123"
}

public changeValue(String str) {
    str = "abc";
}

  1. Dans le code suivant, doit-il être nul lors de la réutilisation de l'objet étudiant?

Résumé de l'utilisation des paramètres de méthode en Java:

  • Une méthode ne peut pas modifier un paramètre d'un type de données de base (c'est-à-dire numérique ou booléen);
  • Une méthode peut changer l'état d'un paramètre d'objet;
  • Une méthode ne peut pas laisser le paramètre object faire référence à un nouvel objet
public void test()  {
    Student student = new Student("Bobo", 15);
    changeValue1(student);   // student值未改变,不为null! 输出结果 student值为 name:Bobo、age:15
    // changeValue2(student);  // student值被改变,输出结果 student值为 name:Lily、age:20
    System.out.println("student值为 name: " + student.name + "、age:" + student.age);
}

public changeValue1(Student student) {
    student = null;
}

public static void changeValue2(Student student)  {    
     student.name = "Lily";    
     student.age = 20;
}

  1. Plusieurs types de références en Java, et les scénarios d'utilisation de références faibles?

  2. Classification du pool de threads, expliquer quelques paramètres de base?

  3. Quel est le processus de packaging d'APK?

  • L'outil aapt regroupe les fichiers de ressources et génère le fichier R.java
  • L'outil aidl traite les fichiers AIDL et génère les fichiers .java correspondants
  • L'outil javac compile le fichier Java et génère le fichier .class correspondant
  • Convertir les fichiers .class en fichiers .dex pris en charge par Davik VM
  • L'outil apkbuilder est conçu pour générer un fichier .apk non signé
  • jarsigner signe les fichiers .apk non signés
  • L'outil zipalign aligne le fichier .apk signé
  1. Pourquoi les APK doivent-ils être signés? Avez-vous découvert le mécanisme de signature spécifique?

Afin de confirmer l'identité du développeur apk et d'empêcher la falsification du contenu, Android a conçu un ensemble de schémas de signature apk pour assurer la sécurité de l'apk, c'est-à-dire que le développeur signe l'apk lors de l'emballage, et le système Android le fera avoir un développement correspondant lorsque l'apk est installé Pour vérifier l'exactitude de l'identité et du contenu de l'utilisateur, l'apk ne peut être installé qu'une fois la vérification réussie. La conception du processus de signature et de la vérification est basée sur l'idée du cryptage asymétrique.
Un ensemble de schémas de signature utilisés par Android avant 7.0: générez des fichiers de signature dans le dossier META-INF / dans le répertoire racine de l'apk, puis vérifiez les fichiers de signature dans le PackageManagerService du système lors de l'installation.
À partir de la version 7.0, Android fournit un nouveau schéma de signature V2: en utilisant le format de fichier compressé apk (zip), une zone de données pour stocker les informations de signature est ajoutée à la zone de contenu d'origine, puis la même dans le système lors de l'installation La version V2 de la vérification de signature est effectuée dans le PackageManagerService La solution V2 sera plus sécurisée et rendra la vérification de plus en plus rapide à installer.
Bien sûr, le schéma de signature V2 sera rétrocompatible.Si la signature V2 n'est pas utilisée, elle sera par défaut le processus de vérification du schéma de signature V1.

  1. Pourquoi diviser dex? Le SDK 21 ne divise pas dex, y aura-t-il un problème avec le chargement de tout directement?

Cherchez la bonne réponse des dieux qui passent ...

  1. Quels sont les modèles de conception courants? Quels modèles de conception avez-vous utilisés pour la solution de gestion des erreurs JS que vous avez fournie?

  2. Traversée de l'ordre de la couche de l'arborescence binaire d'algorithme, traversée de l'ordre inverse de la couche impaire des nœuds, traversée de l'ordre positif de la couche paire

  3. Quel est le plan pour les 3 à 5 prochaines années?

  4. Selon vous, quelles sont vos forces? Quels sont les inconvénients?

  5. Quel est le classement actuel et les performances récentes

5 côtés-département TL

  1. Introduction de l'entreprise liée au service de commercialisation (l'essentiel est probablement que le service de commercialisation a des barrières élevées et que le coût de la formation d'une personne est élevé. Cela a plus de valeur que d'autres activités et peut accumuler beaucoup de connaissances en stratégie d'entreprise), et puis demandez-lui de poser des questions

  2. Vous planifiez les prochaines années? Quel est le plan dans la vie?

  3. Selon vous, quelles sont vos forces? Quels sont les inconvénients?

  4. Quel est le classement actuel et les performances récentes

  5. Pourquoi vous donner une si bonne performance?

  6. Y a-t-il d'autres opportunités? La situation d'Ali interview

6 côtés-Big Boss

  1. Insertion d'algorithmes, envisagez l'expansion

  2. Quelles sont les choses les plus difficiles rencontrées dans le projet?

  3. Quelles sont vos activités à Meituan?

  4. Quels sont les plans pour les prochaines années?

  5. Selon vous, quelles sont vos forces? Quels sont les inconvénients?

  6. Quel est le classement actuel et les performances récentes

[Surface HR]

  1. Les majors de premier cycle et des cycles supérieurs sont friands de matériel. Avez-vous une expérience logicielle pertinente?

  2. Les étudiants de troisième cycle sont-ils diplômés ou passent-ils l'examen seuls?

  3. Avez-vous une expérience en développement Android avant de vous rendre à Meituan?

  4. Pourquoi as-tu choisi d'aller à Meituan? Pourquoi choisir de venir à Pékin?

  5. Pourquoi changer d'emploi? Quelles sont vos attentes pour votre futur travail?

Phrase d'or: J'ai maintenant rencontré un goulot d'étranglement dans ma croissance technologique et j'ai toujours admiré votre entreprise.

  1. Quelle est la performance récente de votre classement actuel?

  2. Avec une si bonne performance, pourquoi ne pas choisir Meituan pour changer de département et voir les opportunités?

  3. Quel a été le point culminant de la performance lors de plusieurs promotions?

  4. Y a-t-il des plans pour rentrer chez soi et s'y développer?

  5. Envisagez-vous de revoir des opportunités d'emploi comme Kuaishou?

  6. Renseignez-vous sur les progrès et la situation actuels de l'entrevue d'Ali

  7. Prétentions

fin

En un clin d'œil, le temps passe vite. Nous sommes allés à notre façon et avons entrepris notre propre voyage, mais même si nous ne nous sommes pas vus depuis de nombreuses années, nous sommes toujours aussi "proches" qu'avant à cause de cette amitié. N'oubliez pas l'intention initiale et devez toujours y aller. Allez, programmeurs, à mon avis 35 ans, 40 ans, ce n'est jamais une crise, tant que vous n'oublierez jamais pourquoi vous vous êtes embarqué dans ce voyage!

Enfin, si vous avez besoin des mêmes informations, vous pouvez ** Message privé Je clique sur [ Apprendre ] ** Je suis prêt à partager avec vous!

Afin de permettre à plus d'amis qui étudient ou se préparent pour une interview de voir cet article, j'espère que vous pourrez en commenter plus, comme + en avant!

Merci encore à tous les amis qui m'ont posé des questions, et merci d'être là!

Je suppose que tu aimes

Origine blog.csdn.net/weixin_52746928/article/details/113059828
conseillé
Classement