Feb 05 2008

Atentie la teste!(Ep. 2)

Category: TechnicalIuliana @ 23:54

Alta care ma baga in ceata:
Given that b and c refer to instances of wrapper classes, which two statements are true?(Choose two)

  1. b.equals(b) returns true
  2. b.equals(c) returns the same result as b==c
  3. b.equals(c) can return false even if c.equals(b) returns true
  4. b.equals(c) throws an exception if b and c are different wrapper types
  5. b.equals(c) returns false if the type of wrapper objects being compared are different

Raspunsul oficial: “Answer:B,C.” Normal ca nu sunt de acord. Si hai sa va spun si de ce. In primul rand hai sa ne uitam in codul sursa al unei clase wrapper, Integer de exemplu, pentru a vedea cum este implementata metoda equals:

public boolean equals(Object obj) {
return obj instanceof Integer && value == ((Integer) obj).value;
}

Din bucatica asta oficiala de cod ne putem da seama imediat ca A si E sunt adevarate. Deci daca as fi dat examenul de certificare Sun pana acum as fi avut 3 intrebari pe care le-as fi “gresit”.
Inca una:

Integer i = new Integer(42);
Long l = new Long(42);
Double d = new Double(42.0);
Which two expressions evaluate to true?(Choose two)

  1. (i == l);
  2. (i == d);
  3. (d == l);
  4. (i.equals(d));
  5. d.equals(i);
  6. i.equals(42);

Raspuns oficial:”Answer: D,E”. Ei bine, incep sa cred ca poate testele au fost facute pentru o versiune de java de care nu am auzit. Pentru ca singura metoda care returneaza true de acolo e cea din optiunea F si asta pentru ca in 1.5 s-a introdus mecanismul de autoboxing. Se facura 4.
Greseala de tipar bublucasa:

int index=1;
boolean[] test = new Boolean[3];
boolean foo = test[index];
What is the result?

  1. Foo has the value of 0
  2. Foo has the value of null
  3. Foo has the value of true
  4. Foo has the value of false
  5. An exception is thrown
  6. The code will not compile

Orice programator care a trecut cat de cat prin api-ul java stie diferenta dintre boolean cu “b” mic si Boolean cu “B” mare si se va arunca aproape instant sa bifeze F. Nu i-ar trece prin cap de fapt ca “Boolean”-ul ala cu “B” mare este de fapt o eroare de tipar si raspunsul oficial considerat corect este D. Asta era a 5-a intrebare pe care as fi gresit-o.
Nu le mai mentionez aici pe acele cateva exemple a caror intrebari trebuiau sa contina o negatie ca raspunsul corect sa fie intr-adevar cel oficial.

[va urma]

4 Responses to “Atentie la teste!(Ep. 2)”

  1. Mazgalici says:

    Aha, de asta nu ai mai postat… ce ai facut mama, ai invatzat pt certificarea de la Sun :P?

  2. Iuliana says:

    Am scris aici ca nu dau nici o certificare, doar imi testez cunostintele, ca de obicei.:)

  3. justMe says:

    trimite-le un document cu bug-uri la aia de la Sun
    ca sa nu aibe altii probleme dupa aia

  4. Iuliana says:

    Si alora de la Cisco la fel nu? Ca si aia au in testele lor tot prostioare de genul.

Leave a Reply