Interviewer les points de connaissances de base

Interviewer les points de connaissances de base

Premièrement, les bases de Java

Les types de données de base, la syntaxe Java, les structures de données, les algorithmes, etc., ce sont les compétences et les connaissances qu'un programmeur Java qualifié doit maîtriser.

Organisez et recommandez des sites Web et des livres d'apprentissage: des     recommandations de livres Java pour débutants à avancés , 10 sites Web recommandés que les programmeurs consultent souvent

Organiser une question d' entretien Java de base: Questions de base d'entretien Java

2. Multithreading / haute concurrence

2.1 Paquet simultané simultané

  • volatil
  • fermer à clé
  • synchronisé
  • attendez

Voir un autre article en détail: mots-clés multithreading java volatile, verrouillé, synchronisé

2.2 Façons de créer des threads

1. Hériter de thread
2. Implémenter la valeur de retour d'interface Runnable
3. Implémenter l'objet de retour d'interface appelable

2.3 Pool de threads

ThreadPoolFactory:
1. newFixedThreadPool: un pool de threads avec une taille de pool de threads non fixée, un pool de threads avec une taille de mémoire illimitée
2. newShcledulThreadPool: un pool de threads de longueur fixe qui s'exécute à intervalles réguliers
3. newSingleThreadPool: un pool de threads à thread unique, uniquement un thread est créé Thread pool
4, newCachedThreadPool: pas de threads principaux, utilisation en boucle infinie des threads créés à l'origine

Voir un autre article en détail: Résumé de la programmation concurrente Java 

Trois articles sur la JVM

3.1 Modèle de mémoire

Mémoire principale: une zone partagée par tous les threads. Les dernières données lues par chaque thread sont obtenues à partir de la mémoire principale.
Mémoire de travail: unique à chaque thread, chaque thread gère ses propres variables, etc., puis est transférée vers la mémoire principale après l'opération est terminée Chargement et écriture dans les
threads java: éléments que tous les threads peuvent exécuter en parallèle

3.2 Mécanisme de gestion de la mémoire

Compteur de programme: spécifique au thread, l'indicateur du numéro de ligne de commande du programme en cours d'exécution, comme la position actuelle et la position suivante du programme.
Tas Java: la plus grande zone de mémoire partagée par tous les threads, généralement la zone où l'instance d'objet est initialisée et stockée, telle que la zone de mémoire occupée par l'objet généré après le nouvel objet Object.
Zone de méthode: partagée par tous les threads, la plus grande zone de mémoire à l'exception du tas Java, stockant généralement des informations de classe, des constantes, des variables statiques, du code compilé instantané, etc.
Pile de machine virtuelle Java: la machine virtuelle exécute les services de méthode Java, le thread est privé et le cycle de vie est le même que celui du thread. Créer un cadre de pile: table de variables locales, pile d'opérandes, lien dynamique, exportation de méthode et autres informations.
Pile de méthodes natives: bibliothèque de classes requise par la machine virtuelle pour exécuter la méthode native, telle que la bibliothèque de classes du package rt.jar.
Pool de constantes d'exécution: partie de la zone de méthodes, version, champ, méthode et interface de la classe.

3.3 Mécanisme de chargement de classe

  • charge
  • vérification
  • prêt
  • Analyse
  • initialisation

3.4 Mécanisme de collecte des ordures

3.4.1 Garbage Collector

serial collector --- single-threaded collector
parNew collector --- version multithread du
serialOld collector --- ancienne génération de serialOld collector (utilisé par la machine virtuelle en mode Client)
parallelOld collector --- mark Algorithme de tri 
collecteur de récupération parallèle
cms collector --- le temps de pause de récupération le plus court est l'objectif, l'architecture B / S, met l'accent sur la vitesse de réponse du service, le
collecteur StopTheWorld g1

3.4.2 Jeune génération / Ancienne génération permanente

3.5 Modèle de délégation parentale

Le chargement initial de chaque classe est chargé par sa classe parente, pas par lui-même.
Boot loader-bootstrapClassLoader
extension loader-extentionClassLoader
application loader-applicationClassLoader
chargeur personnalisé

Par exemple, la classe Object de rt.jar est chargée par le chargeur de démarrage de niveau supérieur. S'il ne s'agit pas du modèle de délégation parent, c'est-à-dire d'un chargement ordinaire: des contradictions et des conflits se produiront

Voir l'article JVM en détail: Compréhension approfondie de la machine virtuelle JVM + récupération GC + chargement de classe  et  JVM: algorithme GC et collecteur GC

Quatre, modèles de conception

Les modèles de conception sont fondamentalement un must dans les entretiens.Vous n'avez pas besoin de maîtriser tous les 23 modèles de conception de base, mais vous devez maîtriser les modèles de conception de base communs.

  • Mode singleton homme paresseux mode homme affamé
  • Mode usine
  • Modèle de méthode d'usine
  • Modèle d'usine abstrait
  • Modèle d'agence
  • Motif décoratif
  • Mode constructeur
  • Mode observateur

Afficher les modèles de conception en détail: modèles de conception communs Java

Cinq, noyau de ressort

La connaissance de la famille Spring offre une grande commodité pour les développeurs. On peut également dire que c'est la note des programmeurs Java. L'intégration Spring peut apporter un saut qualitatif au framework système.

Son cœur est principalement: Les fonctionnalités principales de Spring sont IOC et AOP, IOC (Inversion of Control), ou "inversion de contrôle", AOP (Aspect-Oriented Programming) ou "Aspect-Oriented Programming".

1.ioc / di Inversion de contrôle / injection de dépendance
La création des objets est transférée au conteneur à ressort pour la gestion, ce qui réduit le couplage entre les objets et est facile à développer

Programmation de l'aspect 2.aop

Le nom complet est Aspect Orient Programming, c'est-à-dire programmation orientée aspect. Il s'agit d'un complément à la programmation orientée objet (Object Orient Programming) et est utilisé pour gérer certains services transversaux. Souvent utilisé pour la sortie de journal, le contrôle de sécurité, etc.

Voir l'article de printemps en détail: 25 points de connaissances de printemps fréquemment demandés dans les entretiens
 

Six articles distribués

En tant que cadre de développement courant ces dernières années, distribué est également une connaissance incontournable, principalement RPC (Dubbo), SpringBoot / SpringCloud deux frameworks courants courants. Les grandes usines ont également lancé leurs propres frameworks distribués open source, qui peuvent être décrits comme une centaine de fleurs en fleurs.

6.1 Principe de SpringBoot et connaissances de base

L'annotation @SpringBootApplication
comprend les trois éléments suivants:
annotation @Configuration, indiquant que cette classe utilise la méthode d'annotation de Spring Annotation
@ComponentScan pour activer l'analyse des composants. Lorsque l'annotation est utilisée pour marquer d'autres contrôleurs ou services, l'annotation d'analyse des composants peut être trouvée et chargée dans ces applications Les
annotations bean @EnableAutoConfiuration utilisées de haut en bas indiquent l'utilisation de la configuration automatique, comme les annotations auto-câblées, etc., chargent automatiquement les annotations configurées.

Voir l'introduction de SpringBoot en détail: Comparaison de Spring, SpringMVC et SpringBoot

6.2 Principe de Dubbo et connaissances de base

La structure de base de Dubbo:

  • Fournisseur: enregistrez le service auprès du registre et exposez la partie fournissant le service;
  • Consommateur de services Consommateur: la partie qui enregistre le service auprès du centre d'inscription et obtient la liste des fournisseurs de services à utiliser, et le consommateur de services;
  • Inscription: le centre d'enregistrement pour l'enregistrement et la découverte des services;
  • Moniteur du centre de surveillance des services: un centre de surveillance qui compte le nombre d'appels de service et le temps d'appel;
  • Conteneur de conteneur de service: conteneur en cours d'exécution de service.

Voir les articles Dubbo en détail: Introduction aux principes de base de Dubbo

6.3 Microservice SpringCloud

SpringCloud est un ensemble complet de solutions de microservices, basé sur le framework Spring Boot. Pour être précis, ce n'est pas un framework, mais un grand conteneur. Il intègre les meilleurs frameworks de microservices du marché, simplifiant ainsi les développeurs La quantité de code.

  • Passerelle de routage
  • Centre de configuration
  • Suivi des liens
  • Service de fusion
  • Journal
  • Surveillance du service

Voir la colonne distribuée en détail: Compréhension approfondie de SpringCloud   et de la construction de microservices et  comparaison entre SpringCloud et Dubbo

Seven, la base de données

L'importance de la base de données est évidente, tout dans le système est constitué de données et la base de données est le conteneur pour le stockage des données. Il existe principalement deux types de bases de données: les bases de données relationnelles et les bases de données non relationnelles. Les bases de données relationnelles sont principalement Oracle et MySQL, et les bases de données non relationnelles NoSQL sont mongodb et redis.

  • Modèle de données
  • Trois paradigmes de base de données
  • Transaction de base de données
  • Injection SQL
  • Instruction SQL
  • Moteur de stockage
  • indice
  • Optimisation SQL

Voir l'article sur la base de données en détail: résumé de l'apprentissage de l'index de la base de données (Oracle et Mysql)

Huit, MyBatis

MyBtis est un excellent framework de couche de persistance, qui prend en charge SQL personnalisé, les procédures stockées et le mappage avancé. MyBatis élimine presque tout le code JDBC et le travail de réglage des paramètres et d'obtention de jeux de résultats. MyBatis peut configurer et mapper des types primitifs, des interfaces et des POJO Java (Plain Old Java Objects) en tant qu'enregistrements dans la base de données via du XML simple ou des annotations.

  • Symboles # {} et $ {}: lorsque le symbole # est chargé dans mybatis, sera-t-il prétraité? , Et puis utilisez la méthode set de stateMent pour effectuer des opérations d'instruction SQL, ce qui peut empêcher efficacement l'injection SQL.
  • Le caractère $ est un remplacement de chaîne, remplaçant directement la valeur.
  • Comment dao (mapper) exécute-t-il une requête de résultat SQL?
  • Mybatis le chargera en tant que mapperStateMent; après le chargement de l'interface du mappeur, il correspond au nom complet de l'espace de noms dans le fichier de configuration xml; selon le nom de l'interface et le nom de la méthode d'interface de dao
  • Le seul correspond à un espace de noms, c'est-à-dire la seule clé;

Afficher les articles associés: Traitement de pagination SpringCloud + MyBatis (séparation front-end et back-end)

Neuf, middleware de message / mise en cache

La technologie de plug-in distribué est une technologie qui doit être maîtrisée dans le développement distribué, y compris: file d'attente de messages, cache distribué, plug-ins de sous-base de données et de sous-table, etc.

9.1 File d'attente de messages commune

  • kafka
  • LapinMq
  • RocketMq
  • ActiveMQ

Consultez l'article de la file d'attente de messages en détail: Middleware de messages: Kafka, ActiveMQ, RabbitMQ, RocketMQ

9.2 Cache distribué

  • Redis
  • Memcached

Consultez l'article Redis en détail: démarrage rapide de Redis  et  trois modes de Redis: maître-esclave, sentinelle, cluster

Ten, code source JDK

En plus des points techniques ci-dessus, l'intervieweur vous demandera souvent une certaine connaissance du code source jdk à la fin pour voir si vous avez généralement étudié le code source jdk. C'est une considération importante pour les programmeurs standard, et il évalue également si un programmeur a en profondeur L'habitude de penser.

  • jdk1.8 
  • Chaîne
  • Objet
  • Carte
  • Liste des tableaux
  • LinkedList
  • HashMap
  • ConcurrentHashMap

Consultez quelques articles de code source: HashMap est en cours d'utilisation, comprenez-vous vraiment le principe?  Et  analyse du code source ArrayList  et  analyse du code source LinkedList  et  comparaison de ArrayList et LinkedList et de  plusieurs expressions Lambda simples de JDK1.8

Eleven, cluster de conteneurs Docker

Le conteneur est le conditionnement du logiciel en unités standardisées pour le développement, la livraison et le déploiement.

11.1 Concept de conteneur

  • Une image de conteneur est un progiciel léger, exécutable et autonome qui contient tout le contenu nécessaire à l'exécution du logiciel: code, environnement d'exécution, outils système, bibliothèques système et paramètres.
  • Les logiciels conteneurisés conviennent aux applications basées sur Linux et Windows et peuvent fonctionner de manière cohérente dans n'importe quel environnement.
  • Les conteneurs confèrent au logiciel une indépendance et le protègent des différences environnementales externes (par exemple, les environnements de développement et de répétition), contribuant ainsi à réduire les conflits entre les équipes exécutant différents logiciels sur la même infrastructure.

 

11.2 Pensée de Docker

  • récipient
  • Standardisation: ① Méthode de transport, ② Méthode de stockage, ③ Interface API
  • isolement

11.3 Fonctionnalités de Docker

  • Légers, plusieurs conteneurs Docker exécutés sur une machine peuvent partager le noyau du système d'exploitation de cette machine; ils peuvent être démarrés rapidement et ne nécessitent que très peu de ressources informatiques et mémoire. Le miroir est construit à travers la couche du système de fichiers et partage certains fichiers communs. Cela minimisera l'utilisation du disque et téléchargera les images plus rapidement.
  • Standards, les conteneurs Docker sont basés sur des standards ouverts et peuvent fonctionner sur toutes les versions Linux grand public, Microsoft Windows et toute infrastructure, y compris les machines virtuelles, les serveurs bare metal et les clouds.
  • Sécurité, l'isolation que Docker donne aux applications ne se limite pas à l'isolement les unes des autres, mais également indépendante de l'infrastructure sous-jacente. Docker fournit l'isolation la plus forte par défaut, les problèmes d'application ne sont donc que le problème d'un seul conteneur et n'affecteront pas la machine entière.

12. Combat réel: LeetCode

Pour certaines entreprises de première ligne, en particulier lors du recrutement dans les écoles, elles se concentreront sur votre capacité de programmation. Certains vous demandent même d'écrire du code sur place: tri rapide, recherche binaire, triangle de Yanghui, traversée d'arbre binaire, etc. Cela nécessite non seulement de maîtriser les structures de données et les algorithmes de base, mais également de solides capacités de programmation et des performances instantanées. Pour votre entreprise et votre poste préférés, vous devez être parfaitement préparé avant de vous rendre à l'entrevue. LeetCode est recommandé ici. Il y a de nombreuses questions algorithmiques pour vous entraîner. Beaucoup de grosses vaches qui travaillent exercent souvent leurs algorithmes et leur programmation en y réfléchissant, et n’oublient pas de recharger leurs études après avoir travaillé: apprendre sans réfléchir, c’est mourir.

Je suppose que tu aimes

Origine blog.csdn.net/yucaifu1989/article/details/109338956
conseillé
Classement