Autor Thema: javablackbelt  (Gelesen 2335 mal)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
javablackbelt
« am: 02.02.06 - 08:10:51 »
Hi,

wer Lust an Multiple Choice Tests rund um Java hat:
Dies ist inzwischen ziemlich umfangreich:
http://www.javablackbelt.com/jbb

Ich werde mich nun erst einmal um einen gelben Gürtel bemühen.
Wobei ich nun knapp an einem Java Beginner Beta Test gescheitert bin. Hab die aber sehr schnell gemacht und es waren auch 2 missclicks dabei.

Was die Sache interessant macht:
- die Funktionalität der Seite selber hat eine Menge guter Features.
- die Kontributoren der Fragen sind teilweise bekannt
z.B. hat Joshua Bloch (!!!) himself 8 Fragen beigesteuert, die Javaranch Legende Jeanne Boyarsky 484, Juergen Hoeller (Spring) 2, Martin Fowler 2, Vincent Massol 23, Marc Fleury (!?!) immerhin 1, Anand Chawla 69 und und und.
- Es gibt Tests und Material zu einem breiten Spektrum an Themen: core Java, OO, JSP/Servlets, Spring, Hibernate, junit, xml, ant, ejb, maven, j2me, etc.

Ab dem gelben Gürtel greift ein sehr komplexes Kontributoren-Punkte-System, das ich noch nicht verstanden habe.

Gruß Axel
 
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: javablackbelt
« Antwort #1 am: 02.02.06 - 22:03:20 »
Hab jetzt den real Java Test bestanden.
Hier die Fragen, wo ich Fehler hatte. Und besonders schwierige Fragen. Manche waren sehr einfach. Man muß allerdings über 80% und einen weiteren OO-Test bestehen für den gelben Gürtel. :

A. What happens when you try to compile and run this program?
public class ClassOne {
   //...
   public String toString(){
       return "It's me, an instance of classOne";
   }
   
   //...

   public static void main(String[] args) {
        String test;
        ClassOne classOne;
        test = classOne.toString();
        //...
   }
}
     
1. The JVM creates a new object automatically
2. A NullPointerException occurs (dachte ich)
3. The method is not called and the program continues.
4. The method is called and the program continues.
5. You have the compiler error "The local variable classOne may not have been initialized" on the statement test = classOne.toString(); (das war richtig).

Ja gut. Irgendwie klar. Kompiliert nicht.

B.  Which modifiers may appear in a field declaration?
     
 

1. public (richtig)
2. protected (richtig)
3. package (falsch)
4. private (richtig)
5. static (richtig)
6. final (richtig)

Ich hab blöderweise package angeklickt. Der leere modifier wird manchmal package-private genannt. Das war die Assoziation. Eine komische und falsche Assoziation.


C.
      What will the following program print ?


public class Test
{
   public static void main ( String [] args )
   {
       boolean bTwo = true;
       boolean bFour = false;
       
       if ( bTwo || validate1 () )
       {
           System.out.println ( "3" );
       }

       if ( bFour && validate2 () )
       {
           System.out.println ( "4" );
       }

   }
   
   public static boolean validate1 ()
   {
       System.out.println ( "1" );
       return false;
   }

   public static boolean validate2 ()
   {
       System.out.println ( "2" );
       return true;
   }
}

     
1)
1
3
2

2)
1
3

3)        
4

4)
3

hatte ich richtig. Natürlich Option 4.

D)
This code fragment compiles.

 String [] color = {"red", "green", "blue"};
 color = new String [5];
 color = {"red", "green", "blue", "yellow", "white"};

hatte ich mehr zufällig richtig. Die letzte Zeile ist ein Fehler. Man kann Arrays so nur in Zeilen benutzen, in denen man die Array-Variable auch deklariert. kurios.

E)
Study the following code and decide which of the objects referred by the variables are eligible for Garbage Collection after gc[3]=null;  has been executed and before the program terminates.

class GarbageTest {

   public static void main(String args[]) {
       GarbageTest gc[] = new GarbageTest[5];
       for (int i = 0; i < 5; i++) {
           gc = new GarbageTest();
       }
       gc[3] = gc[1];
       gc[4] = gc[1];
       gc[3] = null;

       // more code here
   }
}

Ich Idiot dachte, dass g[3], g[1] und g[4] eligible für gc sind. Das ist natürlich Unsinn, da sie noch im Array gehalten werden !!!

F. Which result is displayed on the console (when this code fragment is in a healthy main method, within a class) ?

Double number = new Double(15);
switch (number) {
   case 0: System.out.println("The value is 0");
   case 15: System.out.println("The value is 15");
   default: System.out.println("The value is neither 0 nor 15");
}

     
 
a) The value is 15
b)The value is 0
c) The value is neither 0 nor 15
d) The value is 0
The value is 15
The value is neither 0 nor 15
e)
The value is 15
The value is neither 0 nor 15
(ich)
f)Compilation fails (das war richtig)

Für Java 5 hatte ich recht. Offenbar gilt Java5 nur, wenn es explizit angegeben ist. No Fair.

---

g) Suppose you have a method called operate which returns an int and contains this code:
try {
   result = numerator / denominator;
   return result;
} catch (ArithmeticException ae) {
   return 0;
} finally {
   result = 3;
   return result;
}


What will be the return value of the method operate if the value of numerator is 1 and the value of denominator is 0?
     
3 war richtig.

H)
 What is the output of the following code fragment ?
// list points to a new ArrayList
list.add(new Integer(1));
list.add(new Integer(2));
...
list.add(new Integer(5));
// now lists contains 1, 2, 3, 4 and 5.

for (int index = 0; index < list.size(); index++) {
 System.out.println (index + 1 + " : " + list.get(index));
}
     
a)
01 : 1
11 : 2
21 : 3
31 : 4
41 : 5

b)
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5
c) An error will occur, the operands aren't the same.
d) The list.get(index) will throw an IndexOutOfBound exception at some point.

b war richtig. Nicht leicht.

I)
 Which of these code fragments are correctly formed and compile without errors ?
     
 
1) for (int i = 0,j = 1;i < j;i++,j++){
 System.out.println("i:"+i+" j:"+j);
}

2) for (int i = 0,int j = 1;i < j;i++,j++){
 System.out.println("i:"+i+" j:"+j);
}
3)
int i = 0;
for (int i = 0,j = 1;i < j;i++,j++){
 System.out.println("i:"+i+" j:"+j);
}
4)
int i;
for (int j = 1;i < j;i++,j++){
 System.out.println("i:"+i+" j:"+j);
}
5)
int i = 0;
for (int j = 1;i < j;i++,j++){
 System.out.println("i:"+i+" j:"+j);
}
6)
for (int i = 0,j = 1;i < j;i++,j++)
 System.out.println("i:"+i+" j:"+j);
 
Alles ausser 2) kompiliert. Hart. Hatte ich richtig.



« Letzte Änderung: 02.02.06 - 22:08:01 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: javablackbelt
« Antwort #2 am: 02.02.06 - 22:28:43 »
Mach jetzt den OO Beta Test. Auch nicht einfach, wenn auch ein typischer Fehler:

A.Wo kompiliert dieser Code nicht?

class Animal {
    String name;
   
    public void setName(String name) {
           this.name=name;
       }
      
       public String getName() {
          return name;
       }
    }
   
    public class Dog extends Animal {
       public String bark() {
          return("The dog barks");
       }
   
       public static void main(String args[]) { 
            Animal aDog=new Dog();
            aDog.setName("Boxer");
            String noise=aDog.bark();
       }
    }

In Zeile String noise = aDog.bark();
Das Objekt ist zwar ein Dog, aber als Animal deklariert. Und Animal hat keine bark() Methode. Ziemlich häufiger Compile-Fehler bei mir.
Man muss die Methode bark() auch in der Superklasse deklarieren.

----
B
 What is the output of the following code snippet
public class Test {
  public static void main(String [] args) {
     Test t = null;
     t.sayHello();
  }

  public static void sayHello() {
     System.out.println("Hello Java Black Belt!!!"); 
  }
}
     
 
a) java.lang.NullPointerException
b) Hello Java Black Belt!!! (richtig)

Hart. Ein Objekt muss nicht initialisiert sein, damit man static Methods der Klasse aufrufen kann. Bessere Praxis ist aber sowieso bei static Methoden immer über den Klassennamen und nicht über den Objektnamen zu referenzieren.

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: javablackbelt
« Antwort #3 am: 02.02.06 - 22:46:11 »
Ich hab den gelben Gürtel  ;D
OO-Anfänger Test auch bestanden.
Ich bin in der Hall of Belts: http://www.javablackbelt.com/jbb/HallOfBelts.do

Mein einziger Fehler von 10 Fragen war aber ziemlich blöd:

      What is the output?

01: public class Thing
02: {
03:    private int value;
04:
05:    public Thing(int n)
06:    {
07:       value = n;
08:    }
09:
10:    public int getValue()
11:    {
12:       return value;
13:    }
14:   
15:    public void setValue(int n)
16:    {
17:       value = n;
18:    }
19:
20:    public static void which(Thing x)
21:    {
22:       x.setValue(10);
23:    }
24:
25:    public static void main( String args[] )
26:    {
27:       Thing one = new Thing(20);
28:       Thing two = one;
29:
30:       which( two );
31:
32:       System.out.println( one.getValue() );
33:       System.out.println( two.getValue() );
34:    }
35: }
     
a) natürlich richtig
10
10

b)
10
20

c) meine Wahl.
20
10

d)
20
20

Jedenfalls helfen solche Fragen mehr als 1000 Worte, um die Konzepte klar zu bekommen.
« Letzte Änderung: 02.02.06 - 22:54:07 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz