Jan 27 2008

Atentie la teste!

Category: TechnicalIuliana @ 23:09

Cati dintre voi ati fost la interviuri sau ati dat examene grila la care vi s-a parut ca sunt mai multe raspunsuri desi vi se spunea ca este corecta o singura optiune? Ei, de asta m-am lasat eu de cisco, de asta mi-am facut nervi la unele examene si intr-un final am acceptat ca poate perceptia mea asupra intrebarilor era eronata. Pana acum cateva zile, cand m-am apucat de rezolvat cateva teste grila date la examenul pentru certificare sun pentru j2se. Am sa dau aici cateva exemple si am sa rog pe cei in cunostinta de cauza sa imi atraga atentia in caz ca gresesc.

Which two cause a compiler error?(Choose two)

  1. float[]= new float(3);
  2. float f2[] = new float[];
  3. float f3[] = new float[3];
  4. float[] f4 = new float[3];
  5. float f5[] = new float[]{1.0f, 2.0f, 3.0f};
  6. float f6[] = new float[]{1.0f. 2.0f. 3.0f};

Orice om cat de cat pus la punct cu limbajul java ar raspunde in timp record, A,B si F. Buuun. Hai sa verificam raspunsul oficial:”Answer:A,B. The statement F is incorrect.The float numbers should be separated with commas and not dots.” Deci faptul ca numerele sunt separate prin puncte nu va cauza o eroare de compilare, nu? Tare as vrea sa il cunosc pe desteptul care a dat un asemenea raspuns.

Una de perspicacitate:

1.package test1;
2.public class Test1 {
3. static int x = 42;
4.}
1.package test2;
2.public class Test2 extends Test1 {
3. public static void main(String[] args) {
4. System.out.println(“x= ” + x);
5. }
6.}
What is the result?

  1. x= 0
  2. x= 42
  3. Compilation fails because of an error in line 2 of class Test2.
  4. Compilation fails because of an error in line 3 of class Test1.
  5. Compilation fails because of an error in line 4 of class Test2.

La prima vedere orice programator java ar sari pe linia 4 din clasa Test2 si ar da sa aleaga E-ul, pentru ca na, e o chestie evidenta de drepturi de acces la campul x, dar analizand codul mai bine putem observa ca ce-a de-a doua clasa Test2 definita in packetul test2, extinde clasa Test1 definita in packetul test1 ceea ce presupune sa apara pe undeva inainte de declaratia clasei Test2 o linie de genul “import test1.Test1”. Cum ea nu apare, compilatorul va semnala o eroare in linia a 2-a a clasei Test2. Deci raspunsul corect este de fapt C.
Una revoltator de eronata:

try {
int x = 0;
int y = 5 / x;
} catch (Exception e) {
System.out.println(“Exception”);
} catch (ArithmeticException e) {
System.out.println(“ArithmeticException”);
}
System.out.println(“finished”);
What is the result?

  1. finished
  2. Exception
  3. Compilation fails
  4. ArithmeticException

Orice programator java raspunde instant C, pentru ca ierarhia claselor ce descriu exceptiile in java este in arata asa Throwable -> Exception -> RuntimeException -> ArithmeticException. Si atunci primul catch poate prinde bine merci exceptia de tip ArithmenticException(una din subclasele sale) ceea ce obliga compilatorul sa raga “Unreachable catch block for ArithmeticException. It is already handled by the catch block for Exception”. Deci codul in cauza nici macar nu va compila deci din start nu poate fi vorba de un rezultat. Hai sa verificam raspunsul oficial: “Answer: D. The correct answer to this question is D.When an int value is divided by zero, a runtime exception occcurs.There are no compilation errors.” Deci ori cartea asta a fost scrisa intentionat cu atatea erori pentru ca unii oameni sa dea examenul asta de mai multe ori(se plateste apropos’) ori cel care da raspunsurile e mai prost pregatit decat mine, iar eu lucrez in java de maxim trei ani…Poate ar trebui sa incep sa scriu carti de java…

[va urma, doar cartea are 293 de intrebari]

One Response to “Atentie la teste!”

  1. Andrei says:

    salut! imi poti trimite si mie pe mail cartea aceasta cu teste? merci!

Leave a Reply