Restaurez l'entrevue d'ingénieur senior Android 35K-55K de Tencent

1. L'origine de l'entretien

Le truc est comme ça, parce que certaines idées sont différentes du développement de l'entreprise. Dès octobre, il y avait l'idée de démissionner. Cependant, à cause du visage du patron, je ne l'ai jamais dit au personnel. Je prévois de attendez l'or et l'argent de l'année prochaine. Quatre essaient de changer d'emploi.

Mais une chose s'est produite et je ne pouvais plus m'en empêcher. Je ne savais pas où écouter les nouvelles. J'ai dit au BOSS que je voulais arrêter, puis on m'a parlé. Il y avait une certaine culpabilité que j'avais laissée , et je me suis soudainement senti dissipé.A la fin de la conversation de trente minutes, j'ai choisi une idée inacceptable, «discours nu». Après le transfert, j'ai quitté l'entreprise où j'étais depuis trois ans le lendemain après-midi.

Après avoir à peine démissionné, j'avais prévu d'essayer à nouveau le géant de l'Internet l'année prochaine, mais par hasard, mon camarade de classe a entendu la nouvelle de ma démission de quelque part et m'a trouvé, disant qu'une équipe de projet Tencent en avait recruté un de toute urgence. Un développement senior Android ingénieur, m'a demandé si j'avais des idées à essayer.

Je pensais que je révisais presque à la maison, maintenant que l'opportunité est là, ce serait bien d'essayer d'abord de l'eau. En conséquence, je lui ai dit et j'ai commencé l'interview ci-dessous;

Une certaine équipe de projet de questions d'entretien d'ingénieur senior Tencent Reading-Android

un côté

1. Voir le processus de dessin. onMeasure, onLayout, onDraw.
2. Comment réaliser le TextView vertical. Comment réaliser l'effet de trait de texte de TextView.
3. Distribution d'événements. Résolution de conflit.
4. Animation
5. Fonctionnalités et mise en cache de RecyclerView
6. SparseArray et ArrayMap. Principes et caractéristiques de mise en œuvre spécifiques
7, parler des avantages et des inconvénients de kotlin. La différence entre let et with
8. La différence entre une interface et une classe abstraite, peut-il y avoir des attributs dans une interface?
9. Quels modèles de conception avez-vous utilisés? La différence entre le mode stratégie et le mode bridge
10. Comment réaliser le multithreading? Quels sont les moyens?
11. Paramètres du pool de threads
12. Comment implémentez-vous un LRUCache vous-même? Comment LRUCache est-il implémenté dans Android?
13. Quelle est la différence entre synchronisé et volatil? Pourquoi ne pas remplacer synchronisé par volatile? Les verrous de classe et les verrous d'objet s'excluent-ils mutuellement?
14. Type de gcroot
15. Structure de données d'exécution de jvm. Quelles sont les exceptions dans le cadre de la pile? Quelles données sont stockées dans la zone de méthode?
16. Réalisation d'agent dynamique.
17. La réalisation de Gradle, le cycle de vie des tâches en gradle.
18. Aop, AspectJ et ASM comprennent ce que
19, la différence entre la mise en composants et la modularisation. Inconvénients d'ARouter.
20.
Avantages et inconvénients de MVP et MVVM, composants dans jetpack 21, code source okhttp.
22, cache de glissement
23. Votre compréhension du flutter

Deux côtés

1. Flux de données unidirectionnel de React
2. Gestion des états de Redux, comment est-elle réalisée? Quels sont les rôles clés?
3. Quels types de canaux de communication le flutter a-t-il? Lequel utilisez-vous? Comment avez-vous implémenté le plugin?
4. Optimisation du volume du paquet Flutter
5. Étapes clés pour personnaliser View, précautions, votre compréhension
6. Parlez de MeasureSpec
7. Optimisation de la taille du paquet
8. Étapes et principes de confusion
9. Une fois que les fichiers de ressources entre les modules sont fusionnés, ils sont générés Trop Fichiers R, les avez-vous traités? Comment y faire face?
10. Taille de la mémoire bitmap, questions nécessitant une attention particulière, comment optimiser
11. Optimisation de la vitesse de démarrage
12. Quelles opérations sont effectuées sur Bitmap en glissement? Cache de niveau trois? Pourquoi ai-je encore besoin de conserver ActivityRef après avoir un cache mémoire?
13. Cycle de vie Gradle, tâche, plug-in
14. Annotation: La différence entre Source et Classe, Annotation Runtime
15. Optimisation Caton
16, Détection et optimisation de fuite de mémoire
17, Cache RecyclerView, actualisation partielle utilisée?
18. Comment optimiser le glissement de List
19. Le processus d'initialisation et d'affichage de Window in Activity
20. Dialog peut-il être affiché dans Application? Pourquoi?
21. Pourquoi y a-t-il un effacement générique? Moment de l'effacement. Caractère générique.
Y a-t-il un problème avec le code suivant? Quel est le problème? Pourquoi ce problème?

List<? extends Object> list = new ArrayList<>();
list.add(123);
Object obj = list.get(0);

22. Primitives de synchronisation synchronisées
23. Plusieurs états de verrous
24. Principe de réparation à chaud Android, comment générer des fichiers de correctifs bricoler Le fichier de correctif charge-t-il tous les en-têtes du fichier dex?
25. Le principe de la plug-inization
26. Ajoutez deux grands nombres représentés par une seule liste chaînée et trouvez leur somme. La valeur de l'élément de liste lié individuellement est de 0 à 9.

Trois côtés

1. Parlons de hashmap; pourquoi la limite de la liste de liens à l'arbre rouge-noir 8; la complexité temporelle de l'arbre rouge-noir; pourquoi la limite de conversion de l'arbre rouge-noir en liste liée est de 6; est le fil de hashmap actuel sûr dans tous les cas? Et la table de hachage?
2. Réalisation synchronisée. Les méthodes non statiques A et B sont dans la même classe et la méthode A est décorée de synchronized. Lorsque la méthode A est bloquée sur le verrou d'objet en raison de requêtes multi-thread, l'accès de la méthode B sera-t-il affecté?
3. Étant donné que les génériques ont un effacement de type à la compilation, des types spécifiques ne peuvent pas être obtenus à l'exécution; alors que la réflexion peut obtenir le type de classe au moment de l'exécution; l'un d'entre eux ne peut pas être obtenu et l'autre peut être obtenu. N'est-ce pas une contradiction ? Veuillez expliquer les détails.
4. Sur le même téléphone portable, si vous déplacez l'image sous drawable-xxhdpi vers drawable-xhdpi, comment la mémoire d'image change, expliquez le principe. Si les images sont placées sous drawable-hdpi et drawable-xxhdpi, mais que le téléphone est xhdpi, lequel sera chargé en premier et quelle est la priorité de chargement? Si c'est 400800, 1080 1920, comment le trouver? Comment savoir si xhdpi et 400 * 800 existent en même temps? Qu'en est-il des fichiers de mise en page?
5. Optimisation de la mémoire d'image
6. Mécanisme de gestion. Comment les messages dans MessageQueue sont-ils organisés? L'objet exécutable de Msg peut-il être défini en externe, par exemple, sans la méthode Handler # post series (la réflexion peut être implémentée)
7. Quels sont les inconvénients de la conservation d'informations statiques sur l'utilisateur dans l'application? Comment améliorer?
8. mvp et mvvm, jetpack

Tous les côtés

1. Choisissez l'un de vos projets et parlez-en
2. Comment fonctionne la sélection technique
3. Optimisez la mémoire
4. Téléchargez le mécanisme de
relance 5. MOO et fuite de mémoire
6. Optimisation de la taille du package
7. Votre meilleur point
8. Vous Planification de carrière

À la fin de ma vie, j'ai eu beaucoup de chance: fin 2020, j'ai reçu la première offre d'une grande entreprise Internet de ma vie. Lorsque les RH m'ont parlé de salaire plus tard, j'ai réalisé que j'avais vraiment réussi cette fois. Bien que je sois heureux et surpris, je souhaite également partager mon expérience d'entrevue personnelle, dans l'espoir d'aider des amis qui se préparent à recruter de grandes usines au printemps 2021.

3. Expérience personnelle après l'entretien

Période de préparation

Avant l'entretien, il est préférable de revoir systématiquement les connaissances de base, puis de revoir votre propre expérience de projet pour en découvrir les points forts. Les conseils personnalisés pour le cycle d'examen sont d' un mois à trois mois . Le temps ne doit pas être trop long. Après une longue période, il est facile de se relâcher ou de travailler à huis clos. Il est préférable de sortir et de commencer à tester l'eau après trois mois pour tester vos propres effets d'apprentissage.

La formulation du plan de revue et le contrôle de l'avancement sont également très importants.Vous pouvez vous référer à mon plan d'étude pour apprendre, puis faire les ajustements appropriés en fonction de votre situation réelle.

Revoir les compétences

Je pense toujours qu'il n'y a pas de raccourci pour apprendre. Je crois en "une bonne mémoire n'est pas aussi bonne qu'une mauvaise écriture", et je crois aussi en "lire un livre cent fois pour voir ce qui est juste".

Assurez-vous de pratiquer. Pour nous, programmeurs, il ne s'agit pas seulement de mémorisation par cœur, nous avons de meilleures façons d'apprendre, comme l'écriture de démos à vérifier. Par exemple, dans le processus d'apprentissage du code source, nous devons parcourir le code source par nous-mêmes et le lire plusieurs fois Parlons-en.

Je pense que les notes d'étude sont très importantes, non seulement pour prendre des notes, mais aussi pour écrire de l'expérience, des notes de texte, dessiner des images, des résumés, etc. Il y a plusieurs façons, mais vous devez le prendre au sérieux, ne faites pas confiance à votre propre mémoire aussi beaucoup, répétez seulement la mémoire pour approfondir votre compréhension. Travaillez simplement.

Dans le processus d'apprentissage des points de connaissance, vous pouvez suivre les trois axes Quoi, Comment et Pourquoi . Quelle est cette chose? Comment est-il fait? Pourquoi fait-il cela, quel est le principe et y a-t-il une meilleure façon?

Dans le processus de révision, vous commencez à apprendre à partir de petits points de connaissance. À un certain stade de la révision, vous pouvez essayer de relier ces éléments entre eux, d'un point à l'autre.

De plus, dans le processus de révision, vous devez le combiner avec les projets que vous avez réalisés à temps, afin de pouvoir faire remonter vos projets. Vous saurez comment parler pendant l'entretien, et certains projets parleront de points de connaissance. Connectez-vous à un autre point de connaissances, afin que votre système de connaissances soit établi.

Répondre aux compétences

De manière générale, une interview est un processus dans lequel vous et l'intervieweur apprenez à vous connaître et à communiquer. Les intervieweurs des grandes usines sont généralement gentils. Si vous rencontrez un problème que vous ne connaissez pas, vous pouvez demander à l'autre personne N'ayez pas peur de perdre la face. L'entretien est un processus d'apprentissage et de communication. Une offre n'est pas un but, mais un processus.

De plus, parfois vous ne connaissez pas les détails de certaines technologies ou points de connaissance, mais vous connaissez les idées générales de conception, vous pouvez donc répondre autant que possible à votre compréhension, et vous pouvez utiliser des technologies similaires horizontales pour expliquer ce point de compétence.

Parfois, si un certain point de connaissance ne peut être retenu pendant un certain temps, vous pouvez faire un détour. Tout comme une formule récursive, vous pouvez en déduire étape par étape en fonction des points de connaissance dans lesquels vous êtes bon. Faites des hypothèses audacieuses, puis avec précaution Vérifiez le processus de dérivation. Expliquez certains problèmes.

Il y a un autre point à noter: pour les choses qui ne sont pas possibles, vous pouvez essayer de répondre du point de vue du principe, mais essayez de ne pas vous tromper. Les réponses incomplètes et les mauvaises directions sont deux concepts.

Ici, je vous donne pour préparer une revue de la maison avait "Android core knowledge interview PDF" , cette note que j'ai passé plus de deux semaines avant de terminer l'interview, lors de l'interview, cette note m'a aussi beaucoup aidé Occupé. Cependant, en raison du mécanisme de recommandation du petit livre, il n'est pas possible de les montrer tous ici. S'il y a un ami qui a besoin de ces informations, il y a un moyen de les recevoir sous l' article .

4. Points de connaissance Android fréquemment testés lors d'entretiens (en partie)

  • Aspects de base Java: JVM, String, classes internes, polymorphisme, abstraction et interface, framework de collection (Hashmap, Arraylist), singleton, thread, Synchronized, Look lock, proxy dynamique, référence
  • Aspects de base d'Android: quatre composants principaux, vue, processus, bitmap, adaptation d'écran, mécanisme de message, asynchronie des threads, WebView.
  • Extension Android: ART, optimisation Apk, Hook, Proguard, architecture (MVC / MVP / MVVM), Jetpack, développement NDK.
  • Code source Android: Leakcanary, Eventbus
  • Modèles de conception: six principes orientés objet, modèle d'usine, modèle singleton, modèle de générateur, modèle d'observateur, modèle d'adaptateur, modèle de stratégie, modèle d'agent
  • Algorithmes: tri, arbre binaire, liste chaînée, pile et file d'attente, dichotomie, table de hachage, tas, tableau / double pointeur, traitement de chaîne, programmation dynamique
  • Connaissance du réseau: Http (cache, Https, Http2.0), TCP (prise de contact à trois, quatre mains agitées, socket), chargeur de classe

Affichage PDF (partiel)

Cinq, résumé

De manière générale, les entretiens sont généralement basés sur votre CV. En règle générale, vous examinerez d'abord vos bases, puis vous examinerez l'exhaustivité de votre système de connaissances, puis examinerez vos limites et enfin, vous examinerez certaines compétences non techniques, telles que votre capacité à apprendre, à collaborer, communiquer, analyser et résoudre des problèmes inconnus, résister au stress, etc.

J'espère que les amis qui obtiendront ces informations pourront saisir l'opportunité d'obtenir leur offre préférée lors du prochain entretien de recrutement du printemps 2021.

Les amis qui ont besoin de "Android Interview Core Knowledge pdf", téléchargez-le vous-même: scannez le code QR ici pour l'obtenir

Je suppose que tu aimes

Origine blog.csdn.net/qq_39477770/article/details/112383451
conseillé
Classement