L'épée du Nouvel An fait référence aux fourmis! Fourmis bilatérales, j'ai déjà pris une offre s'il n'y a pas de danger, je dois dire "trop difficile"

Rappelez-vous une expérience d'entrevue avec un programmeur de fourmis

 

un côté

  • Auto-introduction
  • Suivi dans le projet: Quels sont les indicateurs de suivi communs?
  • Quelles sont les technologies impliquées dans les microservices et les problèmes qui nécessitent une attention?
  • Que savez-vous du centre d'inscription?
  • Connaissez-vous la fiabilité du consul?
  • Avez-vous approfondi le mécanisme du consul? L'avez-vous comparé à d'autres centres d'inscription?
  • De nombreux projets utilisent Spring. Comprenez-vous les principes de Spring? Principes de l'AOP et du CIO
  • En plus de la configuration automatique, quelles sont les autres différences entre Spring Boot et Spring traditionnel?
  • Que savez-vous de Spring Cloud?
  • Le cycle de vie de Spring Bean
  • Quelle est la différence entre HashMap et hashTable?
  • La méthode de hashcode d'Object a été réécrite. Dois-je changer la méthode equals?
  • Scénarios d'émergence non sécurisés pour les threads Hashmap
  • Que dois-je faire si le processeur des services en ligne est élevé? Quelles sont les mesures pour trouver le problème
  • Quels pools de threads existe-t-il dans le JDK? Au fait, j'ai parlé du pool de threads.
  • Essayez d'éviter d'utiliser l'opérateur! = Ou <> dans la clause where, sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table
  • L'ordre des index SQL, l'ordre des champs
  • Vérifier si SQL utilise un index? (Quels outils existe-t-il?)
  • Quelle est la différence entre TCP et UDP? Comment être fiable lors de la transmission de données TCP?
  • Parlez-moi de l'algorithme de tri que vous connaissez
  • Trouver la médiane d'un tableau?

Deux côtés

Avez-vous des questions pour moi? (Enquête régulière)

  • Auto-introduction, expérience de travail, pile technologique
  • Quelles techniques avez-vous apprises dans le cadre du projet?
  • La granularité de la division des microservices?
  • Comment garantir la haute disponibilité des microservices?
  • Équilibrage de charge et proxy inverse, isolation, limite de courant, rétrogradation, délai d'expiration et réessai, restauration, test de résistance et plan d'urgence
  • Pouvez-vous me dire comment utiliser l'équilibrage de charge couramment utilisé?

(Question technique)

  • redirection http
  • Équilibrage de charge DNS
  • Équilibrage de charge de proxy inverse
  • Équilibrage de charge IP (LVS-NAT)
  • Routage direct (LVS-DR)
  • Tunnel IP (LVS-TUN)
  • Quels avantages une passerelle peut-elle apporter aux services back-end?
  • Le cycle de vie de Spring Bean
  • Comment les méthodes init et destroy configurées en XML peuvent-elles appeler des méthodes spécifiques? Le mécanisme de réflexion
  • Méthodes de la classe Object
  • La comparaison d'objets est-elle la même
  • Comment juger si la méthode hashmap put est dupliquée lors du stockage
  • La méthode Object toString est couramment utilisée, pourquoi devrait-elle être réécrite
  • Quelle est la différence entre Set et List?
  • La différence entre ArrayList et LinkedList
  • Si vous accédez aux mêmes données, laquelle prend le plus d'espace avec ArrayList et LinkedList?
  • Est-ce que l'ordre dans lequel les sets sont stockés?
  • Quelles sont les implémentations courantes de Set?
  • Quelles sont les exigences de TreeSet pour le stockage des données?
  • Qu'en est-il de l'implémentation sous-jacente de HashSet?
  • Avez-vous vu le code source sous-jacent de TreeSet?
  • Le thread HashSet est-il sûr? Pourquoi n'est-il pas thread-safe?
  • Quelles sont les cartes thread-safe en Java?
  • Connaissez-vous HashTable?
  • Comment garantir les problèmes de sécurité des threads?
  • verrouillage 、 synchronisé
  • L'atomicité du volatil? Pourquoi i ++ ne prend-il pas en charge l'atomicité? En termes de conception de principe informatique, la raison pour laquelle l'atomicité ne peut pas être garantie survient avant le principe
  • opération CAS
  • Quelle est la différence entre lock et synchronized?
  • Serrure juste et serrure injuste
  • Verrouillage lecture-écriture Java
  • Quel problème la conception du verrou en lecture-écriture résout-elle principalement?
  • En plus d'écrire du code Java dans votre projet, vous avez également du code frontal. Savez-vous quels frameworks sont disponibles pour le front-end?
  • Instruction de requête de pagination MySQL
  • Caractéristiques des transactions MySQL et niveau d'isolement

Deuxièmement, la concurrence des transactions

  • Dans quels scénarios la lecture non répétable apparaîtra-t-elle?
  • Scénarios d'utilisation de SQL ayant
  • Quel est le processus complet d'une requête http de l'adresse du navigateur frontal au back-end?
  • port par défaut http, port par défaut https
  • Savez-vous ce que fait le DNS?
  • Quelle idée utilisez-vous pour le développement? Pouvez-vous me dire quelques touches de raccourci couramment utilisées pour une idée?
  • Qu'utilisez-vous pour la gestion des versions de code?
  • Quelle est la différence entre git rebase et merge?

Votre entreprise fait-elle beaucoup d'heures supplémentaires? (Hors sujet)

Exemple de réponse:

De nombreux projets utilisent Spring. Comprenez-vous les principes de Spring? Principes de l'AOP et du CIO

Réponse: (1) IoC (Inversion of Control) fait référence à la relation entre les objets de programme de contrôle de conteneur, pas dans l'implémentation traditionnelle, qui est directement contrôlée par le code du programme. Le contrôle est transféré du code d'application vers le conteneur externe, et le transfert de contrôle est ce que l'on appelle l'inversion. Pour Spring, c'est Spring qui contrôle le cycle de vie des objets et la relation entre les objets, IoC a un autre nom: "Dependency Injection". Comprenez à partir du nom, la soi-disant injection de dépendance, c'est-à-dire que la dépendance entre les composants est déterminée par le conteneur au moment de l'exécution, c'est-à-dire que le conteneur injecte dynamiquement une certaine dépendance dans le composant.

(2) Dans la méthode de travail de Spring, toutes les classes seront enregistrées dans le conteneur à ressort, indiquant à spring ce que c'est et ce dont vous avez besoin, puis spring prendra l'initiative de faire ce que vous voulez lorsque le système fonctionne correctement. À vous, mais aussi à d'autres choses qui ont besoin de vous. La création et la destruction de toutes les classes sont contrôlées par ressort, ce qui signifie que ce n'est plus l'objet qui le référence, mais le ressort qui contrôle le cycle de vie d'un objet. Pour un objet spécifique, il contrôlait d'autres objets, mais maintenant tous les objets sont contrôlés par ressort, c'est ce qu'on appelle l'inversion de contrôle.

(3) Pendant le fonctionnement du système, fournissez dynamiquement à un objet les autres objets dont il a besoin.

(4). L'idée de l'injection de dépendances est réalisée grâce à un mécanisme de réflexion. Lors de l'instanciation d'une classe, il utilise la réflexion pour appeler la méthode set de la classe pour injecter les attributs de classe stockés dans HashMap dans la classe. Dans l'ensemble, dans la méthode traditionnelle de création d'objet, l'appelant crée généralement l'instance de l'appelé, tandis que le travail de création de l'appelé dans Spring est effectué par Spring, puis l'appelant est injecté, ce que l'on appelle la dépendance réaction d'injection ou de contrôle. Il existe deux méthodes d'injection: l'injection de dépendances et l'injection de paramètres; les avantages de l'IoC: réduire le couplage entre les composants, réduire la complexité du remplacement entre les objets métier et lui permettre de gérer les objets de manière flexible.

AOP (Programmation orientée aspect)

(1) La programmation orientée aspect AOP est basée sur IoC, qui est un complément utile à la POO;

(2). AOP utilise une technique appelée "transversal" pour disséquer l'intérieur de l'objet encapsulé, et encapsuler ces comportements communs qui affectent plusieurs classes dans un module réutilisable, et le nommez "Aspect", c'est-à-dire l'aspect. Le soi-disant «aspect», en termes simples, consiste à encapsuler la logique ou les responsabilités qui ne sont pas liées à l'entreprise mais qui sont appelées par les modules métier, tels que les enregistrements de journal, ce qui est pratique pour réduire la duplication du code système et Réduire le couplage entre les modules, propice à une opérabilité et une maintenabilité futures.

(3). AOP représente une relation horizontale. Il compare "l'objet" à un cylindre creux, qui encapsule les propriétés et le comportement de l'objet; la méthode de programmation orientée aspect consiste à utiliser ce cylindre sous la forme d'une section. Disséqué et fournit de manière sélective une logique métier. La section coupée est ce qu'on appelle «l'aspect». Ensuite, il a restauré ces plans de coupe avec une habileté ingénieuse, ne laissant aucune trace, mais obtenant l'effet.

(4). La technologie pour atteindre l'AOP est principalement divisée en deux catégories: l'une est l'utilisation de la technologie de proxy dynamique, qui utilise la méthode d'interception du message pour décorer le message pour remplacer l'exécution du comportement de l'objet d'origine; l'autre est l'utilisation du tissage statique De cette manière, une grammaire spécifique est introduite pour créer des "aspects", afin que le compilateur puisse tisser du code sur les "aspects" lors de la compilation.

(5) Spring implémente AOP: proxy dynamique JDK et proxy CGLIB proxy dynamique JDK: son objet proxy doit être la réalisation d'une interface, qui consiste à compléter le proxy de l'objet cible en créant une classe d'implémentation de l'interface en cours de fonctionnement; its Les deux classes principales sont InvocationHandler et Proxy. Proxy CGLIB: Le principe de mise en œuvre est similaire au proxy dynamique JDK, sauf que l'objet proxy qu'il génère pendant l'exécution est une sous-classe étendue pour la classe cible. CGLIB est un package de génération de code efficace. La couche inférieure est implémentée par ASM (bibliothèque de classes d'édition de bytecode java open source) pour manipuler le bytecode. Les performances sont meilleures que JDK; les packages asm.jar et cglib.jar doivent être introduits. Les aspects pilotés par l'injection AspectJ et les annotations @AspectJ sont en fait implémentés au niveau inférieur via des proxys dynamiques.

(6). Scénarios d'utilisation d'AOP:

  • Vérification des autorisations d'authentification
  • Mise en cache
  • Contexte passant
  • La gestion des erreurs
  • Chargement paresseux
  • Débogage
  • journalisation, traçage, profilage et surveillance
  • Optimisation des performances Optimisation des performances, contrôle de l'efficacité
  • Persistance
  • Mise en commun des ressources
  • Synchronisation
  • Gestion des transactions de transactions

De plus, l'implémentation de Filter et l'implémentation de l'intercepteur de struts2 sont toutes deux l'incarnation de l'idée AOP.

Scène d'entrevue avec la fourmi et réponses à l'entrevue (résumé du document)

Ermian Meituan, j'ai une offre de surprises et pas de dangers, je dois dire "trop ​​difficile"

 

Enfin

J'ai également rassemblé une collection de points de connaissance de base des entretiens Java pour gérer l'interview. Je peux profiter de cette opportunité pour la donner gratuitement à mes lecteurs et amis:

table des matières:

Ermian Meituan, j'ai une offre de surprises et pas de dangers, je dois dire "trop ​​difficile"

Java Interview Points de connaissances de base

Il y a un total de 30 sujets, qui suffisent aux lecteurs et aux amis pour faire face à l'entrevue, et cela permet également aux amis de gagner du temps pour rechercher des informations et s'organiser! Amis qui ont besoin de l'obtenir: suivez et transférez et ajoutez VX [MXM9809] pour l'obtenir gratuitement

Ermian Meituan, j'ai une offre de surprises et pas de dangers, je dois dire "trop ​​difficile"

Java Interview Points de connaissances de base

Certains lecteurs et amis ont déjà reçu de bonnes offres avec ce guide sur les points de connaissance des entretiens Java Chers lecteurs et amis, venez me voir et obtenez-le gratuitement.

1000 interviews Java

Ermian Meituan, j'ai une offre de surprises et pas de dangers, je dois dire "trop ​​difficile"

 

Comment obtenir les informations: ajoutez VX [MXM9809] pour l'obtenir gratuitement!

Je suppose que tu aimes

Origine blog.csdn.net/Sqdmn/article/details/115186676
conseillé
Classement