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 introduit cette fois est lié à J2SE. De plus, nous présenterons à l'avenir du contenu lié à J2EE et divers frameworks en Java.
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 la principale chose à maîtriser à propos de J2SE est le contenu suivant.
1. Liés à JVM (y compris les fonctionnalités de chaque version)
Pour ceux qui sont nouveaux dans Java, les connaissances liées à JVM ne nécessitent pas nécessairement une compréhension approfondie. une compréhension simple des concepts contenus. Cependant, pour un développeur senior ayant plus de 3 ans d’expérience Java, il est presque inacceptable de ne pas connaître 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
Principes GC, réglage des performances
Tuning : Thread Dump, analyse de la structure mémoire
Structure de bytecode binaire de classe, système de chargement de classe, processus de chargement de classe, processus de création d'instance
Processus d'exécution de méthode
Nouvelles fonctionnalités fournies par les mises à jour majeures de la version Java (doivent être brièvement comprises)
2. Exécuter Java (Basic Essentials)
Cela peut paraître très simple, mais qui ne sait pas comment exécuter un programme Java ? Mais souvent, nous exécutons simplement des programmes Java via l'IDE. Comment l'EDI sous-jacent exécute-t-il les programmes Java ? Beaucoup de gens ne comprennent pas.
Ce point de connaissance est le développeur Java le plus élémentaire que vous devez maîtriser. Lorsque vous êtes nouveau sur Java, la première étape consiste à vous apprendre à exécuter des programmes Java sur la ligne de commande. Cependant, de nombreuses personnes utilisent l'IDE une fois qu'elles ont terminé. apprendre Java, oubliez ça. Pourquoi insistez-vous sur le fait que vous devez 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 a été nommé l'exécution, quels étaient les paramètres et s'il manquait des éléments. quand il y a eu 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 la commande java, comment démarrer la classe java avec package dans la ligne de commande
Les différents chemins impliqué dans le programme Java (classpath, java.library.path, le répertoire personnel où Java s'exécute, etc.)
3 Type de données
Il n'y a pas grand chose. pour dire à ce sujet, ce n'est rien de plus que la maîtrise Java des types de base et des types d'objets. 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'entiers et d'autres types en types de base, boxing et unboxing
Type d'objet : égal, hashcode
Caractéristiques du type String
4. , création d'objets
À cet égard, les développeurs doivent comprendre les concepts de classe et d'instance et les différences entre eux, 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, initialiser les variables, appeler le constructeur
2. Il y a l'héritage : traitement des actions statiques, allocation d'espace mémoire, définition des variables comme valeurs initiales, depuis la classe de base -> sous-classe, traitement de l'initialisation à la définition, exécution de la méthode constructeur
Points à noter :
Propriétés statiques, etc. .Classe de base -> Initialisation de la sous-classe
Fonctionnalités liées au constructeur par défaut sans argument
5 Contrôle d'accès
C'est également une base pour les fonctionnalités d'encapsulation Java. , ce qu'il faut maîtriser sont :
public protected default private Modification de classe, méthode, champ
6. Contrôle de processus
La base du contrôle de processus Java , Bien que certaines syntaxes ne soient pas nécessairement couramment utilisées, vous devez les comprendre et les utiliser le cas échéant.
Ce que vous devez maîtriser sont :
if, switch, loop, for, while et d'autres syntaxes de contrôle de processus
7.Le concept de programmation orientée objet
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 incluent :
Trois fonctionnalités majeures de l'orientation objet : l'encapsulation, l'héritage, le polymorphisme ; leurs concepts de définition respectifs, les fonctionnalités qui sont reflétées et leurs scénarios d'utilisation respectifs
Le statique. concept de multi-dispatch, répartition unique dynamique
Le concept et l'utilisation de la surcharge
Héritage : implémentations multiples d'interfaces, héritage unique des classes de base
Abstraction, classes abstraites, interfaces
Polymorphisme : le concept et utilisation de la couverture de méthode Utiliser le
rappel d'interface
8. Statique
Les attributs statiques sont également souvent utilisés dans le développement Java quotidien. le mot-clé static et Utiliser avec d'autres mots-clés, par exemple s'il peut être utilisé conjointement avec des mots-clés abstraits, finaux et autres.
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
La définition et l'utilisation des méthodes statiques
La définition et l'utilisation de classes statiques
Blocs de code statiques Définition et timing d'initialisation
9. Points de connaissances de base
Voici principalement quelques points de connaissances Java dispersés et non 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 :
equals, 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 de l'implémentation spécifique de la collection, liste, ensemble, implémentation spécifique de la carte, structure interne, 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 peuvent ne pas être si importantes en Java. développement Soyez pris au sérieux. 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, principalement :
Système d'exception :
Throwable
Exception
RuntimeException
Erreur
La différence entre RuntimeException et Exception générale, en particulier les méthodes de traitement, etc.
12. Java IO
IO en Java n'est pas aussi simple que la lecture et l'écriture de fichiers, mais inclut également socket, lecture et écriture réseau, etc. Opérations d'entrée et de sortie. 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, des écrivains, etc. qui simplifient les opérations, l'API est également très importante dans certains développements (projets impliquant un grand nombre d'opérations d'E/S), et intervient également dans le développement général quotidien (logs, lecture et écriture de fichiers temporaires, etc.).
Les principaux points de connaissance ici sont :
Système IO de base : comprenant InputStream, OutputStream, Reader/Writer, la lecture de fichiers, la lecture de divers flux, etc.
Le concept de NIO et les scénarios d'utilisation spécifiques et d'utilisation
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 la première utilisation du multi-threading en Java. Dans le futur, j'aurai l'occasion d'en présenter l'utilisation. scénarios de certaines fonctionnalités avancées en détail.
Implémentation et démarrage du multi-threading
Différences entre callable et runable
syncrhoized, reentrantLock caractéristiques respectives et comparaison
Thread pool
future manière asynchrone d'obtenir des résultats d'exécution
package simultané
lock
..
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 l'utilisation des API liées au temps avant JDK8 ne l'est pas. amical. À 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, ils doivent maîtriser l'utilisation des API pour traiter l'heure et la date.
Les points de connaissances spécifiques ne seront pas répertoriés. J'écrirai un article spécial à l'avenir pour résumer l'utilisation de l'API d'heure et de date dans le JDK8.
16. Analyse XML/analyse JSON
En fait, ces deux éléments de contenu ne sont pas en J2SE, mais en développement quotidien, ils interagissent avec d'autres programmes et configurent L’interaction des fichiers 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 dans chaque scénario spécifique pour rendre votre programme plus efficace et plus robuste.
XML : vous devez comprendre les principes de base de l'analyse DOM et de l'analyse SAX et de leurs scénarios applicables respectifs.
JSON : vous devez comprendre l'utilisation de certains frameworks JSON courants, tels que Jackson, FastJson, Gson, etc. .
17. L'utilisation de Maven
Maven ne fait pas partie de Java, mais Maven est révolutionnaire et apporte une grande commodité au développement Java. Depuis l'introduction et la gestion des dépendances, la mise à jour des processus de développement et des sorties, et même les mises à jour de versions, l'utilisation de Maven peut grandement simplifier la complexité du processus de développement, économisant ainsi beaucoup de temps. On peut dire que maven est devenu le standard des développeurs Java. Par conséquent, je considère maven comme un point de connaissances de base nécessaire pour 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 syntaxique qui sera quelque peu pratique lors de l'écriture d'applications Java. Il s'agit d'un développement commercial. Il suffit de l'utiliser simplement. Des opérations telles que la définition de génériques ne peuvent pas être utilisées. 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. , tant que vous pouvez l'utiliser simplement, c'est tout.
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 ordinaires, 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 les 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, qui permet d'appeler des méthodes d'interface locale en Java, est généralement utilisée 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 n'est qu'une brève introduction à certains de mes points de vue et une introduction à ces points de connaissances de base sur Java et à ces points techniques. Ces contenus sont dérivés de certains résumés de mon utilisation de Java au fil des ans. J'espère donner quelques conseils. ceux qui viennent d'entrer en contact avec Java, ou qui envisagent de démarrer parmi les développeurs Java, ont une certaine expérience, dans l'espoir d'apprendre et d'utiliser Java plus efficacement et d'éviter de faire des détours et de perdre un temps précieux. Il y a encore quelques imperfections dans le contenu, qui seront ajoutées dans les prochains articles. En raison de mes capacités personnelles limitées, il y aura bien sûr quelques erreurs et omissions. J'apprécie les corrections, je discute ensemble et je travaille ensemble pour améliorer cet article. J'espère qu'il pourra vraiment aider les personnes dans le besoin.
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!