Maison  >  Article  >  Java  >  Questions d'entretien Java intermédiaires et avancées (avec réponses)

Questions d'entretien Java intermédiaires et avancées (avec réponses)

angryTom
angryTomavant
2019-11-14 16:51:0711485parcourir

Questions d'entretien Java intermédiaires et avancées (avec réponses)

1. Comment synchroniser Redis avec les données locales ?

Le programme synchronisera le fonctionnement de redis lors de la mise à jour, de l'ajout et de la suppression de mysql

Le programme interroge redis, s'il n'existe pas, il interroge mysql et enregistre automatiquement redis

2. Combien de structures de données Redis possède-t-il ?

set, list, hash, string, zset

3. Comment est provoqué le débordement de mémoire Java ?

OutOfMemoryError :

(1)PerGern Space Un grand nombre de pots ou de classes sont utilisés dans le programme, de sorte que la machine virtuelle ne dispose pas de suffisamment d'espace pour charger la classe.

Solution : Ajustez les paramètres XX:PermSize et XX:MaxPermSize, réduisez les packages jar et réduisez les chargements répétés des classes

(2) Java Heap

La création de machines virtuelles Space Java est aussi Plusieurs objets. Solution : Ajustez les paramètres Xms (taille initiale du tas) et Xmx (taille maximale du tas), vérifiez les boucles infinies ou la création inutile d'objets en double.

(3) impossible de créer un nouveau thread natif

JVM prend trop d'espace mémoire, et la création d'un thread dans JVM nécessite la création d'un thread dans le système d'exploitation. Solution : Ajustez la taille du thread dans la JVM.

4. String s = « 123 », combien d'objets sont générés par cette instruction ?

S'il n'y a pas de "123" dans le pool de chaînes, générez-en un et placez-le dans le pool constant. S'il y a "123", générez 0

5. , nouvelles fonctionnalités du JDK8, décrites avec des exemples

(1) expression lambda : programmation fonctionnelle, référence de méthode

(2) API Stream

(3 ) Par défaut méthode de l'interface

(4) Amélioration de l'API de date et d'heure, nouvelle méthode DateTimeFormatter

6. Résoudre une concurrence élevée et une charge élevée

( 1) Rendre le HTML aussi statique que possible, utiliser le CMS du système de saisie et de publication d'informations pour générer automatiquement des pages statiques pour la saisie d'informations et mettre en cache les données dynamiques qui ne changent pas fréquemment sur le front-end.

(2) Accélération CDN, distribution de CSS/JS et d'autres ressources sur différents serveurs

(3) Cacher des données qui ne changent pas fréquemment (Redis, memcache).

(4) Le serveur d'images est séparé du serveur d'applications.

(5) Cluster

7. Quel est le rôle des modèles producteur et consommateur ?

(1) Améliorer l'efficacité opérationnelle de l'ensemble du système en équilibrant la capacité de production et le pouvoir d'achat des consommateurs (2) Découplage

Mybatis Niveau 1, Niveau 2. Cache

(1) Cache de niveau 1 : cache local HashMap basé sur PerpetualCache, qui stocke la portée de la session. Lorsque la session

se vide ou se ferme, tout le cache de la session sera vidé. .

(2) Le cache de deuxième niveau a le même mécanisme que le cache de premier niveau, par défaut, il utilise également le stockage PerpetualCache et HashMap. La différence réside dans le mappeur de portée de stockage et la source de stockage peut. être personnalisé si vous devez activer le cache de deuxième niveau. Ajoutez

au fichier de mappage SQL. 9. Décrivez le processus détaillé d'un service de la publication à la consommation

Obtenez d'abord les informations de configuration zk, puis obtenez le. URL qui doit être exposée. Appelez ensuite la méthode de registre et d'enregistrement pour enregistrer l'URL sur zookeeper

10. Comment réaliser l'équilibrage de charge ? Quels algorithmes peuvent être obtenus ?

Aléatoire, round-robin, hachage cohérent et maître-esclave

11. Si vous le souhaitez, comment implémentez-vous Spring AOP ?

La mise en œuvre de la technologie 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 des messages pour décorer les messages afin de remplacer l'exécution du comportement de l'objet d'origine.

La seconde consiste à utiliser le tissage statique pour introduire une syntaxe spécifique pour créer des "aspects", afin que le code lié aux "aspects" puisse être tissé dans le compilateur

12. Comment pour éviter les soumissions répétées de pages ?

Environnement de cluster : utilisez un jeton plus redis (redis est monothread, le traitement doit être mis en file d'attente)

Processus de traitement :

1. vous devez le soumettre au service Demander un jeton, mettre le jeton dans la mémoire Redis et la durée de validité du jeton est

2. Après la soumission, l'arrière-plan vérifiera le jeton, supprimera le jeton en même temps, générer un nouveau token et le renvoyer

13. Qu'est-ce que micro Serve ?

Divisez le projet en microservices selon différentes règles métier et déployez-les sur différentes machines. Les services s'appellent

14. Qu'est-ce qu'un service web ?

(1) Un service Web est une application qui expose une API qui peut être appelée via le Web vers le monde extérieur

(2) Les données sont transmises sur la base du protocole HTTP , ce qui permet d'exécuter différentes applications sur différentes machines peuvent échanger des données ou s'intégrer les unes aux autres sans recourir à des logiciels et du matériel tiers spécialisés supplémentaires

15. Parlez-moi des raisons pour lesquelles vous avez choisi Struts2 pour votre projet?

①Action est une classe POJO, ne repose pas sur l'API Servlet et a une bonne testabilité ; ②Un intercepteur puissant simplifie la complexité du développement

③Prend en charge la technologie de couches de performances multiples : JSP, Freemarker ; , etc. ; ④Méthode de vérification flexible ; ⑤Support de l'internationalisation (I18N) ⑥Gestion déclarative des exceptions

⑦Simplification d'Ajax via le plug-in JSON ⑧Intégration avec le plug-in Spring via Spring ; sur la différence entre les intercepteurs et les filtres ?

Les intercepteurs et les filtres peuvent être utilisés pour implémenter des fonctions d'attention transversales. Les principales différences sont : ①Les intercepteurs sont basés sur le mécanisme de réflexion JAVA, tandis que les filtres sont basés sur des rappels de fonctions

②Les filtres dépendent du servlet. conteneur, alors que l'intercepteur ne dépend pas du conteneur Servlet

③ L'intercepteur ne peut fonctionner que sur les requêtes d'action (méthodes en action), tandis que les filtres peuvent fonctionner sur presque toutes les requêtes (CSS JSP JS)

17. Quels types de gestion de transactions Spring prend-il en charge ?

Gestion programmatique des transactions : gérer les choses par programmation, grande flexibilité, difficile à maintenir

Gestion déclarative des transactions : le code métier et la gestion des transactions peuvent être séparés, utilisez uniquement les annotations et la configuration XML pour gérer choses

site Web chinois php, un grand nombre de tutoriels d'introduction à Java gratuits, bienvenue pour apprendre en ligne !

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