Anfang Oktober hat Oracle die Erlangung der Java-Zertifizierung vereinfacht. Statt zwei Prüfungen müssen Sie jetzt eine ablegen, während sich der Preis für die Prüfung nicht geändert hat. Wer sich für das Aufgabenniveau und weitere Details zur Prüfung interessiert, frage ich unter dem Schnitt - ich werde beschreiben, warum ich mich entschieden habe zu bestehen, wie ich mich vorbereitet habe, welche Fragen ich hatte und welche Schlussfolgerungen ich gezogen habe.
Im Oktober sah ich die Nachricht, dass Oracle eine neue Prüfung, 1z0-819, startet, um die alten 1z0-815 und 1z0-816 zu ersetzen. Zuvor mussten Sie zwei Prüfungen bestehen und insgesamt 300 US-Dollar ausgeben, um Oracle Certified Professional zu werden. Jetzt wurde der Betrag halbiert. Darüber hinaus hat sich die Anzahl der Fragen geändert. Wenn zu Beginn jeder Prüfung 80 Fragen gestellt und 150 Minuten dafür vorgesehen wurden, dauert die Prüfung jetzt 90 Minuten und enthält 50 Fragen zu allen Themen aus früheren Prüfungen. Die meisten Fragen können mehrere richtige Antworten haben.
Beginnen wir mit den Zielen, die ich verfolgt habe: Da ich eine Physikausbildung habe und selbst Java studiert habe, könnte diese Zertifizierung meiner Meinung nach dazu beitragen, mein Wissen über Java zu strukturieren, und ich habe auch ein Dokument, das bestätigt, dass ich programmieren kann. ...
Wie man sich registriert? Registrieren Sie sich bei einem Oracle-Partner pearsonvue.com, verknüpfen Sie ein Oracle-Konto und wählen Sie, wie Sie es aufnehmen möchten - im Zentrum oder von zu Hause aus. Wenn die Option von zu Hause aus ausgewählt ist, werden sie Ihnen während der gesamten Prüfung durch die Kamera und das Mikrofon folgen. Es sollte sich niemand im Raum befinden. Sie können mit niemandem sprechen und nur auf den Bildschirm schauen. Das Internet muss stabil sein, ohne Unterbrechungen. Andernfalls wird das Ergebnis abgebrochen. Ich habe mich für ein spezialisiertes Zentrum entschieden, damit es ruhiger ist.
Welche Materialien können bei der Vorbereitung helfen? Wenn Sie Programmiererfahrung haben, empfehle ich die Verwendung des OCP Oracle Certified Professional Java SE 11 Programmer II-Studienhandbuchs: Prüfung 1Z0-816 und Prüfung 1Z0-817 von Scott Selikoff, Jeanne BoyarskyDieses Buch wurde für die Prüfung 1z0-816 geschrieben und deckt den größten Teil der Prüfung ab. Diese Autoren haben auch ein Buch, um sich auf den ersten Teil der letzten Prüfung 1z0-815 vorzubereiten, aber es ist für absolute Anfänger gedacht und es ist ehrlich gesagt langweilig, es zu lesen. Darüber hinaus finden Sie im Internet Prüfungsnachweise, mit denen Sie Ihr Wissen nach dem Lesen des Buches überprüfen können.
Welche Fragen? Nur 50 Fragen, die 90 Minuten lang sind, dh weniger als 2 Minuten pro Frage. Es gibt schwierige, das heißt, manchmal muss man länger als 2 Minuten nachdenken. Bei einigen Fragen sind mehrere richtige Antworten möglich. Insgesamt können bis zu 7 Antworten vorliegen. 68% der Fragen müssen richtig beantwortet werden.
Worauf ich Sie aufmerksam machen möchte. Es gibt viele Fragen zu Streams, Lambdas und funktionalen Schnittstellen.
Sie können diese Art von Aufgabe erhalten:
Sie müssen den Fehler in welcher Zeile finden, falls vorhanden:
IntStream is = IntStream.of(1, 3, 5);
int x = is.filter(i->i%2 == 0).average(); //1
System.out.println(x);
int y = is.filter( i->i%2 != 0 ).sum();//2
System.out.println(y);
is = IntStream.of(1, 3, 5, 9);
int z = is.filter( i->i%3 != 0 ).count();//3
System.out.println(z);
Ebenso Aufgaben mit Sammlern. Was wird angezeigt:
class Student {
public static enum Grade {A, B, C, D, F}
private String name;
private Grade grade;
public Student(String name, Grade grade) {
this.name = name;
this.grade = grade;
}
public String toString() {
return name + ":" + grade;
}
}
class TestClass {
public static void main(String[] args) {
var ls = Arrays.asList(new Student("S1", Student.Grade.A),
new Student("S2", Student.Grade.A),
new Student("S3", Student.Grade.B),
new Student("S4", Student.Grade.C),
new Student("S5", Student.Grade.F));
var group = ls.stream()
.filter(student -> student.getGrade() != Student.Grade.F)
.collect(Collectors.groupingBy(Student::getGrade,
Collectors.mapping(Student::getName, Collectors.toList())));
System.out.println(group);
}
}
Tatsächlich sind diese Fragen mit Fragen zu Sammlungen verflochten. Sie müssen beispielsweise beantworten, was der folgende Code auf dem Bildschirm anzeigt, wenn er überhaupt kompiliert wird:
var collection = new HashSet<>();
collection.add(1);
var list1 = List.of(collection);
collection.add(2);
var list2 = List.copyOf(collection);
System.out.println(list1);
System.out.println(list2);
Und wie wird sich das Ergebnis ändern, wenn wir anstelle der ersten Zeile schreiben?
var collection = Arrays.asList(1,2,3);
var kann speziell verwendet werden, um den Prüfer zu verwirren:
class X {
public void print(List<Integer> lst) {
System.out.println("X list " + lst);
}
}
class Y extends X {
public void print(List<Integer> lst) {
System.out.println("Y list " + lst);
}
}
public class TestClass {
public static void main(String[] args) {
X x = new Y();
Y y = new Y();
var list = new ArrayList<>();
list.add(1);
x.print(list);
y.print(list);
}
}
Sie müssen angeben, was angezeigt werden soll, oder angeben, dass das Programm nicht kompiliert wird oder während des Betriebs eine Ausnahme ausgelöst wird.
Sie müssen verstehen, was während der Vererbung passiert.
Angenommen, eine Methode wird in einer Klasse mit der folgenden Signatur angegeben:
public List<Integer> getCollection() {
return new ArrayList<Integer>();
}
Welche der folgenden Methoden kann in der geerbten Klasse enthalten sein?
public List<? super Integer> getCollection() {
return new ArrayList<Integer>();
}
public List<? extends Integer> getCollection() {
return new ArrayList<Integer>();
}
public ArrayList<Integer> getCollection() {
return new ArrayList<Integer>();
}
Zu Schnittstellen dieses Typs gibt es einige Fragen:
interface Bird {
default String fly() {
return "fly";
}
}
interface Parrot extends Bird {
public String fly();
}
public class RainbowParrot implements Parrot {
public static void main(String[] args) {
Bird b = new RainbowParrot();
System.out.println(b.fly());
}
}
Wie wird das Programm in diesem Fall funktionieren?
Diese Themen machen den Großteil der Fragen aus, wahrscheinlich mehr als 25. Die Themen Multithreading, Arbeiten mit Dateien, Anmerkungen und Modulen werden mit jeweils nur zwei oder drei Fragen dargestellt. Andere Themen wie Arbeiten mit JDBC, Lokalisierung usw. meistens zu einem Thema.
Eine vollständige Liste der Themen, die in der Prüfung enthalten sein können, finden Sie hier .
Separat möchte ich erwähnen, da dies eine Entdeckung für mich war - ich bin auf zwei ganze Fragen zur Verwendung der doPrivileged-API gestoßen, die ich bei der Arbeit noch nie zuvor gesehen hatte. Es lohnt sich also, dieses Thema separat zu bearbeiten. Sie können es hier sehen .
Ich möchte Sie noch einmal darauf aufmerksam machen, dass die Zeit stark begrenzt ist, obwohl ich zwei Fragen zum Thema doPrivileged übersprungen habe und die zugewiesene Zeit kaum erreicht habe.
Im Antrag auf Zustellung können Sie die Fragen abhaken, die Ihnen schwierig erschienen, und am Ende darauf zurückkommen. Ich empfehle, auf den Timer zu schauen. Wenn eine Frage länger als zwei Minuten dauert, überspringen Sie sie und kehren Sie, wenn es die Zeit erlaubt, später dazu zurück.
Wie viel muss ich vorbereiten?
Wenn Sie kein Lehrer für Kurse für Java-Entwickler sind und zur Arbeit gehen, würde ich empfehlen, einen Monat für die Vorbereitung vorzusehen - ein oder zwei Stunden nach der Arbeit. Aber natürlich hängt alles von Ihrem Niveau ab.
Welche Schlussfolgerungen können gezogen werden?
Die Prüfungsvorbereitung hilft Ihnen, Ihr Wissen zu strukturieren und Ihren API-Horizont zu erweitern. Insbesondere habe ich einige interessante Aspekte der Arbeit mit Dateien entdeckt.
Die Zertifizierung kann für diejenigen nützlich sein, die remote mit ausländischen Kunden arbeiten - um deren Niveau zu bestätigen, und sie ist auch ein Plus in Interviews, zumindest können Sie Fragen zu Java überspringen.