L'éditeur a compilé les questions de test écrit dans l'interview très populaire 2017 pour des amis qui interviewent les programmeurs Java. Si vous êtes un lecteur qui se prépare à interviewer les programmeurs Java, apprenez-le rapidement.
1. La déclaration suivante est correcte ()
A. Deux classes publiques publiques peuvent exister en même temps dans un fichier.
B. Le constructeur peut être remplacé
C. Les sous-classes ne peuvent pas accéder à des propriétés qui ne sont pas modifiées par la classe parent par public et protégées.
D.
Réponse: C
Il ne peut y avoir qu'une seule classe publique dans un fichier source Java. Lorsqu'il y a une classe publique, le nom du fichier source doit être cohérent avec lui, sinon il ne peut pas être compilé. S'il n'y a pas de classe publique dans le fichier source, il n'y a pas d'exigence de cohérence entre le nom du fichier et la classe. Quant à main (), il n'a pas à être placé dans la classe publique pour exécuter le programme.
La réécriture consiste à modifier les méthodes de la classe parent après l'héritage de la classe enfant de la classe parent. Le nom de méthode, le paramètre et la valeur de retour doivent être les mêmes. Les méthodes marquées finales ne peuvent pas être réécrites. Si vous ne pouvez pas hériter d'une méthode, vous ne pouvez pas remplacer cette méthode.
Extension: la différence entre la réécriture de remplacement et de surcharge de surcharge
Surcharge de méthode Java
C'est que plusieurs méthodes peuvent être créées dans une classe, qui ont le même nom, mais ont des paramètres différents et des définitions différentes. Lors de l'appel des méthodes, la méthode spécifique est déterminée par le nombre de paramètres et types de paramètres différents qui leur sont transmis. Les types de valeur de retour peuvent être identiques ou différents, ce qui est également un polymorphisme orienté objet.
Réécriture de la méthode Java
Le polymorphisme entre la classe parent et la classe d'enfants redéfinit les fonctions de la classe parent. Si une méthode définie dans une sous-classe a le même nom et les mêmes paramètres que sa classe parent, nous disons que la méthode est remplacée. En Java, les sous-classes peuvent hériter des méthodes de la classe parent sans réécrire la même méthode. Mais parfois, la sous-classe ne veut pas hériter des méthodes de la classe parent intacte, mais veut plutôt apporter certaines modifications, ce qui nécessite une réécriture de la méthode. L'écrasement de la méthode est également appelé l'écrasement de la méthode.
Si une méthode dans une sous-classe a le même nom de méthode, type de retour et table de paramètres comme méthode dans la classe parent, la nouvelle méthode remplacera la méthode d'origine. Si vous avez besoin de la méthode d'origine dans la classe parent, vous pouvez utiliser le mot-clé Super, qui fait référence à la classe parent de la classe actuelle.
Les autorisations de modification d'accès des fonctions de sous-classe ne peuvent pas être inférieures à celles de la classe parent;
Les méthodes de réécriture ne peuvent exister que dans les relations avec les successions, et les méthodes de réécriture ne peuvent réécrire que des méthodes qui ne sont pas privées dans la classe parent.
2. Le nombre de temps d'exécution de la boucle pour (int x = 0, y = 0; (y! = 0) && (x <4); x ++) est ()
A. fois illimité
B. Exécuter 4 fois
C. Exécuter 3 fois
D. ne l'exécutez pas une fois
Réponse: D
La valeur initiale de y est 0. Dans l'ensemble pour la boucle, la valeur de y reste inchangée, donc l'instruction de jugement (y! = 0) n'est pas vraie, donc elle n'est pas exécutée une fois.
3. Concernant le tas Java, la déclaration suivante est erronée ()
A. Toutes les instances et tableaux de classes sont alloués de la mémoire sur le tas.
B. La mémoire du tas occupé par l'objet est collectée par le système automatique de gestion de la mémoire.
La mémoire de C. Heap est constituée d'objets survivants et morts et de fragments libres.
D. Les tableaux sont alloués dans la pile
Réponse: D
Tout d'abord, le tableau est alloué dans le tas, donc l'énoncé de D est incorrect.
La structure du tas Java: le tas de JVM est la zone de données d'exécution, et toutes les instances et tableaux de classes sont alloués de la mémoire sur le tas. Il est créé lorsque le JVM est démarré. La mémoire de tas occupée par l'objet est collectée par le système automatique de gestion de la mémoire, c'est-à-dire le collecteur des ordures. La mémoire du tas est composée d'objets qui survivent et meurent. Les objets survivants sont accessibles à l'application et ne seront pas collectés aux ordures. L'objet mort est un objet qui n'est pas accessible à l'application et n'a pas été recyclé par le collecteur des ordures. Ils occuperont l'espace mémoire du tas jusqu'à ce que le collecteur des ordures récupérera ces objets.
4. Lorsque vous utilisez le super et ces mots clés, la description correcte ci-dessous est ()
A. Utilisez super () dans le constructeur de sous-classe pour afficher le constructeur qui appelle la classe parent;
super () doit être écrit sur la première ligne du constructeur de sous-classe, sinon la compilation ne sera pas transmise.
B.Super () et this () n'ont pas à être placé dans la première ligne de la méthode du constructeur
C.Ce () et super () peuvent apparaître dans un constructeur en même temps
D.Ce () et super () peuvent être utilisés dans des environnements statiques, y compris des méthodes statiques et des blocs de déclaration statique
Réponse: A
Le mot-clé Java Ceci ne peut être utilisé que dans le corps de la méthode. Lorsqu'un objet est créé, la machine virtuelle Java (JVM) affectera un pointeur à l'objet qui se réfère à lui-même, et le nom de ce pointeur est le suivant. Par conséquent, cela ne peut être utilisé que dans des méthodes non statiques de la classe, et cela ne doit pas apparaître dans les méthodes statiques et les blocs de code statiques.
La clé de Super est similaire à celle-ci, à savoir que la variable de membre bloqué ou la méthode des membres devient visible, ou est utilisée pour se référer à la variable de membre bloqué et à la méthode du membre membre.
Cependant, Super est utilisé dans les sous-classes, dans le but d'accéder à des membres bloqués dans la classe parent directe. Notez que c'est la classe Parent Direct (c'est la superclasse la plus récente au-dessus de la classe)
5. Laquelle des affirmations suivantes est correcte ()
A. Une fois le programme Java compilé, le code machine sera généré
B. Le programme Java produira un code d'octets après sa compilation.
Les programmes de C. Java généreront des DLL après avoir été compilé
D. Aucune de ces éléments n'est correcte
Réponse: B
Java ByteCode est un fichier intermédiaire généré par la compilation de fichiers source Java
La nature multiplateforme des machines virtuelles Java est un ordinateur imaginaire qui peut exécuter Java Bytecode. Il est également relativement similaire à d'autres langages de programmation.
Présent d'abord le processus de compilation du langage C: le fichier C est compilé par le programme C compilateur C et génère le fichier exécutable exécutable Windows, puis l'exécute dans Windows.
Présentez le processus de compilation Java: le fichier Java est compilé par le compilateur Java. Le fichier bytecode java est le fichier de classe de la machine virtuelle Java. Le code machine est exécuté par le CPU; Java est compilé avec ByteCode.
Les ordinateurs ne peuvent exécuter que des codes machine. Lorsque Java s'exécute, il transforme ByteCode en code machine. C / C ++ est directement compilé en code machine lors de la compilation
6. Laquelle des affirmations suivantes est correcte ()
A. Le modificateur abstrait modifie les champs, les méthodes et les classes
B. La partie corporelle de la méthode abstraite doit être enveloppée dans une paire d'accès {}
C. Déclarer les méthodes abstraites, les accolades sont facultatives
D. Déclarer les méthodes abstraites ne peuvent pas être écrites en accolades
Réponse: D
Résumé Le modificateur est utilisé pour modifier les classes et les méthodes membres
Les classes modifiées avec le résumé représentent des classes abstraites. Les classes abstraites sont situées dans la couche abstraite de l'arbre de succession. Les classes abstraites ne peuvent pas être instanciées.
La méthode abstraite est utilisée pour exprimer une méthode abstraite et la méthode abstraite n'a pas de corps de méthode. Des méthodes abstraites sont utilisées pour décrire les fonctions du système, mais ne fournissent pas d'implémentations spécifiques.
Résumé est un mot-clé important en Java et peut être utilisé pour modifier une classe ou une méthode.
Lors de la modification d'une méthode, cela signifie que la méthode n'a qu'une signature de fonctionnalité (signature) et n'a pas d'implémentations spécifiques, mais laisse l'implémentation spécifique à la sous-classe qui hérite de la classe, il ne peut donc pas y avoir de bretelles.
7. Les déclarations suivantes sont correctes ()
A. Le constructeur de la classe ne peut pas être omis
B. Le constructeur doit avoir le même nom que la classe, mais la méthode ne peut pas avoir le même nom que la classe
C. Le constructeur est exécuté lorsqu'un objet est nouveau
D. Une classe ne peut définir qu'un seul constructeur
Réponse: C
Il peut y avoir des malentendus ici. En fait, les méthodes de classe ordinaires peuvent avoir le même nom que le nom de classe. La seule différence entre eux et le constructeur est que le constructeur n'a aucune valeur de retour.
8. Le fil GC est-il un fil de démon ()
Réponse: oui
Les threads sont divisés en threads démon et en threads non faisons (c'est-à-dire des threads utilisateur).
Tant qu'il n'y a pas de fil non daéon dans l'instance JVM actuelle, le fil de démon fonctionnera tous; Ce n'est que lorsque le dernier fil non daéon se termine, le fil de démon se terminera avec le JVM.
L'application la plus typique des fils de démon est GC (collecteur de déchets)
9. Concernant Sleep () et Wait (), l'erreur suivante est ()
A. Le sommeil est une méthode de classe de thread (thread), l'attente est une méthode de classe d'objets;
B. Le sommeil ne libère pas le verrouillage de l'objet, attendez abandonne le verrouillage de l'objet;
C. Sleep Us File, mais l'état de surveillance reste et reprendra automatiquement après la fin;
D. Après avoir attendu, entrez dans la piscine de verrouillage d'attente. Ce n'est qu'après avoir émis la méthode de notification de cet objet, le verrouillage de l'objet est obtenu et entre dans l'état de course.
Réponse: D
Le sommeil est une méthode de la classe de threads (thread), ce qui fait que ce thread s'arrête l'exécution pendant une période spécifiée et donne des opportunités d'exécution à d'autres threads, mais l'état de surveillance reste et reprendra automatiquement après cela. L'appel de sommeil ne libérera pas le verrouillage de l'objet.
attendre est une méthode de la classe d'objets. L'appel de la méthode d'attente sur cet objet amène le fil à renoncer au verrouillage de l'objet et à entrer le pool de verrouillage d'attente en attendant cet objet. Ce n'est qu'après avoir émis une méthode de notification (ou Notifyall) pour cet objet, ce thread entre dans le pool de verrouillage d'objet et se prépare à obtenir le verrouillage de l'objet et entre dans l'état en cours d'exécution.
10. La méthode ressume () est responsable de la restauration de l'exécution des threads ()
A, un fil qui est arrêté en appelant la méthode stop ().
B, un fil qui est arrêté en appelant la méthode sleep ().
C, un fil qui est arrêté en appelant la méthode wait ().
D, un fil qui est arrêté en appelant la méthode suspend ().
Réponse: D
Suspender peut suspendre un fil, ce qui signifie suspendre le fil. Il occupe des ressources mais ne fonctionne pas. Utilisez le CV pour restaurer le thread suspendu et laissez le thread continuer à s'exécuter.