Questions que tout bon développeur Java / Java EE devrait être en mesure de répondre? [fermé]


Je passais par Questions tout bon développeur.Net devrait être en mesure de répondre et a été très impressionné par le contenu et l'approche de cette question, et donc dans le même esprit, je pose cette question pour Java/Java EE Developer.

À quelles questions pensez-vous qu'un bon programmeur Java/Java EE devrait-il pouvoir répondre?

Je marque cette question comme wiki communautaire car elle n'est pas spécifique à l'utilisateur et vise à servir la communauté de programmation à grand.

Dans l'attente de quelques réponses étonnantes.

EDIT : Veuillez également répondre aux questions, comme suggéré dans les commentaires, afin que les gens puissent apprendre quelque chose de nouveau concernant la langue.

Author: Rachel, 2010-01-22

30 answers

Quelle est la relation entre hashCode() et equals()? Quelle est la signification de ces méthodes? Quelles sont les exigences pour les mettre en œuvre?

 83
Author: Jeff, 2010-01-22 01:06:27

Quelle est la différence entre Set, Map et List?

Je suis toujours étonné de voir combien de personnes ne connaissent pas celui-ci lors d'un entretien téléphonique.

 70
Author: Jon, 2010-01-22 01:09:18

Une interface peut-elle étendre plusieurs les interfaces?

La plupart des gens répondent "non", car ils savent que java n'a pas d'héritage multiple. Mais une interface peut toujours étendre plusieurs interfaces (mais une classe ne peut pas étendre plusieurs classes). Cela ne conduit pas au problème du diamant.

Si la réponse est "non", l'intervieweur devrait demander " pourquoi serait-il interdit?". Ensuite, vous commencez à y penser et vous devriez réaliser qu'il n'y a pas de problème avec cela.

Vous avez donc appris quelque chose (par vous-même) dans l'interview et vous avez montré à l'intervieweur que vous êtes capable de raisonner sur les classes, les objets, l'héritage, le polymorphisme, etc. C'est en fait beaucoup mieux qu'un candidat qui connaît la réponse par cœur mais ne comprend pas pourquoi

 44
Author: ewernli, 2010-01-22 19:26:20

Utilisation du mot-clé final dans les appels de méthode. Par exemple pourquoi la méthode test dans le code ci-dessous ne donne aucune erreur de compilation, malgré l'aide de finale qualificatif pour le paramètre de méthode.

class Name {
    private String name;

    public Name (String s) {
        this.name = s;
    }

    public void setName(String s) {
        this.name = s;
    }
}

private void test (final Name n) {
    n.setName("test");
}

 23
Author: sateesh, 2010-02-01 10:08:41

On est sûr que la comparaison de la chaîne. Différence entre

Chaîne HelloWorld = "Bonjour le monde";
HelloWorld = = "Bonjour le monde";
"Bonjour le monde".equals(helloWorld);

 19
Author: zapping, 2010-02-01 08:36:38

Trick question: Quels types de paramètres sont passés par référence en Java?

C'est incroyable de voir combien de personnes suivent encore le mantra "les primitives sont passées par valeur, les objets sont passés par référence".

 17
Author: Chinmay Kanchi, 2010-01-22 01:12:20

Vous avez dit "Bon","Développeur". Voici mes 2 cents aussi.. :)

  • Que signifie une "exception vérifiée"?
  • Lequel est préférable d'utiliser et quand: Assertions ou Exceptions pour gérer des conditions inattendues?
  • Pourquoi la classe String est finale? (ou est-ce pas? ;) )
  • les méthodes wait, notify et notifyAll sont-elles dans la classe Object?
  • Pourquoi la classe Thread n'est-elle pas finale? Pourquoi voudrais-je étendre le Fil, jamais?
  • Pourquoi il y a deux classes de date; une en java.paquet util et un autre en java.sql?
  • Que se passe-t-il si une exception est levée dans finally block? Le reste est-il finalement exécuté ou non?
  • Il y a bien un garbage collector, mais alors la fuite de mémoire est-elle totalement absente dans une application Java? Si non, comment?

Pour J2EE:

  • Est-il bon d'avoir des variables d'instance/statiques dans un servlet? Pourquoi pas? Alors, où avez-vous le magasin "état"?
  • continuer sur la question ci-dessus: qu'est-ce et où est un" état " pour un (web) application?
  • Que se passe - t-il si je commence à créer/fermer des connexions DB dans "JSP"?
  • Quelles sont les façons de gérer les exceptions JSP? try-catch? Hmmm.. est-il autre chose?

Je peux penser à beaucoup, beaucoup, beaucoup plus d'entre eux mais cela va faire pour l'instant:)

 17
Author: Elister, 2010-01-25 13:24:33

Quelle est la différence entre String, StringBuffer et StringBuilder?

 16
Author: Thunderhashy, 2010-01-25 17:59:18

"qu'est Ce qu'un descripteur de déploiement?"

Si le candidat frémit involountarily, il a de l'expérience de travail avec des EJB pré-3.0.

 13
Author: Michael Borgwardt, 2010-01-22 08:57:34

De nombreuses questions et interviews sont disponibles sur http://www.techinterviews.com/interview-questions/java et je ne vois pas vraiment de valeur dans le copier / coller d'une sélection d'entre eux.

Non, c'est à vous de créer votre propre compilation de choses vous sont importantes. Personnellement, je procède toujours en deux étapes: tout d'abord, quelques questions pour avoir une idée de base de l'expérience et des compétences, puis de résoudre une situation. Je ne suis en effet pas convaincu que pouvoir répondre à tout connu questions font de vous un bon ou un mauvais inconnu solutionneur de problèmes. Je préfère donc demander aux gens de résoudre un problème donné, de leur donner certaines exigences et de leur demander d'écrire du code (mais pas sur papier). Je leur donne un peu de temps pour revenir vers moi et vérifier comment ils l'ont fait, leur style de codage, comment ils ont utilisé les API suggérées, etc.

Cela étant dit, ma question préférée est "qu'est-ce que vous n'aimez pas à propos de Java?"(dans l'esprit de ce un). C'est vraiment un excellent question, il vous donne un retour immédiat sur combien un candidat a utilisé Java et exploré son API et s'il est juste religieux à ce sujet ou non (comme l'a écrit l'OP).

Mise à jour: Comme suggéré par CPerkins, une meilleure formulation pour la question suggérée ci-dessus pourrait être "Qu'aimeriez-vous le plus voir changé en Java?". Et en effet, je préfère cette façon.

 12
Author: Pascal Thivent, 2017-05-23 12:25:34

Qu'est-Ce que 'Système', 'sortir', 'println' dans le Système.hors.println ? Que se passe - t-il lorsque vous appelez 'put' sur HashMap ?

 11
Author: Adi, 2010-01-22 05:18:18
  1. Expliquez les différents modificateurs d'accès utilisés en Java. J'ai eu beaucoup de gens qui luttent avec cela, en particulier l'accès par défaut.
  2. Si vous pouviez changer une chose à propos du langage ou de la plate-forme Java, quelle serait-elle? Les bons développeurs auront une réponse ici alors que ceux qui ne sont pas vraiment intéressés par le développement ne s'en soucient probablement pas.
  3. Si leur CV dit quelque chose comme ils utilisent EJB2.1 alors demandez à propos de EJB3 pour voir ce qu'ils savent à ce sujet. Les meilleurs développeurs suivront avec les derniers développements, même s'ils n'utilisent pas les versions plus récentes.
 10
Author: Mark, 2010-01-22 13:16:37
  • Quel est le contrat général lorsqu'il remplace equals?
  • Est-ce que la meilleure option préfère les listes ou les tableaux?
  • Quelles sont les conventions de nommage généralement acceptées?
  • Comment fonctionne la sérialisation?
  • Comment mettre en œuvre Comparable?
  • Quels sont les avantages de l'utilisation des déclarations préparées par JDBC?
  • Qu'est-ce que Java EE?
  • Qu'est-ce qu'un conteneur et quels services fournit-il?
 10
Author: JuanZe, 2010-01-22 19:25:22

Si vous embauchez des diplômés avec une "expérience" Java, une question simple comme Écrire du code qui provoquera une NullPointerException peut distinguer quels candidats ont utilisé Java récemment, et ne s'est pas arrêté quand ils ont terminé leur unité/cours.

 9
Author: David, 2010-01-22 06:01:08

Qu'est-ce qui sera imprimé?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

Réponse: CoolReturn+1

Un peu plus difficile:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

Réponse: CoolReturn

 9
Author: zaletniy, 2010-04-18 17:50:31

Quelle est la différence entre une classe abstraite et une interface? Quand utiliser chacun d'entre eux?

Beaucoup de développeurs Java ne le savent pas, j'ai demandé à la plupart des gens sur mon cours d'informatique à l'université et la grande majorité n'a pas pu y répondre.

 8
Author: ZoFreX, 2010-01-24 22:33:57

Questions simples telles que,

  • Qu'est - ce que JRE et JDK?
  • Pourquoi java revendique-t-il l'interopérabilité?

Bien que ceux-ci soient très basiques, de nombreux développeurs ne connaissent pas les réponses. Je suggère que ceux-ci soient demandés avant les requêtes liées au code.

 8
Author: Ravisha, 2012-03-12 12:03:23

Top 5 des questions J2EE/JEE

La liste des questions J2EE / JEE middleware auxquelles j'ai été confronté est exceptionnellement longue, mais voici les 5 premières questions qui m'ont été posées et qui ont conduit à de bonnes discussions:

  1. Que se passe-t-il lorsqu'une BMD rencontre une exception qu'elle ne peut pas gérer?
    Cette question conduit généralement à diverses discussions intéressantes sur les messages de poison, les files d'attente d'erreur, etc.,
  2. Étant donné un sujet JMS, et quelques consommateurs sur différents JVM, questions sur divers scénarios avec et sans consommateurs durables.
    Cette question me permet généralement de discuter en termes de quand utiliser des abonnés durables, quand utiliser des files d'attente, etc.,
  3. S'il est bloqué dans une situation où l'accès à un contenu Hibernate/JPA POJO conduit à des exceptions, comment le résoudrait-on?
    Cela conduit à de merveilleuses discussions sur le chargement paresseux, la réhydratation, etc., Il a même conduit à comparer et à contraster JPA avec les haricots d'entité. J'ai trouvé utile d'être préparé et d'être clair dans les concepts.
  4. Comment un simple service Web pourrait-il être fourni?
    Toute solution allant du simple serveur Web aux solutions SOAP/REST sophistiquées, et toute solution intermédiaire, devrait être suffisante. En outre, sur la base de l'intervieweur, cela conduit parfois à des discussions très intéressantes sur des sujets tels que certaines idées de conception - WSDL first, doc-style, intermédiaires de savon, etc., Cela pourrait conduire à des questions telles que l'amélioration de la liste dans JAX-WS sur JAX-RPC, ou SOAP1.2 sur SOAP1.1, les réponses sont généralement basées sur ce dont je me souviens.
  5. JEE 5 injection de ressources
    Cette question est posée de plusieurs façons, à partir de Modèle de localisateur de services à javax.naming.Context questions.

Une autre question délicate que je trouve troublante, mais que j'ai rencontrée à plusieurs reprises est, Comment les bibliothèques dépendantes sont-elles empaquetées dans une archive?
ou Visibilité de différentes classes dans un archiver.
Si la discussion ne conduit pas à la hiérarchie du chargeur de classes de différents serveurs d'applications, archives de ressources, etc. il est préférable de démissionner et de se déplacer sur.

Les 5 principales questions Java:

  1. Questions sur java.util.les collections de
    C'est la mère de toutes les questions. Une fois que vous pouvez effectivement atterrir l'intervieweur dans cette zone, et si vous êtes prêt, le reste de l'interview reste généralement ici. Assurez-vous de connaître Set, List, Map, et l'importance de Object.equals() et Object.hashCode() dans chaque implémentation de ces interfaces.
  2. Questions de refactorisation
    Ceux-ci sont bons si l'intervieweur a un esprit ouvert. Si l'intervieweur a déjà une solution spécifique à l'esprit, et que la vôtre ne correspond pas à la sienne, vous êtes à peu près condamné. Il est préférable d'accord avec la réponse ", je comprends que d'autres solutions sont possibles. "
  3. Questions sur le multi-threading dans JDK5, en comparaison avec JDK précédent versions J'ai trouvé qu'il est préférable d'être préparé avec java.util.classes de paquets simultanées . Le livre de Doug Lea a la plupart des réponses.
  4. Quoi de neuf dans JDK1.6/JDK1.7...?
    C'est une question sûre avec de nombreux intervieweurs. Autant que je déteste cela, il vaut mieux être préparé. Au moins se souvenir de quelques-uns avec lesquels j'ai travaillé et diriger la discussion dans une autre direction, esquive et résout le problème en grande partie et efficacement.
  5. Modèles dans l'API Java
    Maintes et maintes fois, on m'a demandé de signaler un modèle GoF dans l'API Java. Mieux vaut être préparé pour celui-ci.
 6
Author: CMR, 2011-03-17 02:55:38

Différence entre un serveur web et un conteneur web

 5
Author: user256777, 2010-01-22 14:03:06

Qu'est-ce que vous aimez le plus / le moins à propos de Java et pourquoi?

 5
Author: Carsten, 2010-01-24 22:30:11

Pourquoi remplaceriez-vous la méthode toString ()?

 5
Author: SWD, 2010-01-25 13:16:44

Une question Java plus pure:

Quelle est la différence entre dormir et attendre ? Peu de gens comprennent réellement comment l'attente fonctionne.

Comment devez-vous gérer InterruptedExceptions ?

 4
Author: David Nouls, 2010-02-01 08:48:25

C'est la question à laquelle j'ai été confronté dans mon interview.

Pourquoi la méthode main en Java est-elle appelée public static void main(String[] args) ?

Réponse:

1.main() doit être déclarée publique car elle est invoquée par la JVM chaque fois que l'exécution du programme démarre.JVM n'appartient pas à notre package de programme.

Pour accéder à main en dehors du paquet, nous devons le déclarer comme public.Si nous le déclarons comme autre chose que public il montre un Runtime Erreur mais pas le temps de Compilation d'erreur

2. main() doit être déclarée comme statiquecar si une méthode est déclarée comme statique, nous pouvons appeler cette méthode en dehors de la classe en utilisant className.Nom de la méthode();

class Sample
{
     static void fun()
     {
           System.out.println("Hello");       
     }
}

class Test
{
      public static void main(String[] args)
      {
                Sample.fun();
      }
}

La JVM chargera d'abord la classe Test,vérifiera les arguments de la ligne de commande et appellera la méthode principale en tant que Test.main ();

3.main () doit être déclaré comme void main () car JVM n'en attend pas valeur de main (). Donc,il doit être déclaré comme nul.

Si un autre type de retour est fourni,il s'agit d'une RunTimeError, c'est-à-dire;NoSuchMethodFoundError.

4.main () doit avoir des arguments de chaîne en tant que tableaux car la JVM appelle la méthode main en passant la ligne de commande arguement.As ils sont stockés dans un objet de tableau de chaîne, il est passé en tant qu'argument à main().

 4
Author: Sai Upadhyayula, 2011-05-31 12:08:01

Quelle est la différence entre J2SE et J2EE (ou JSE et JEE)?

Un développeur devrait être en mesure de souligner que l'édition enterprise est essentiellement une définition d'interface (c'est-à-dire une spécification) qui peut être implémentée par les fournisseurs. Alors que l'édition standard est une implémentation à part entière

 3
Author: oxbow_lakes, 2010-01-25 13:20:10

Comment volatile affecte-t-il l'optimisation du code par le compilateur?

 3
Author: Roman, 2010-01-25 13:34:15

Qu'en est-il d'un bean de session et décrivez quelques différences entre les beans de session sans état et avec état.

 2
Author: Kristian, 2010-01-22 05:20:07

Écrivez un programme pour accepter deux entiers et sortir le plus grand des deux nombres dans un fichier à l'emplacement de votre choix. Décrivez maintenant ce que fait chaque déclaration.

Il est possible de creuser assez profondément à partir de la signification de l'instruction d'importation, jusqu'à la terminaison anormale

 2
Author: Everyone, 2010-02-24 07:29:06

Noyau: 1. Quelles sont les exceptions cochées et non cochées ? 2. Lors de l'ajout d'une nouvelle exception dans le code, quel type (Coché/non coché) utiliser quand ?

Servlet: 1. Quelle est la différence entre la réponse.sendRedirect() et de la demande.forward() ?

 2
Author: YoK, 2010-07-12 04:03:19

Comment fonctionne threads? Qu'est-ce que synchronized? S'il y a deux méthodes synchronized dans une classe, elles peuvent être exécutées simultanément par deux threads. Vous serez surpris d'entendre beaucoup de personnes répondent oui. Ensuite, tous les threads liés à la question, par exemple impasse, la famine, etc.

 1
Author: fastcodejava, 2010-01-24 22:25:29

Une chose que beaucoup de programmeurs Java ne savent pas est que les chaînes sont immuables, utilisez donc StringBuilder ou StringBuffer!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}
 1
Author: Shervin Asgari, 2010-10-14 18:28:17