Le but de la rédaction de cet article est de résumer une partie de mon expérience dans l'utilisation de Java au fil des années, principalement liée à certains points de connaissances de base de Java, j'espère donc également le partager avec les programmeurs Java qui viennent de commencer et ceux qui envisagent pour participer. Pour ceux qui sont nouveaux dans l'industrie du développement Java, j'espère pouvoir vous donner une certaine expérience afin que vous puissiez mieux apprendre et utiliser Java.
Le contenu principal de cette introduction est lié à J2SE Après tant d'années de développement Java, et combiné à une certaine expérience dans les entretiens avec des développeurs Java, je pense que l'essentiel pour J2SE est de maîtriser ce qui suit. du contenu.
1. Liés à JVM (y compris les fonctionnalités de chaque version)
Pour ceux qui viennent d'entrer en contact avec Java, les connaissances liées à JVM ne nécessitent pas nécessairement une compréhension approfondie. Une simple compréhension suffit. Cependant, pour un développeur senior ayant plus de 3 ans d’expérience Java, il est presque inacceptable de ne pas connaître la JVM.
JVM est la base de l'exécution de Java. Il est difficile de croire que des personnes qui ne connaissent rien à JVM puissent comprendre parfaitement le langage Java. Lorsque j'interroge des développeurs ayant plus de 3 ans d'expérience Java, JVM est presque une question incontournable. Bien entendu, JVM n'est pas la seule question d'entretien qui détermine la qualité des capacités techniques, mais elle peut prouver le niveau des capacités de développement Java.
Dans la catégorie JVM, je pense que les connaissances qu'il faut maîtriser sont :
Modèle et structure de mémoire JVM
Principe GC, réglage des performances
Tuning : Thread Dump, analyse de la structure de la mémoire
structure du bytecode binaire de classe, système de chargement de classe, classe processus de chargement, processus de création d'instance
Processus d'exécution de la méthode : nouvelles fonctionnalités fournies par les mises à jour majeures de la version Java (doivent être brièvement comprises)
2. Fonctionnement Java (essentiel de base )
Cela peut sembler très simple. Qui ne sait pas comment exécuter un programme Java ? Mais souvent, nous exécutons simplement le programme Java via l'EDI. Comment l'EDI sous-jacent exécute-t-il le programme Java ? les gens ne comprennent pas.
C'est le point de connaissance le plus élémentaire que les développeurs Java doivent maîtriser. Lors de l'apprentissage de Java pour la première fois, la première étape consiste à vous apprendre à exécuter des programmes Java sur la ligne de commande. avez fini d'apprendre Java, IDE Une fois que vous l'utilisez, vous l'oubliez. Pourquoi insister sur la nécessité de savoir cela ? Après avoir connu la méthode de démarrage la plus pure de Java, vous pouvez analyser combien de répertoires ont été démarrés à ce moment-là, comment est le nom d'exécution, quels sont les paramètres et s'il en manque, etc. il y a un problème de démarrage. Cela vous aidera à résoudre ces problèmes étranges qui peuvent être liés à l'environnement lors du développement réel.
Les connaissances que vous devez maîtriser ici sont :
javac compile les fichiers Java en fichiers de classe
L'utilisation de Java commande, Comment démarrer la classe Java avec le package en ligne de commande
Les différents chemins impliqués dans le programme Java (classpath, java.library.path, le répertoire principal où Java s'exécute, etc.)
3. Types de données
Il n'y a pas grand chose à dire à ce sujet, il ne s'agit que de maîtriser les types de base et les types d'objets en Java. Vous pouvez en savoir plus sur la façon dont JDK convertit automatiquement, y compris la boxe et le déballage, etc., et faire attention à éviter de juger l'égalité des types après la boxe
Principaux points de connaissance :
Types de base : int, long, float, double, boolean, . . .
Type d'objet correspondant : Conversion d'entier et d'autres types en types de base, boxing et unboxing
Type d'objet : égal, hashcode
Caractéristiques du type String
Objets et instances, création d'objets
Dans ce cas À cet égard, les développeurs doivent comprendre les concepts de classe et d'instance ainsi que leurs différences, ce qui constitue la base des fonctionnalités orientées objet de Java. Les principaux points de connaissances sont :
Les concepts de Classe et d'Instance
Processus de création d'instance : 1. Pas d'héritage : allouer de l'espace mémoire, Variables d'initialisation, appeler le constructeur ;2. Héritage : gérer les actions statiques, allouer de l'espace mémoire, définir les variables comme valeurs initiales, de la classe de base -> sous-classe, gérer l'initialisation à la définition, exécuter la méthode de construction ; >
Points à noter : les propriétés statiques, etc. sont initialisées à partir de la classe de base -> fonctionnalités de sous-classe liées au constructeur sans argument par défaut.public protégé. privé par défaut pour L'effet de modification de la classe, de la méthode et du champ
Ce que vous devez maîtriser sont : if, switch, loop, for, while et d'autres syntaxes de contrôle de processus
Concept d'objet. -programmation orientée
Il s'agit d'un concept fondamental de Java que tout développeur Java doit maîtriser. De nombreuses fonctionnalités ou points de connaissances de Java sont liés aux concepts de programmation orientée objet Java. À mon avis, un bon développeur doit non seulement comprendre ces fonctionnalités (points de connaissance) lui-même, mais doit également savoir comment ces objets se reflètent dans les concepts de programmation orientée objet de Java, ce qui est plus propice aux développeurs maîtrisant Java. , ainsi que d'autres langages de programmation orientés objet. Voici juste une brève liste. Les principaux points de connaissance comprennent :
Les trois caractéristiques majeures de l'orientation objet : l'encapsulation, l'héritage, le polymorphisme ; leurs concepts de définition respectifs et les caractéristiques qui y sont reflétées, scénarios d'utilisation respectifs
Multi-dispatch statique, le concept de dispatch unique dynamique
Le concept et l'utilisation de la surcharge
Héritage : implémentations multiples d'interfaces, héritage unique des classes de base
Abstrait, classe abstraite, interface
État multiple : le concept et l'utilisation de la couverture de méthode
Rappel d'interface
8. Statique
Propriétés statiques au quotidien Développement Java Il est également fréquemment utilisé. Vous devez comprendre l'utilisation liée au mot-clé statique et son utilisation avec d'autres mots-clés, par exemple s'il peut être utilisé conjointement avec des mots-clés tels que abstract et final.
Les principales choses que vous devez maîtriser sont :
La définition et l'utilisation des attributs statiques, et comment initialiser lorsqu'une classe est chargée
Définition statique et utilisation des méthodes
Définition et utilisation des classes statiques
Définition et timing d'initialisation des blocs de code statiques
9. Points de connaissances de base
Voici principalement quelques points de connaissances Java épars qui ne sont pas systématiquement classés. Il est également beaucoup utilisé dans le développement quotidien. Il y a en fait beaucoup plus dans ce contenu, mais je viens de les résumer ici temporairement :
Y compris : égal, hashcode, string/stringbuffer, final, enfin, finalize
10. Collection Framework
C'est une partie qui doit être davantage maîtrisée. Lorsqu'on fait du développement Java, on peut dire qu'il n'est pas nécessaire d'utiliser le framework de collection, ce qui est très important. Mais les points de connaissance ici ne sont pas difficiles, mais il est préférable de comprendre la mise en œuvre interne des collections, car cela vous aidera à choisir un cadre approprié pour résoudre le problème dans différents scénarios. Par exemple, une collection de 10 000 éléments nécessite souvent d'exécuter le. contient une opération de jugement, connaissant les caractéristiques ou la mise en œuvre interne de la collection, il est facile de faire le bon choix.
Le contenu suivant est inclus ici (la concurrence liée n'est pas incluse) :
Système de cadre de collection : Collection de base, carte
Contenu des implémentations de collections spécifiques, implémentations spécifiques de List, Set et Map, structures internes, méthodes spéciales, scénarios applicables, etc.
Utilisation des classes d'outils liées aux collections Collections, etc.
11. Cadre d'exception
Les exceptions ne peuvent pas être prises aussi au sérieux dans le développement Java. Généralement, lorsqu'une exception est rencontrée, elle peut être levée directement, ou elle peut être gérée avec désinvolture et elle n'aura pas d'impact majeur sur le fonctionnement global du programme. Cependant, dans la conception et le développement au niveau de l'entreprise, la qualité de la conception et de la gestion des exceptions est souvent liée à la robustesse globale du système. Pour les développeurs, la gestion des exceptions d'un bon système doit être unifiée pour éviter de nombreuses logiques de gestion des exceptions dispersées partout ; pour le système, les exceptions doivent être contrôlables et faciles à utiliser et à entretenir. Après que certaines exceptions se produisent, il devrait y avoir des moyens de les gérer. avec lui et savoir comment l'utiliser et le maintenir. Par conséquent, bien que le cadre des exceptions soit très simple, la gestion des exceptions est très importante pour l'ensemble du développement d'applications au niveau de l'entreprise. Pour bien gérer les exceptions, vous devez comprendre le système d'exceptions en Java.
Il n'y a pas beaucoup de points de connaissances à maîtriser dans cette partie, les principaux sont :
Système anormal :
Jetable
Exception
RuntimeException
Erreur
RuntimeException La différence avec l'exception générale, les méthodes de traitement spécifiques, etc.
Java IO
IO n'est pas seulement la lecture de fichiers en Java L'écriture est si simple, et elle inclut également toutes les opérations d'entrée et de sortie telles que la lecture et l'écriture du réseau de sockets. Par exemple, lire le contenu de Post dans une requête HTTP standard est également un processus de sortie, etc...
Pour les IO, Java fournit non seulement des API de base liées aux entrées et aux sorties, mais fournit également des lecteurs qui simplifient Les opérations , Writer et autres API sont également très importantes dans certains développements (projets impliquant un grand nombre d'opérations d'E/S), et interviennent également dans le développement général quotidien (logs, lecture et écriture de fichiers temporaires, etc.).
Les principaux points de connaissances ici sont :
Système IO de base : comprenant InputStream, OutputStream, Reader/Writer, lecture de fichiers, lecture de divers flux Obtenez le concept de NIO, méthodes d'utilisation et scénarios d'utilisation spécifiques
13. Concurrence multithread
Le multithreading est généralement considéré comme un domaine difficile en Java. Le multithreading peut augmenter efficacement l'utilisation du processeur et améliorer l'efficacité globale du système, en particulier lorsqu'un grand nombre d'opérations d'E/S sont bloquées, mais c'est également une arme à double tranchant s'il n'est pas utilisé correctement, le système ne s'améliorera pas beaucoup, ou bien. Il n'y a aucune amélioration, et cela entraînera également des problèmes tels que le débogage entre multi-threads.
Il y a beaucoup de contenu en multi-threading. J'explique juste brièvement les points de connaissances qu'il faut maîtriser pour l'utilisation initiale du multi-threading en Java. À l'avenir, je présenterai les scénarios d'utilisation. de certaines fonctionnalités avancées en détail lorsque j'en ai l'occasion.
Implémentation et démarrage multi-threading
La différence entre appelable et exécutable
synchronisé, reentrantLock respectivement Fonctionnalités et comparaison
Pool de threads
future manière asynchrone d'obtenir des résultats d'exécution
package simultané
verrouillage
..
14. Réseau
Java fournit également des API qui peuvent exploiter directement le protocole TCP et le protocole UDP. Lorsque les performances du réseau doivent être mises en avant, TCP/UDP peut être utilisé directement pour la communication. En affichant le code source de Tomcat, etc., vous pouvez voir l'utilisation de ces API associées. Cependant, TCP est généralement rarement utilisé directement, et des frameworks tels que MINA et Netty sont utilisés pour le traitement. Comme il n'y a pas beaucoup de développement dans ce domaine, je ne le listerai pas en détail.
15. Traitement de l'heure et de la date
Pour presque toutes les applications, le traitement de l'heure et de la date ne peut pas être contourné, mais le temps avant que JDK8 soit lié à l'utilisation de l'API est pas sympathique. À cette époque, des délais tels que Joda étaient disponibles. Après la sortie du JDK8, la nouvelle API time intègre essentiellement les avantages d'autres frameworks et peut être utilisée directement.
Pour les développeurs Java, vous devez maîtriser l'utilisation des API pour gérer l'heure et la date.
Les points de connaissances spécifiques ne sont plus répertoriés. J'écrirai un article spécial pour résumer l'utilisation de l'API d'heure et de date dans le JDK8 à l'avenir.
16.Analyse XML/Analyse JSON
En fait, ces deux éléments de contenu ne sont pas en J2SE, mais dans le développement quotidien, ils interagissent avec d'autres programmes , l'interaction avec les fichiers de configuration est de plus en plus indissociable de l'analyse de ces deux formats.
Cependant, pour un développeur, être capable de comprendre certains principes et méthodes spécifiques d'analyse XML/JSON vous aidera à mieux choisir la méthode appropriée pour rendre votre programme plus efficace et plus robuste dans chaque scénario spécifique.
XML : besoin de comprendre les principes de base de l'analyse DOM et de l'analyse SAX et leurs scénarios applicables respectifs
JSON : nécessité de comprendre certains éléments courants Utilisation des frameworks JSON, tels que Jackson, FastJson, Gson, etc.
17. L'utilisation de Maven
Maven ne fait pas partie de Java, mais maven est révolutionnaire pour le développement Java Apporte une grande commodité . De l'introduction et de la gestion des dépendances à la mise à jour et à la publication des processus de développement, en passant par les mises à jour de versions, l'utilisation de Maven peut grandement simplifier la complexité du processus de développement, permettant ainsi de gagner beaucoup de temps. On peut dire que maven est devenu le standard des développeurs Java. Par conséquent, je considère Maven comme une connaissance de base nécessaire à un développeur Java. À l'avenir, j'ajouterai une partie de mon expérience et de mes compétences dans l'utilisation de Maven, etc., je n'entrerai donc pas dans les détails ici.
18. Génériques
Il s'agit d'un nouveau concept introduit dans le JDK5. Il s'agit en fait d'un sucre de syntaxe, ce qui sera légèrement pratique lors de l'écriture de code Java. Généralement, pour le développement d'applications ou d'affaires, il vous suffit de l'utiliser simplement. Vous n'utiliserez pas nécessairement des opérations telles que la définition de génériques. Cependant, il sera utilisé lors du développement de certains composants publics de base. Vous pouvez examiner de plus près cette partie en cas de besoin. Généralement, à condition simplement de savoir s'en servir facilement.
19. L'annotation
a également été introduite après jdk5. Spring est un excellent framework qui utilise XML comme fichier de configuration standard depuis le début. Cependant, après Spring 3, en particulier après l'essor de Spring-boot, l'utilisation d'annotations pour simplifier les fichiers de configuration XML est devenue de plus en plus populaire pour les développeurs, cela peut faire gagner beaucoup de temps dans la configuration XML. Mais l'inconvénient est que les annotations sont dispersées dans différentes classes. Contrairement à XML, toutes les configurations peuvent être comprises et gérées globalement, il n'y a donc aucun moyen de remplacer complètement tout le XML. Pour les développeurs généraux, il suffit d'utiliser des annotations. Certains développeurs organisés publiquement peuvent avoir besoin de comprendre la définition et la mise en œuvre des annotations et peuvent y examiner de plus près si nécessaire.
20.RMI
RemoteMethodInvocation, une interface d'appel à distance unique au langage Java, est relativement simple et pratique à utiliser. Cependant, si une prise en charge multilingue est requise, d'autres méthodes telles que le service Web doivent être utilisées pour la prendre en charge. De manière générale, les programmes n'ont pas besoin d'utiliser RMI, mais il peut être utilisé dans des circonstances spécifiques. Dans un projet, j'ai utilisé RMI pour contrôler le démarrage et l'arrêt à distance du programme.
21.JNI
Java Native Interface permet d'appeler des méthodes d'interface locale en Java et est généralement utilisé pour appeler du code C/C. Ce qu'il faut noter, c'est le problème de chemin de chargement des fichiers so/dll en Java. L'appel de l'interface elle-même n'est pas compliqué, mais il faut souvent beaucoup de temps pour vérifier si la bibliothèque d'interface locale requise est chargée.
Ce qui précède est un résumé de 21 points techniques et points de connaissance de Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). !