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

  1. #1
    Membre à l'essai
    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
    Points : 14
    Points
    14
    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 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    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
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre à l'essai
    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
    Points : 14
    Points
    14
    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 à l'essai
    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
    Points : 14
    Points
    14
    Par défaut modification faite
    j'ai modifié la question sur le .class

    merci pour la remarque

  5. #5
    Membre à l'essai
    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
    Points : 14
    Points
    14
    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
    Points : 3 080
    Points
    3 080
    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 à l'essai
    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
    Points : 14
    Points
    14
    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 averti 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
    Points : 306
    Points
    306
    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...
    On a toujours besoin d'un plus bourrin que soi

    Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp.

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    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 à l'essai
    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
    Points : 14
    Points
    14
    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 à l'essai
    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
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par adiGuba


    • 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++
    Pour m_x c'est parce que j'ai toujours trouvé que c'était
    une bonne habitude... donc je l'applique perso en java sasn plus
    m'en rendre compte

    La réponse est "incomplète" : oui mais c'était fait exprès
    Comme quoi je suis un sadique... C'est bien la bonne réponse,
    les autres étant fausses et celle-la exacte mais pas complête.

  12. #12
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par reseau-emploi
    La réponse est "incomplète" : oui mais c'était fait exprès
    Comme quoi je suis un sadique...
    Ben pas tant que ca en fait : je suis sûr qu'il y a un grand nombre de personne qui ignore que les attributs protected sont accessible par les autres classes du même package...


    a++

  13. #13
    Membre à l'essai
    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
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par adiGuba
    Ben pas tant que ca en fait : je suis sûr qu'il y a un grand nombre de personne qui ignore que les attributs protected sont accessible par les autres classes du même package...


    a++
    La, tu n'as pas tord...
    au fait, félicitation pour ton score... il est excellent vu la difficulté
    du test...

  14. #14
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    14/16

    Décidémment, elle est fourbe cette question sur la boucle... et j'ai d'ailleurs un peu de mal à comprendre pourquoi on repasse par l'incrémentation de i puisqu'on a 11 > 10... Mais bon, passons!

    Et sinon, l'autre erreur est sur le nombre d'instances créées de "Point". Je trouve la question un peu ambigüe, et je l'avais interprêtée comme "combien d'instance différentes a-t'on à la fin de l'exécution du code": on a bien créé 5 instances, mais le milieu ayant été écrasé deux fois, on n'a plus que 3 instances distinctes référencées, les autres étant perdues dans les méandres de la JVM et appelées à être impitoyablement détruites par le GC...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  15. #15
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CyberChouan
    Décidémment, elle est fourbe cette question sur la boucle... et j'ai d'ailleurs un peu de mal à comprendre pourquoi on repasse par l'incrémentation de i puisqu'on a 11 > 10... Mais bon, passons!
    Par ce que l'incrémentation se fait à la fin du bloc, juste avant de réévaluer la condition :
    1. i = 4, et la condition du if est alors vrai.
    2. i passe alors à 11 (après multiplication et soustraction).
    3. i est incrémenté par le for i = 12
    4. i > 10 et donc la condition n'est plus vrai, la boucle s'arrête


    a++

  16. #16
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par adiGuba
    Par ce que l'incrémentation se fait à la fin du bloc, juste avant de réévaluer la condition :
    Oui... c'est logique! Ca fait des années que j'utilise les boucles 'for' et je ne m'étais jamais posé cette question existencielle. Je me coucherai un peu moins bête ce soir.

    Merci adiGuba d'avoir éclairé ma lanterne
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  17. #17
    Membre éprouvé 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 : 39
    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
    Points : 1 253
    Points
    1 253
    Par défaut
    Bon ben voilà, il en fallait bien un qui passe en dessous de la barre des 10... Je n'ai eu que 9 !

    A ma décharge, plusieurs remarques faîtes ici (je me cherche des excuses là).
    La première... l'inattention évidement. Quand un Point n'est pas instancié...
    Ensuite le coup du GC -j'ai pas vraiment fait la différence entre demander et forcer... et vu que 2 étaient fausses il fallait bien en choisir une !
    Il ne me semblait pas qu'on passait par le finally quand il y a un return dans le catch. Alors que c'est là tout son intérêt ! -Des fois c'est bien aussi de réfléchir 2 secondes quand on fait un test.
    Pour les instances crées, si j'avais mieux lu... (sans aucune mauvaise foix) j'étais bien d'accord sur le fait que 5 sont instanciées, mais vu qu'on en garde que trois à la fin... !
    Je ne suis pas forcément très alèse avec les Threads. Pour faire le "dead lock" on s'y prend comment ? Deux threads, un qui appelle incV1V2() et un autre qui appelle mulV1V2() ?
    Je me suis laissé fourvoyé par les interfaces. Je n'y ai, de mémoire, jamais déclaré d'attributs...
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  18. #18
    Membre éclairé 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 : 38
    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
    Points : 695
    Points
    695
    Par défaut
    Je vais me sentir tout petit là 5/16

    pour la question de la valeur du i ,j'ai mis 11 .merci Adibuga pour l'explication .
    Le nombre d'instances ,j'ai mis 4 au lieu de 5. faute d'inattention ,j'ai pas vue la première instanciation .
    les questions sur les threads ,je n'ai pas repondu du moment que je n'ai jamais pratiqué.
    le nombre d'erreurs de compilation (je ne sais plus quel numero), j'aimerais bien qu'on m'explique.
    l'exception qui ne survenait jamais ,j'ai répondu presque par hasard .
    Il ne me semblait pas qu'on passait par le finally quand il y a un return dans le catch. Alors que c'est là tout son intérêt ! -Des fois c'est bien aussi de réfléchir 2 secondes quand on fait un test.
    j'ai pensé la même chose !

    Je me suis laissé fourvoyé par les interfaces. Je n'y ai, de mémoire, jamais déclaré d'attributs...
    moi aussi !

    Pour quelqu'un qui a commencé avec Java depuis 1 an ,je pouvais pas faire mieux
    Where is my mind

  19. #19
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leminipouce
    Je ne suis pas forcément très alèse avec les Threads. Pour faire le "dead lock" on s'y prend comment ? Deux threads, un qui appelle incV1V2() et un autre qui appelle mulV1V2() ?
    Oui c'est ca : comme les bloc synchronized ne sont pas dans le même ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    synchronized(verrou1) {
    	synchronized(verrou2) {
    		// ...
    	}
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    synchronized(verrou2) {
    	synchronized(verrou1) {
    		// ...
    	}
    }
    On peut se retrouver dans un cas où un thread perd la main entre les deux demandes de verrou, par exemple :
    1. Un thread appelle incV1V2() (1er code) et un autre qui appelle mulV1V2() (2eme code).
    2. Le premier thread s'exécute et récupère le verrou1.
    3. Hasard de l'ordonnanceur : le thread 2 prend la main et il récupère le verrou2.
    4. Le thread 2 entre en attente car il ne peut pas prendre le verrou1 (déjà pris par le thread 1).
    5. Le thread 1 entre lui aussi en attente car il ne peut pas prendre le verrou2 (déjà pris par le thread 2).

    Bref les deux threads possèdent un verrou et attendent le second. Donc les deux threads s'attendent mutuellement dead lock.

    C'est particulièrement dangereux car cela dépend de l'ordonnancement et le code peut très bien fonctionner (et dans 99.99% des cas cela marche parfaitement en DEV mais plus lorsqu'on passe en PROD )



    Citation Envoyé par leminipouce
    Je me suis laissé fourvoyé par les interfaces. Je n'y ai, de mémoire, jamais déclaré d'attributs...
    On peut seulement y déclarer des constantes (attributs public static final).

    D'ailleurs le code suivant est tout à fait correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface MonInterface {
    	int X = 0;
     
    	void method();
    }
    Et est strictement équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    interface MonInterface {
    	public static final int X = 0;
     
    	public abstract void method();
    }
    Les attributs d'une interfaces sont obligatoirement public static final (et implicitement si absent).
    Les méthodes d'une interface sont obligatorement public abstract.


    Citation Envoyé par bassim
    le nombre d'erreurs de compilation (je ne sais plus quel numero), j'aimerais bien qu'on m'explique.
    Les classes internes static ne sont pas lié à une instance de la classe conteneur, et donc elles ne peuvent accéder directement qu'aux attributs static (et il n'y en avait qu'un sur les 3)

    a++

  20. #20
    Membre éclairé 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 : 38
    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
    Points : 695
    Points
    695
    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
    Where is my mind

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