In early October, Oracle made it easier to obtain Java certification - instead of two exams, you now need to pass one, despite the fact that the price for the exam has not changed. Who is interested in the level of tasks and more details about the exam, I ask under the cut - I will describe why I decided to pass, how I prepared, what questions I had and what conclusions I made.
In October, I saw the news that Oracle is launching a new exam, 1z0-819, to replace the old 1z0-815 and 1z0-816. Previously, in order to become an Oracle Certified Professional, you had to pass two exams and spend a total of $ 300. Now the amount has been cut in half. In addition, the number of questions has changed, if earlier there were 80 questions in each exam and 150 minutes were allotted for this, now the exam lasts 90 minutes and contains 50 questions covering all topics from past exams. Most of the questions can have several correct answers.
Let's start with what goals I pursued: since I have a physics education and I studied java myself, in my opinion, this certification could help structure my knowledge of java, and also have a document confirming that I can ...
How to register? Register with an Oracle partner pearsonvue.com, link an Oracle account, choose how to take it - in the center or from home. If the option from home is selected, then they will follow you through the camera and microphone throughout the exam, there should be no one in the room, you cannot talk to anyone and only look at the screen, the Internet must be stable, without interruptions, otherwise, the result is canceled. I chose to rent in a specialized center, so it's quieter.
What materials can help with preparation? If you have any programming experience, I recommend using the OCP Oracle Certified Professional Java SE 11 Programmer II Study Guide: Exam 1Z0-816 and Exam 1Z0-817 by Scott Selikoff, Jeanne BoyarskyThis book was written for the 1z0-816 exam and covers most of the exam. These authors also have a book to prepare for the first part of the last exam 1z0-815, but it is designed for absolute beginners and is frankly boring to read it. In addition, you can find exam mocks on the net to check your knowledge after reading the book.
What questions? Only 50 questions, which are given 90 minutes, that is, less than 2 minutes per question. There are difficult ones, that is, sometimes you have to think for more than 2 minutes. In some questions, several correct answers are possible. There can be up to 7 answers in total. It is necessary to answer correctly 68% of the questions.
What I would like to draw your attention to. There are a lot of questions about streams, lambdas and functional interfaces.
You can get this kind of task:
You need to find the error in which line, if any:
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);
Likewise tasks using collectors. What will be displayed:
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);
}
}
In fact, these questions are intertwined with questions about collections. For example, you need to answer what the following code will display on the screen, if it compiles at all:
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);
And how will the result change if instead of the first line we write
var collection = Arrays.asList(1,2,3);
var can be used specifically to confuse the examiner:
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);
}
}
You need to specify what will be displayed, or indicate that the program will not compile, or an exception will be thrown during operation.
You need to understand what happens during inheritance.
Suppose a method is given in a class with the following signature:
public List<Integer> getCollection() {
return new ArrayList<Integer>();
}
What methods below can be in the inherited class?
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>();
}
There are a couple of questions about interfaces of this type:
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());
}
}
How will the program work in this case?
These topics account for the bulk of the questions, probably more than 25. Topics of multithreading, working with files, annotations, modules are presented with only two or three questions each. Other topics like working with jdbc, localization, etc. mostly on one issue.
A complete list of topics that can be on the exam can be found here .
Separately, I want to mention, since this was a discovery for me - I came across two whole questions about using the doPrivileged API, I had never encountered this at work before. So it's worth working on this topic separately, you can see it here .
Once again, I want to draw your attention to the fact that the time is seriously limited, despite the fact that I skipped two questions on the doPrivileged topic, I barely met the allotted time.
In the application for delivery, you can tick off those questions that seemed difficult to you and return to them at the end. I recommend looking at the timer, if a question takes you more than two minutes, skip it and, if time permits, return to it later.
How much to prepare?
If you are not a teacher of courses for java developers and go to work, then I would recommend setting aside a month for preparation - allocating an hour or two for this after work. But of course it all depends on your level.
What conclusions can be drawn?
Exam preparation helps you structure your knowledge and broaden your API horizons. In particular, I discovered a couple of interesting aspects of working with files.
Certification can be useful for those who work remotely with foreign customers - to confirm their level, and it will also be a plus in interviews, at least it will allow you to skip questions about java.