Score %0 (0 correct0 incorrect19 unanswered)

Q1. Angenommen, der String "strawberries" ist in einer Variablen namens fruit gespeichert. Was würde fruit.substring(2, 5) zurückgeben?

  • rawb
  • raw
  • awb
  • traw

Begründung: Die substring-Methode akzeptiert zwei Argumente.

  • Das erste Argument ist der Index, an dem der Teilstring beginnen soll (der Char an Position 2 wird eingeschlossen).
  • Das zweite Argument ist der Index, an dem der Teilstring enden soll (der Char an Position 5 wird ausgeschlossen).
  • Strings in Java sind wie Arrays von Chars.
  • Daher gibt die Methode "raw" zurück, da dies die Chars an den Positionen 2, 3 und 4 sind.
  • Du kannst auch den Endindex nehmen und den Startindex davon abziehen, um zu bestimmen, wie viele Chars im Teilstring enthalten sein werden (5-2=3).

Q2. Wie kann Polymorphismus zur Laufzeit in Java erreicht werden?

  • Methodenüberladung
  • Methodenüberlauf
  • Methodenüberschreibung
  • Methodenaufruf

Q3. Angenommen, folgende Definitionen sind gegeben. Welcher der folgenden Ausdrücke wird NICHT zu true ausgewertet?

boolean b1 = true, b2 = false; int i1 = 1, i2 = 2;

  • (i1 | i2) == 3
  • i2 && b1
  • b1 || !b2
  • (i1 ^ i2) < 4

Begründung: i2 && b1 ist nicht zulässig zwischen int und boolean.

Q4. Was ist die Ausgabe dieses Codes?

class Main {
  public static void main (String[] args) {
    int array[] = {1, 2, 3, 4};
    for (int i = 0; i < array.size(); i++) {
       System.out.print(array[i]);
    }
  }
}
  • Er wird aufgrund von Zeile 4 nicht kompilieren.
  • Er wird aufgrund von Zeile 3 nicht kompilieren.
  • 123
  • 1234

Begründung: array.size() ist ungültig. Um die Größe oder Länge des Arrays zu erhalten, kann array.length verwendet werden.

Q5. Welcher der folgenden Ausdrücke kann den CODE-SCHNIPSSEL ersetzen, um den untenstehenden Code "Hello World" auszugeben?

interface Interface1 {
    static void print() {
        System.out.print("Hello");
    }
}

interface Interface2 {
    static void print() {
        System.out.print("World!");
    }
}
  • super1.print(); super2.print();
  • this.print();
  • super.print();
  • Interface1.print(); Interface2.print();

Referenz

Q6. Was gibt der folgende Code aus?

String str = "abcde";
str.trim();
str.toUpperCase();
str.substring(3, 4);
System.out.println(str);
  • CD
  • CDE
  • D
  • "abcde"

Begründung: Du solltest das Ergebnis von trim der Stringvariablen wieder zuweisen. Andernfalls funktioniert es nicht, da Strings in Java unveränderlich sind.

Q7. Was ist das Ergebnis dieses Codes?

class Main {
    public static void main (String[] args){
        System.out.println(print(1));
    }
    static Exception print(int i){
        if (i>0) {
            return new Exception();
        } else {
            throw new RuntimeException();
        }
    }
}
  • Es wird eine Stack-Trace mit einer Laufzeitfehlermeldung angezeigt.
  • "java.lang.Exception"
  • Es wird ausgeführt und wirft eine Ausnahme.
  • Es wird nicht kompilieren.

Q8. Welche Klasse kann mit diesen Deklarationen kompilieren?

interface One {
    default void method() {
        System.out.println("One");
    }
}

interface Two {
    default void method () {
        System.out.println("One");
    }
}
  • A
class Three implements One, Two {
    public void method() {
        super.One.method();
    }
}
  • B
class Three implements One, Two {
    public void method() {
        One.method();
    }
}
  • C
class Three implements One, Two {
}
  • D
class Three implements One, Two {
    public void method() {
        One.super.method();
    }
}

Q9. Was ist die Ausgabe dieses Codes?

class Main {
    public static void main (String[] args) {
        List list = new ArrayList();
        list.add("hello");
        list.add(2);
        System.out.print(list.get(0) instanceof Object);
        System.out.print(list.get(1) instanceof Integer);
    }
}
  • Der Code kompiliert nicht.
  • truefalse
  • truetrue
  • falsetrue

Q10. Angenommen, die folgenden beiden Klassen sind gegeben. Was wird die Ausgabe der Main-Klasse sein?

package mypackage;
public class Math {
    public static int abs(int num){
        return num < 0 ? -num : num;
    }
}
package mypackage.elementary;
public class Math {
    public static int abs (int num) {
        return -num;
    }
}
import mypackage.Math;
import mypackage.elementary.*;

class Main {
    public static void main (String args[]){
        System.out.println(Math.abs(123));
    }
}
  • Die Zeilen 1 und 2 erzeugen Compilerfehler aufgrund von Namenskonflikten.
  • "-123"
  • Es wird eine Ausnahme in Zeile 5 ausgelöst.
  • "123"

Erklärung: Die Antwort ist "123". Die abs()-Methode wird zurjenigen innerhalb der Klasse mypackage.Math ausgewertet, da die Importanweisungen der Form:

import packageName.subPackage.*

eine [Typ-Import-on-Demand-Anweisung](https://docs.oracle.com/javase/specs/jls/se7

/html/jls-7.html#jls-7.5.2) sind, die nie dazu führt, dass eine andere Deklaration verdeckt wird.

Q11. Was ist das Ergebnis dieses Codes?

class MainClass {
    final String message() {
        return "Hello!";
    }
}

class Main extends MainClass {
    public static void main(String[] args) {
        System.out.println(message());
    }

     String message() {
         return "World!";
     }
 }
  • Es wird nicht kompilieren aufgrund von Zeile 10.
  • "Hello!"
  • Es wird nicht kompilieren aufgrund von Zeile 2.
  • "World!"

Erklärung: Kompilierfehler in Zeile 10 aufgrund von finalen Methoden, die nicht überschrieben werden können, und hier ist message() eine finale Methode. Beachte auch, dass eine nicht-statische Methode message() nicht aus einem statischen Kontext heraus referenziert werden kann.

Q12. Angenommen, du hast einen ArrayList mit Namen, die du alphabetisch sortieren möchtest. Welcher Ansatz würde NICHT funktionieren?

  • names.sort(Comparator.comparing(String::toString))
  • Collections.sort(names)
  • names.sort(List.DESCENDING)
  • names.stream().sorted((s1, s2) -> s1.compareTo(s2)).collect(Collectors.toList())

Referenz

Q13. Was ist die Ausgabe dieses Codes?

class Main {
    public static void main(String[] args){
        int a = 123451234512345;
        System.out.println(a);
    }
}
  • "123451234512345"
  • Nichts - das wird nicht kompilieren.
  • Eine negative ganze Zahl
  • "12345100000"

Begründung: Der int-Typ in Java kann jede ganze Zahl von -2147483648 bis 2147483647 darstellen. Daher wird dieser Code nicht kompilieren, da die der Variablen 'a' zugewiesene Zahl größer ist als der int-Typ speichern kann.

Q14. Was ist die Ausgabe dieses Codes?

class Main {
    public static void main (String[] args) {
        String message = "Hello world!";
        String newMessage = message.substring(6, 12)
            + message.substring(12, 6);
        System.out.println(newMessage);
    }
}
  • Der Code kompiliert nicht.
  • Es wird eine Laufzeit-Ausnahme ausgelöst.
  • "world!!world"
  • "world!world!"

Q15. Was gibt dieser Code aus?

System.out.print("apple".compareTo("banana"));
  • 0
  • Positive Zahl
  • Negative Zahl
  • Kompilierfehler

Q16. Du hast eine ArrayList von Namen, die du alphabetisch sortieren möchtest. Welcher Ansatz würde NICHT funktionieren?

  • names.sort(Comparator.comparing(String::toString))
  • Collections.sort(names)
  • names.sort(List.DESCENDING)
  • names.stream().sorted((s1, s2) -> s1.compareTo(s2)).collect(Collectors.toList())

Referenz

Q17. Durch Implementierung der Kapselung kannst du nicht direkt auf die _Eigenschaften der Klasse zugreifen, es sei denn, du schreibst Code innerhalb der Klasse selbst.

  • private
  • protected
  • no-modifier
  • public

Q18. Was ist der aktuellste Weg, das aktuelle Datum zu instanziieren?

  • new SimpleDateFormat("yyyy-MM-dd").format(new Date())
  • new Date(System.currentTimeMillis())
  • LocalDate.now()
  • Calendar.getInstance().getTime()

Erklärung: LocalDate ist die neueste Klasse, die in Java 8 hinzugefügt wurde.

Q19. Fülle die Lücke aus, um einen Code zu erstellen, der feststellt, ob int0 durch 5 teilbar ist:

boolean isDivisibleBy5 = _____

  • int0 / 5 ? true: false
  • int0 % 5 == 0
  • int0 % 5 != 5
  • Math.isDivisible(int0, 5)