Les dernières difficultés d'entretien technique des grandes entreprises de première ligne (Ali, Baidu, JD, etc.) se règlent, après avoir lu les longues collations!

table des matières

  • Les bases de Java
  • Printemps
  • MySQL
  • JVM
  • Commandes Linux
  • Problèmes courants de Linux
  • Redis
  • Partage d'expérience
  • Œuf de bien-être

Java

  1. Plusieurs threads lisent et écrivent en même temps, et le nombre de threads de lecture est bien supérieur à celui des threads d'écriture. Comment pensez-vous que le problème de la concurrence devrait être résolu? Quel type de verrou choisiriez-vous d'ajouter?
  2. L'AQS de JAVA sait-il ce qu'il fait?
  3. À l'exception du mot-clé synchronized, comment assurez-vous la sécurité des threads?
  4. Quand devez-vous ajouter le mot-clé volatile? Peut-il garantir la sécurité des fils?
  5. Si tous les threads du pool de threads sont occupés et soumettent une nouvelle tâche, que se passe-t-il? Une fois la file d'attente pleine, elle est toujours occupée, que se passe-t-il lorsque je la soumets à nouveau?
  6. Comment ajusteriez-vous les paramètres de Tomcat lui-même?
  7. Qu'est-ce qui est verrouillé par le mot-clé synchronisé? Comment est-il représenté en bytecode? Quelle est la performance sur les objets en mémoire?
  8. La méthode wait / notify / notifyAll doit-elle être incluse dans le bloc synchronisé? Pourquoi donc?
  9. Comment utilisez-vous généralement ExecutorService? Y en a-t-il un pour chaque service ou un pour chaque projet? quel est l'avantage?

Printemps

  1. Avez-vous déjà utilisé l'AOP de Spring? À quoi sert-il? Comment l'utilisez-vous?
  2. S'il y a deux implémentations différentes pour une interface, alors comment faire le câblage automatique d'une implémentation spécifique?
  3. Où est généralement écrite l'annotation de transaction déclarative @Transaction de Spring? Sera-t-elle automatiquement annulée si une exception est levée? Existe-t-il un moyen de contrôler de ne pas déclencher une restauration?
  4. Si vous voulez exécuter votre propre logique après qu'un certain Bean est généré et assemblé, comment pouvez-vous l'implémenter?
  5. Pourquoi SpringBoot peut-il exécuter le service HTTP sans le mettre dans le conteneur Web?
  6. Dans SpringBoot, si vous souhaitez utiliser un fichier de configuration personnalisé au lieu de simplement application.properties, que devez-vous faire?
  7. RequestMapping dans SpringMVC peut-il spécifier les méthodes GET et POST? Comment préciser?
  8. Si SpringMVC souhaite empaqueter l'objet de sortie (tel que XXResult ou XXResponse) en tant que sortie JSON, que faut-il faire?
  9. Comment intercepter les exceptions SpringMVC, puis effectuer un traitement personnalisé, tel que la journalisation ou l'empaquetage dans JSON

MySQL

  1. S'il y a beaucoup de données insérées dans MYSQL, quelle méthode choisiriez-vous?
  2. Si la requête est lente, quelle est la première façon de penser? Que fait l'index?
  3. Si un index à une seule colonne est créé et que deux colonnes sont trouvées lors de l'interrogation, cet index à une seule colonne sera-t-il utilisé?
  4. Si un index contenant plusieurs colonnes est créé et que seule la première colonne est utilisée lors de l'interrogation, cet index peut-il être utilisé? Que diriez-vous de vérifier trois colonnes?
  5. Continuez à la question, s'il y a un i + 5 <100 après la condition où, cet index sera-t-il utilisé?
  6. Comment voir si un certain index est utilisé?
  7. Est-ce que% aaa% utilisera un index? Comme aaa%?
  8. Quelle est la différence entre déposer, tronquer et supprimer?
  9. Comment surveillez-vous la base de données? Comment dépannez-vous le SQL lent?
  10. Votre base de données prend-elle en charge les expressions emoji, sinon comment fonctionner?
  11. Quelle est la quantité de données dans une seule table de votre base de données? À quel âge les performances des requêtes commencent-elles à chuter fortement?
  12. La requête est morte, quelle commande souhaitez-vous utiliser pour connaître le processus de requête? Que faites-vous habituellement après l'avoir découvert?
  13. Comment se fait la séparation de la lecture et de l'écriture? Comment pensez-vous que le middleware fonctionnera? Qu'est-ce que cette opération a à voir avec les transactions?
  14. Avez-vous fait le sous-tableau de la sous-base de données? À quoi ressemble le processus de migration en ligne? Comment s'assurer que les données sont correctes?

JVM

  1. Que savez-vous ou quelle stratégie GC utilisez-vous en ligne, quels sont ses avantages et à quels scénarios convient-elle?
  2. Combien de types de chargeurs de classe JAVA sont inclus? Quelle est la relation père-fils entre eux? Que signifie le mécanisme de délégation parentale? quel est l'avantage?
  3. Comment personnaliser un chargeur de classe? Lesquels avez-vous utilisés ou dans quels scénarios avez-vous besoin d'un chargeur de classe personnalisé?
  4. Quels sont les paramètres des paramètres de mémoire du tas?
  5. Quelles données sont stockées dans Perm Space? Est-ce que cela provoquera OutOfMemory?
  6. Lorsque vous faites gc, quel est l'ordre dans lequel un objet est déplacé dans chaque espace de la mémoire?
  7. Avez-vous rencontré un problème OutOfMemory? Comment avez-vous géré ce problème? Quels sont les gains du processus?
  8. Quels changements aura Perm Space après la version 1.8? La taille du MetaSpace est-elle infinie par défaut? Ou allez-vous spécifier la taille d'une manière ou d'une autre?
  9. Que fait Jstack? Qu'en est-il de Jstat? Si le programme en ligne se bloque périodiquement, vous pensez qu'il peut être causé par gc. Comment résoudriez-vous ce problème? Quelle partie du journal des threads examinez-vous généralement?
  10. Avez-vous rencontré des exceptions StackOverFlow? Dans quelles circonstances pensez-vous qu'il sera déclenché? Comment spécifier la taille de pile d'un thread? Combien écrivez-vous habituellement?

Commandes Linux

  1. Le journal est très volumineux et je veux juste voir les 100 dernières lignes. Comment l'obtenir? Si je veux continuer à regarder la sortie continue du journal, quelle commande dois-je utiliser?
  2. Que dois-je faire si je veux voir s'il existe un certain mot-clé en temps réel lors de la sortie du journal?
  3. Que dois-je faire si grep ignore la casse? Qu'en est-il des expressions régulières?
  4. Quelle est la clé de la prochaine ligne dans vim? Qu'en est-il des 30 prochaines lignes? Quelle est la ligne qui saute à la fin du fichier? Qu'est-ce que le retour en arrière? Qu'est-ce que la recherche arrière?
  5. Si vous disposez d'un fichier texte, utilisez des espaces comme séparateur de colonne. Si vous souhaitez compter le nombre d'occurrences de chaque mot dans la troisième colonne, que dois-je faire?
  6. Que dois-je faire si je trie le nombre d'occurrences ci-dessus? Je veux le trier dans l'ordre du nombre lui-même au lieu de l'ordre de la chaîne?
  7. Quel est le séparateur des variables d'environnement Linux? Quelle commande est utilisée pour définir les variables d'environnement?
  8. Quelle commande est utilisée pour définir une limite pour un certain droit de fichier, comme le définir sur 644? Qu'est-ce que cela signifie?
  9. Et si vous voulez voir l'occupation des ressources d'un certain processus sous Linux? Que signifie probablement la charge du système? Quelle est la charge moyenne de votre système en ligne? S'il s'agit d'une machine à 4 cœurs, quelle charge pensez-vous est normale? Que se passe-t-il lorsque je clique sur 1 dans la commande supérieure?
  10. Dans la commande top, parfois l'utilisation du processeur de tous les processus s'élève à plus de 100%. Pourquoi?
  11. Quelles autres commandes sont disponibles pour vérifier les performances du système ou trouver des problèmes? Quel paramètre regardez-vous généralement?
  12. Vous voulez voir quelles connexions réseau sont ouvertes par un certain processus? De quel statut de connexion vous souciez-vous le plus?

Problèmes courants de Linux

  1. Avez-vous déjà optimisé les paramètres du système Linux, et qu'avez-vous probablement optimisé?
  2. Que peut-on utiliser pour un backlog dans les paramètres système?
  3. Vérifiez la connexion réseau et trouvez beaucoup de TIME_WAIT. Quelle pourrait en être la raison? Quel impact cela aura-t-il sur votre application? De quelle manière choisiriez-vous pour réduire ces TIME_WAIT
  4. Pourriez-vous s'il vous plaît introduire le processus de prise de contact TCP à trois voies? S'il existe un programme réseau, vous utilisez une bibliothèque tierce pour envoyer des données et vous pensez que les données envoyées par la bibliothèque sont défectueuses, comment le vérifier? Comment analysez-vous généralement les fichiers exportés par tcpdump?
  5. À quoi sert KeepAlive? Quels en sont les avantages?

Redis

Développement
  1. Pouvez-vous me parler de la pénétration du cache? Comment pensez-vous que ce problème devrait être résolu
  2. Comment avez-vous déclenché la mise à jour du cache? (Par exemple, définissez le délai d'expiration (mode passif), comme la mise à jour active lors de la mise à jour)? S'il s'agit d'une manière passive, comment contrôler plusieurs entrées pour déclencher une mise à jour du cache en même temps?
  3. Pourquoi utilisez-vous Redis? Pourquoi ne pas utiliser d'autres stockages KV tels que Memcached, Cassandra, etc.?
  4. Quel client Redis utilisez-vous? Les raisons de la haute performance de Redis peuvent probablement être dites?
  5. Quelles structures de données Redis connaissez-vous? Que fait zset? Quelle est la différence entre ensemble et ensemble?
  6. Redis hash, quel est le nom de la commande spécifique pour le stockage et l'acquisition?
  7. La différence entre LPOP et BLPOP?
  8. Quelles sont les commandes Redis qui contiennent le mot-clé SCAN? La quantité de données renvoyée par SCAN est-elle fixe?
  9. Lua dans Redis a-t-il été utilisé? À quoi sert-il? Pourquoi peut-il être utilisé comme ça?
  10. À quoi sert le pipeline de Redis?

Partage d'expérience

Si vos compétences sont solides et qu'il n'y a pas de problème, le prochain entretien déterminera également si vous pouvez être reconnu et obtenir l'offre.Numérez les points d'expérience suivants et préparez les réponses à l'avance avant l'entretien.

  1. Il est préférable de préparer 1 à 2 questions pour traiter des questions telles que "Avez-vous quelque chose à demander?"
  2. Ne vous plaignez pas de vos employeurs actuels et précédents.
  3. Gardez le timing et le rythme de la conversation en douceur, mais ne parlez pas trop d'un problème et introduisez un problème par rapport au suivant.
  4. Pendant le processus d'entrevue, les questions de l'intervieweur peuvent être plus détaillées et plus précises. C'est une partie normale, alors ne soyez pas nerveux.
  5. Si vous rencontrez un problème dont vous ne connaissez pas grand-chose, mieux vaut ne pas donner de réponse ambiguë.
  6. Il est préférable de maintenir un degré élevé de volonté dans le processus de communication.

Avantages du lecteur, questions d'entrevue complètes [avec réponses] Notes de base Java, intégration de sujets d'entrevue d'architecture Java de mille
façons (document pdf) J'ai également compilé un ensemble de documents de notes avancées et de supports d'apprentissage Java pour les partager gratuitement avec tout le monde!
En raison de problèmes d'espace, je ne vais pas tout montrer, il suffit de cliquer ici, à droite, à droite, ici, signal de réponse: CS peut recevoir gratuitement! ! !

Lié à la JVM

Lié à la concurrence multithread

Relatif au printemps

Lié aux microservices

Lié à la base de données

En raison de problèmes d'espace, je ne vais pas tout montrer, il suffit de cliquer ici, à droite, à droite, ici, signal de réponse: CS peut recevoir gratuitement! ! !

Plus de notes à partager

Je suppose que tu aimes

Origine blog.csdn.net/weixin_50520844/article/details/108664920
conseillé
Classement