OCAJP – Lambda-Übungsfragen zur Vorbereitung der OCAJP 8-Zertifizierung

Fragen zur Lambda-Praxis

Bildnachweis an AC4 Consultoria

In diesem Beitrag werde ich einige Beispiele für OCAJP 8-Musterprüfungsfragen mit guten Erklärungen aufschreiben. Wir haben die Lambda- und Prädikatausdrücke bereits anhand einiger Beispielfragen erläutert. Wenn Sie sich auf die OCAJP 8-Prüfung vorbereiten, müssen Sie höchstwahrscheinlich mehr für die Java 8-spezifischen Themen üben, da es sich um relativ neue Themen in der Prüfung handelt. Sie testen Sie möglicherweise mit einer anderen Syntaxkombination und bitten Sie, die richtigen Antworten auszuwählen.

Hier sind die 9 Fragen für OCAJP 8 Prüfung, die für Ihre OCAJP-Java-Zertifizierungsvorbereitung nützlich sein wird. Wenn Sie Fragen haben, schreiben Sie diese bitte in den Kommentarbereich. Wenn Sie daran interessiert sind, weitere Fragen zu üben, denken Sie bitte darüber nach, eines der beliebten zu kaufen OCAJP-Übungsprüfungssimulatoren auf dem Markt verfügbar. Sie stellen Fragen, die für die echten Prüfungen sehr relevant sind.

OCAJP 8 Prüfungsziel

Hier ist das Prüfungsziel für die Vorbereitung auf die OCAJP-Prüfung:

  • Bei der OCAJP 8-Prüfung wird von Ihnen erwartet, dass Sie gültige und ungültige Lambda-Ausdrücke erkennen. Sie werden nicht aufgefordert, die Lambda-Ausdrücke zu schreiben.

Was ist Lambda-Ausdruck?

Lambda-Ausdrücke in Java

Bildnachweis an Youtube

Hier ist die Übersicht oder Definition des Lambda-Ausdrucks in Java 8, falls Sie diese Konzepte nicht kennen. Bevor Sie die Scheinfragen lesen, machen Sie sich bitte mit dem Lambda-Ausdruck in Java 8 vertraut.

Ein Lambda-Ausdruck ist eine anonyme Methode mit kompakterer Syntax, die auch das Weglassen von Modifikatoren, Rückgabetypen und in einigen Fällen auch Parametertypen ermöglicht. Vor Lambda-Ausdrücken werden die anonymen Methoden in die anonymen Klassen geschrieben, die im Vergleich zum einzeiligen Lambda-Ausdruck viele Zeilen lang sind.

1) Was trifft auf die funktionale Schnittstelle zu?

  • A. Es gibt genau eine Methode und sie muss abstrakt sein.
  • B. Es hat genau eine Methode und kann abstrakt sein oder auch nicht.
  • C. Es muss genau eine abstrakte Methode haben und kann beliebig viele Standard- oder statische Methoden haben.
  • D. Es muss genau eine Standardmethode haben und kann beliebig viele abstrakte oder statische Methoden haben.
  • E. Es muss genau eine statische Methode haben und kann beliebig viele Standard- oder abstrakte Methoden haben.

2) Gegeben

interface Test {
   public void print( );
}

Welche sind gültige Lambda-Ausdrücke (wählen Sie 2 Optionen aus)?

  • A. ->System.out.println(“Hallo Welt”);
  • B. void -> System.out.println(“Hallo Welt”);
  • C. ( ) -> System.out.println(“Hallo Welt”);
  • D. ( ) ->{ System.out.println(“Hallo Welt”); zurückkehren; }
  • E. (void ) -> System.out.println(“Hallo Welt”);

3) Welches Lambda kann die MyTest-Klasse ersetzen, um denselben Wert zurückzugeben? (Wähle alle, die zutreffen)

interface Sample {
    String change(int d);
}
class MyTest implements Sample {
    public String change(int s) {
    return "Hello";
   }
}
  • A. change((e) -> „Hallo“ )
  • B. change((e) -> {„Hallo“ })
  • C. change((e) -> { String e = „“; „Hallo“ });
  • D. change((e) -> { String e = „“; return „Hallo“; });
  • E. change((e) -> { String e = „“; return „Hallo“ });
  • F. change((e) -> { String f = „“; return „Hallo“; });

4) Was ist das Ergebnis?

1: 	 import java.util.function.*;
2:
3: 	public class Student {
4:	int age;
5: 	public static void main(String[] args) {
6: 	    student p1 = new Student();
7: 	    p1.age = 1;
8: 	    check(p1, p -> p.age < 5);

9: 	}
10: 	private static void check(Student s, Predicate<Student> pred) {
11: 	String result = pred.test(s) ? "match" : "not match";
12: 	System.out.print(result);
13:	 } }
  • Eine Übereinstimmung
  • B. nicht übereinstimmen
  • C. Compilerfehler in Zeile 8.
  • D. Compilerfehler in Zeile 10.
  • E. Compilerfehler in Zeile 11.
  • F. Eine Laufzeitausnahme wird ausgelöst.

5) Was ist die Ausgabe?

1: 	interface Jump {
2: 	boolean isToLong(int length, int limit);
3: 	}
4:
5: 	public class Climber {
6:	 public static void main(String[] args) {
7: 	check((h, l) -> h.append(l).isEmpty(), 5);
8: 	}
9: 	private static void check(Jump j, int length) {
10: 	if (j.isTooLong(length, 10))
11: 	System.out.println("too high");
12:	 else
13: 	System.out.println("ok");
14: 	}
15: 	}
  • A. ok
  • B. zu hoch
  • C. Compilerfehler in Zeile 7.
  • D. Compilerfehler in Zeile 10.
  • E. Compilerfehler in einer anderen Zeile.
  • F. Eine Laufzeitausnahme wird ausgelöst.

6) Was kann in den folgenden Code eingefügt werden, damit er bei der Ausführung wahr wird?

class Test {
public static boolean check( List l , Predicate<List> p ) {
return  p.test(l) ;
}
Public static void main(String[] args) {
boolean b = // write code here ;
System.out.println(b);
}
}

Wählen Sie 2 Optionen

  • A. check(new ArrayList( ), al -> al.isEmpty( ) );
  • B. check(new ArrayList( ), ArrayList al -> al.isEmpty( ) );
  • C. check(new ArrayList( ), al -> return al.size( ) == 0 );
  • D. check(new ArrayList( ), al -> al.add(“hello”));

7. Gegeben

class Test {
int a ;
Test( int a ) {
This.a = a;
}
}
And the following code fragment
public void filter (ArrayList<Test> al,Predicate<Test> p) {
iterator<Test> i = al.iterator( );
while(i.hasNext( ) ) {
if(p.test(i.next( ) ) {
i.remove( );
} }
----
ArrayList<Test> l = new ArrayList<Test>( );
Test t = new Test(5); l.add
t= new Test(6); l.add
t=new Test(7); l.add
//Insert method call here
System.out.println(l); 

Welche der folgenden Optionen werden gedruckt? [5 7] ?

  • A. filter(al,t->ta%2==0 );
  • B. filter(al, (Test y)->ya%2==0);
  • C. filter(al, (Test y)->ya%2);
  • D. filter(al, y-> return ya%2==0);

8. Was trifft auf java.util.function.Predicate zu?

  • A. Es handelt sich um eine Schnittstelle, die eine Methode mit einer Deklaration wie-
    öffentlicher Leertest (T t)
  • B. Es handelt sich um eine Schnittstelle, die eine Methode mit einer Deklaration wie-
    öffentlicher boolescher Test (T t)
  • C. Es handelt sich um eine Schnittstelle, die eine Methode mit einer Deklaration wie-
    öffentlicher boolescher Test (T t)
  • D. Es ist eine abstrakte Klasse, die eine Methode mit einer Deklaration wie-
    öffentlicher abstrakter boolescher Test (T t)
  • E. Es ist eine abstrakte Klasse, die eine Methode mit einer Deklaration wie-
    öffentlicher abstrakter Void-Test (T t)

9. Gegeben

class Test {
int a ;
Test( int a ) {
This.a = a;
}
}
And the following code fragment
public void filter (ArrayList<Test> al,Predicate<Test> p) {
for(Test t : al) {
if(p.test
System.out.println(t.a)
} }
---
ArrayList<Test> l = new ArrayList<Test>( );
Test t = new Test(5); l.add
t= new Test(6); l.add
t=new Test(7); l.add
//Insert method call here

Welche der folgenden Optionen gibt 7 aus?

  • A. filter(al, (Test y) -> { return ya>6 ; });
  • B. filter(al, (Test y) -> { return ya>6 });
  • C. filter(al, ( d) -> return da>6) ;
  • D. filter(al, d -> da>6) ;

Antworten

1) Richtige Option: C

Die funktionale Schnittstelle muss genau eine abstrakte Methode haben und kann beliebig viele Standard- oder statische Methoden haben.

2) Richtige Optionen: C,D

Die Methode akzeptiert keine Parameter. Der Lambda-Ausdruck sollte Klammern in der Parameterliste des Lambda-Ausdrucks enthalten. Die Methode gibt nichts zurück, daher sollte der Körperteil auch nichts zurückgeben.

3) Richtige Optionen: A, F.

Option B ist falsch, da das Schlüsselwort return nicht verwendet wird. Die Optionen C, D und E sind falsch, da die Variable e bereits vom Lambda verwendet wird und nicht neu definiert werden kann. Außerdem fehlt bei Option C das Schlüsselwort „return“ und bei Option E das Semikolon.

4) Richtige Option: A.

Dieser Code ist korrekt. Zeile 8 erstellt einen Lambda-Ausdruck, der prüft, ob das Alter kleiner als 5 ist. Da es nur einen Parameter gibt und dieser keinen Typ angibt, sind die Klammern um den Typparameter optional. Zeile 10 verwendet die Predicate-Schnittstelle, die eine test()-Methode deklariert

5) Richtige Option: C.

Die Schnittstelle akzeptiert zwei int-Parameter. Der Code in Zeile 7 versucht, sie so zu verwenden, als wäre es ein StringBuilder. Es ist schwierig, Typen in einem Lambda zu verwenden, wenn sie implizit angegeben sind. Denken Sie daran, die Schnittstelle auf den tatsächlichen Typ zu überprüfen.

6) Richtige Optionen: A,D

B ist falsch, da die Klammer für den Parameter fehlt und ArrayList den falschen Datentyp für den Parameter hat. C ist falsch, da geschweifte Klammern zwingend erforderlich sind, um das Schlüsselwort zurückzugeben.

7) Richtige Option: B

Option A ist syntaktisch korrekt, führt jedoch zu einem Fehler bei der Kompilierung, da die Variable t im selben Bereich liegt und nicht zweimal deklariert werden kann. C ist falsch, da es den Wert int zurückgibt, die Predicate-Methode jedoch einen booleschen Wert zurückgibt. D ist falsch, da geschweifte Klammern obligatorisch sind, wenn die Rückgabe im Lambda-Ausdruck verwendet wird.

8) Richtige Option: B

Um diese Frage zu beantworten, müssen Sie sich die Deklaration der Predicate-Methode merken
Folgen Sie diesem Link, um mehr über Predicate zu erfahren: https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html

9) Richtige Optionen: A,D

B ist falsch, da das Semikolon nach der Return-Anweisung fehlt. C ist falsch, geschweifte Klammern sind obligatorisch, wenn die Rückgabe verwendet wird.

Ich hoffe, dass diese Fragen für die Vorbereitung auf die OCAJP 8-Prüfung hilfreich sind. Wenn Sie Fragen zur Vorbereitung auf die OCAJP-Prüfung haben, schreiben Sie diese bitte in den Kommentarbereich. Wir helfen Ihnen gerne beim Bestehen der Prüfung.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen