IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Logging Java Discussion :

Test de compétence Java


Sujet :

Logging Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Par défaut Test de compétence Java
    Bonjour,

    j'ai mis en place un test de compétence Java, j'aimerais
    bien avoir un retour de quelques personnes qui s'y connaissent
    bien en java... (c'est également mon cas, mais bon une boulette
    est vite arrivée et on peut toujours améliorer ce qui a été fait

    -http://www.reseau-emploi.com/tests/tests-competence.php
    (puis cliquer sur Java)

    Merci d'avance pour vos remarques...

    (note : pour lancer le test, vous devez avoir un plug-in java relativement
    à jour ce qui devrait être le cas des personnes visitant se forum !)

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 110
    Par défaut
    resultat : 10/16

    2 erreurs sur faute d'attention, (pas vue qu'une variable était pas instanciée)
    4 autres normales vu mon niveau théorique pitoyable (c'est le defaut d'être un autodidact)

    remarques :
    - une petite question sur les générics serait pas mal, ca montre que la personne ce tient a jour.
    - la question sur le fichier .class, les reponses 1 et 2 sont tres proches je trouve, bianire toute plateforme ou binaire source ... a reformuler je pense

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Par défaut
    Citation Envoyé par eclesia
    resultat : 10/16

    2 erreurs sur faute d'attention, (pas vue qu'une variable était pas instanciée)
    4 autres normales vu mon niveau théorique pitoyable (c'est le defaut d'être un autodidact)

    remarques :
    - une petite question sur les générics serait pas mal, ca montre que la personne ce tient a jour.
    - la question sur le fichier .class, les reponses 1 et 2 sont tres proches je trouve, bianire toute plateforme ou binaire source ... a reformuler je pense
    tu as raison pour les générics... je vais y réfléchir... à moins que tu n'ais une
    idée de question...

    Sinon, je suis d'accord pour la question sur le .class ... je vais
    la modifier
    (note : l'ordre des réponses est tiré aléatoirement )

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Par défaut modification faite
    j'ai modifié la question sur le .class

    merci pour la remarque

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Par défaut
    Citation Envoyé par eclesia
    resultat : 10/16

    2 erreurs sur faute d'attention, (pas vue qu'une variable était pas instanciée)
    En fait 10/16 c'est déjà un bon niveau car le test est difficile.
    Et le coup de la variable pas instanciée est particulièrement vachard

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    J'ai eu 13/16.

    Je me suis trompé à la question 2 (j'avais oublié un truc dans la boucle ^^).

    Également à la question 5, mais là, il faut choisir la réponse fausse, il y en avait 2 ("Le programmeur peut forcer le lancement du Garbage Collector" est fausse également... System.gc() n'offre aucune garantie que le gc sera lancé).

    Et enfin à la question 13 (j'aurai du lire plus attentivement le code o_O).

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Par défaut
    Citation Envoyé par ®om
    Également à la question 5, mais là, il faut choisir la réponse fausse, il y en avait 2 ("Le programmeur peut forcer le lancement du Garbage Collector" est fausse également... System.gc() n'offre aucune garantie que le gc sera lancé).
    j'ai modifié la réponse:"Le programmeur peut demander le lancement du Garbage Collector",
    merci

  8. #8
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    J'ai eu 12/16.

    C'est vrai qu'une question sur les génerics serait interressante (déclaration générique de tableaux, ...)

    J'ai fait une faute conne c'est à l'affichage du compteur (celui qui fait modulo 5 == 4) j'ai oublié qu'on repassait une fois dans la boucle...

    Si je peux faire uen sugestion par contre j'enlèverrai la question avec la classe Vector, cette classe est obsolète et n'a plus de raison d'être que de fonctionner avec de vielles appli dont le code n'a pas été encore modifié.

    Sino j'ai quelques stress : La question avec LinkedList, qui recherche un élément et le vire s'il le trouve. Cette méthode ne peut-elle pas lancer une NoSuchElementException? Parce que si l'élément est supprimé entre le test est la suppression par itérateur, on va pas le trouver... Et LinkedList n'étant pas thread-safe, ça risque d'arriver non?

    Sinon je ne comprend pas pourquoi il y a 5 instances de crées avec les Points.
    On crée p1 => 2 instances : p1 et centerPoint
    On crée p2 => + 1 instance : p2 (centerPoint de p2 vient écraser l'ancien centerPoint de p1).
    Donc on a bien 3 instances au final non? J'ai peut-être ma compris la question...

  9. #9
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    14/16

    Je me suis trompé sur le modulo dans la boucle (les maths et moi ) et sur le nombre d'instance de Point (je n'avais pas vu que centerPoint était static et initialisé)



    Citation Envoyé par Razgriz
    Si je peux faire uen sugestion par contre j'enlèverrai la question avec la classe Vector, cette classe est obsolète et n'a plus de raison d'être que de fonctionner avec de vielles appli dont le code n'a pas été encore modifié.
    Et surtout la différence peut être assez infime et vraiment sensible que sur de grande quantité de données...

    Citation Envoyé par Razgriz
    Sino j'ai quelques stress : La question avec LinkedList, qui recherche un élément et le vire s'il le trouve. Cette méthode ne peut-elle pas lancer une NoSuchElementException?
    Le NoSuchElementException peut bien être levée par la méthode next() de l'itérator, mais seulement dans le cas où on fait un appel à next() sans vérifier la valeur de retour de hasNext() (ce qui n'est pas le cas ici).

    Citation Envoyé par Razgriz
    Parce que si l'élément est supprimé entre le test est la suppression par itérateur, on va pas le trouver... Et LinkedList n'étant pas thread-safe, ça risque d'arriver non?
    Dans ce cas là cela provoque un ConcurrentModificationException : c'est la règle des Iterator, on ne peut pas modifier une collection pendant son parcours (sauf si on utilise l'itérator pour cela).

    Citation Envoyé par Razgriz
    Sinon je ne comprend pas pourquoi il y a 5 instances de crées avec les Points.
    On crée p1 => 2 instances : p1 et centerPoint
    On crée p2 => + 1 instance : p2 (centerPoint de p2 vient écraser l'ancien centerPoint de p1).
    Donc on a bien 3 instances au final non? J'ai peut-être ma compris la question...
    Il y a bien 5 instances de créées :
    • centerPoint au chargement de la classe (attribut static)
    • p1 et centerPoint dans le premier new
    • p2 et centerPoint dans le second new

    Bien sûr comme centerPoint est créé 3 fois, deux de ses références seront supprimés et il ne restera que 3 objets, mais en tout on en aura bien créé 5...




    Sinon, deux remarques concernant les Q/R :

    • Une assez général : les noms d'attributs de la forme m_x font très " C++ "... En Java on utiliserait plutôt x tout simplement
    • Dans la question 6 :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      package test;
       
      public class A {
      	protected int m_x = 0;
      	private int m_y = 0;
      }
      La réponse est "incomplète" (en gras ce qu'il manque) :
      m_x est accessible par les sous classes de A et par toutes les classes du package test, et m_y n'est accessible que par la classe A.


    a++

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Par défaut
    Citation Envoyé par Razgriz

    C'est vrai qu'une question sur les génerics serait interressante (déclaration générique de tableaux, ...)
    Pour les génériques... j'ai un peu la flemme

    Citation Envoyé par Razgriz
    Si je peux faire uen sugestion par contre j'enlèverrai la question avec la classe Vector, cette classe est obsolète et n'a plus de raison d'être que de fonctionner avec de vielles appli dont le code n'a pas été encore modifié.
    Pleins de petit jeunes l'utilisent car ils ne savent pas qu'il vaut mieux ne plus l'utiliser... Ainsi que des vieux de la vieille en java qui ne se remettent pas
    en question.
    C'est en fait la raison de vivre de cette question

    Citation Envoyé par Razgriz

    Sino j'ai quelques stress : La question avec LinkedList, qui recherche un élément et le vire s'il le trouve. Cette méthode ne peut-elle pas lancer une NoSuchElementException? Parce que si l'élément est supprimé entre le test est la suppression par itérateur, on va pas le trouver... Et LinkedList n'étant pas thread-safe, ça risque d'arriver non?
    Non car la fonction remove ne renvoie pas cette exception !
    (cf spec java)

    Citation Envoyé par Razgriz

    Sinon je ne comprend pas pourquoi il y a 5 instances de crées avec les Points.
    On crée p1 => 2 instances : p1 et centerPoint
    On crée p2 => + 1 instance : p2 (centerPoint de p2 vient écraser l'ancien centerPoint de p1).
    Donc on a bien 3 instances au final non? J'ai peut-être ma compris la question...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     public class Point {
     
      private static Point centerPoint = new Point();  // +1 car static 
     
      private int m_x = 0;
      private int m_y = 0;
     
      public Point() {   
      }
      public Point(int x, int y) {
        m_x = x;
        m_y = y;
        centerPoint = new Point(); // +1 +1 (appelé deux fois)
      }
     
      public static void main(String[] args) {
        Point p1 = new Point(1,1);  // +1
        Point p2 = new Point(2,2);  // +1
      }
    }
    Donc 5 en tout

  11. #11
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Qu'obtenez vous si compilez et éxecutez ce code
    Pourquoi une erreur de compilation ?
    p.dump(); devrait etre detecté aprés exécution comme NullPointerException non ?!!!!

    J'ai foiré à la première question aussi ,quelle honte

  12. #12
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Citation Envoyé par bassim
    Code :
    Qu'obtenez vous si compilez et éxecutez ce code


    Pourquoi une erreur de compilation ?
    p.dump(); devrait etre detecté aprés exécution comme NullPointerException non ?!!!!

    J'ai foiré à la première question aussi ,quelle honte
    Non. Ton compilateur te jette en te disant "The local variable may not have been initialize.

    Ce que tu dis serait vrai si tu passait p en argument d'une méthode et que depuis cette méthode tu appelais dump.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Point(){Point p;
    executeDump(p);
    }
     
    public void executeDump(Point p){
    p.dump();
    }

  13. #13
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par leminipouce
    Non. Ton compilateur te jette en te disant "The local variable may not have been initialize.

    Ce que tu dis serait vrai si tu passait p en argument d'une méthode et que depuis cette méthode tu appelais dump.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Point(){Point p;
    executeDump(p);
    }
     
    public void executeDump(Point p){
    p.dump();
    }
    Tu ne fais que décaler le problème, là il te jette sur executeDump(p)...

  14. #14
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut Damn it!
    Citation Envoyé par ®om
    Tu ne fais que décaler le problème, là il te jette sur executeDump(p)...
    Damn it, tu as raison !

    C'est étrange pourtant, car il continue ainsi de te jeter si tu code ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void executeDump(Point p){
        p = new Point();
        p.dump();
    }
    Ce qui pourtant rend le code tout à fait correct. Non ?

    PS : Milles excuses pour cette grossière erreur, et merci à AdiGuba d'avoir donné la vrai réponse et ®om de m'avoir corrigé !

    EDIT: Au fait je me rends compte que je reste très flou ici. Le code que je donne n'ai pas correct... et l'explication est celle donnée par AdiGuba !

  15. #15
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Juste pour la question sur les threads, je pense que se serait plus clair d'écrire 1 et 2 à la place de FisrtThread SecondThread. ca serait moins dur à lire

  16. #16
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bassim
    Pourquoi une erreur de compilation ?
    p.dump(); devrait etre detecté aprés exécution comme NullPointerException non ?!!!!
    Le code est le suivant :
    Les variables locales ne sont pas initialisées par le compilateur (contrairement aux attributs). Ainsi le compilateur te force à initialiser explicitement les variables locales avant leurs utilisations... comme ce n'est pas fait tu as une erreur de compilation ("the local variable may not have been initialized").

    Pour compiler il aurait fallu avoir le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Point p = null;
    p.dump();
    (et là tu aurais bien eu un NPE à l'exécution)

    a++

  17. #17
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    oui merci ,en fait ,le compilateur me l'a déjà faite plusieurs fois mais je ne me suis jamais attardé la dessus .

    On apprends tous les jours sur ce Forum

Discussions similaires

  1. Nouveau Test de Compétences : Librairies Java (lang, util, io, net)
    Par reseau-emploi dans le forum API standards et tierces
    Réponses: 19
    Dernier message: 15/09/2007, 13h10
  2. Test de compétence XML/DTD/Schema
    Par reseau-emploi dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/07/2007, 18h16
  3. Réponses: 5
    Dernier message: 30/08/2006, 09h09
  4. [JUnit] @Test, Junit et Java 1.5
    Par pierreonxbox dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 18/04/2006, 15h55
  5. Compétence Java
    Par MicroPuce dans le forum Etudes
    Réponses: 7
    Dernier message: 09/05/2005, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo