Tuesday 26 September 2023

1Z0-829 exam review

I took and passed the "1z0-829 OCP Java SE 17 Developer" exam last week. I've previously passed the 1z0-817, 1z0-810, 1z0-804 and 1z0-803 exams for the Java SE 11, 8 and 7 (Programmer I and Programmer II) certifications respectably. As a veteran of these exams I thought I'd share my experience.

Notes on the exam and the purchase

Firstly, as someone who has already achieved the 'Developer' certification on a previous version, I have become accustomed to taking 'upgrade' exams wherein the topics are specifically the changes in the language. E.g., Java SE 8 was very functional programming heavy and Java SE 11 had a lot of focus on modularity. 1z0-829 covers the entire spectrum of the language making the topics and possible questions faced much broader.

There can be confusion after purchasing the exam which I want to mention here as there was little help online. After you purchase your exam voucher you will be the administrator to that voucher. As the administrator you will need to assign that exam attempt to yourself via the Oracle Exam Attempt Administrator tool before it shows up on the Oracle University site. Also note that Pearson VUE do not support this exam. You need to schedule within the Oracle University site only.

Is this still worth doing!? I'd say so. Personally I like to take these exams as it keeps my knowledge current and fresh. Plus it looks great on the CV! With releases every 6 months and LTS versions every 3 years Oracle are keeping Java alive and kicking. Many libraries and languages have come around due to Java limitations. Oracle tend to see what is popular and put it in - and now at a more regular basis, e.g.:

  • Google Guava date libraries over java.util.Date and java.lang.Calendar classes due to lack of features - Java Date/Time API in SE 8
  • Scala functional programming - Java added this in SE 8
  • Kotlin concise language features - examples of this are the var keyword added in SE 10, records added SE 11, sealed classes in SE 17

Revision

As mentioned, the exam topics are broad covering many aspects of the language. Newer features of the language are covered so make sure you understand switch expressions, text blocks, pattern matching (with instanceof), and records. Hopefully everything else is just a refresher.

I used the following resources for my studies:

Java SE 17 Developer (1Z0-829) (Video Course) By Simon Roberts: This chap dives into the details using presentation slides, whiteboards and code examples. With 31 lessons adding up to 21 hours it may border on the excessive. There were topics he covered which he mentioned would not be on the exam (and some he didn't but weren't either! This may not be the case for you but I wouldn't spend too much time on Semaphores, Phasers or Exchangers for example). Simon is a former employee of Sun and author of exam questions, so I recommend these videos as accompanied by his whiteboard and 'question times', he does help the viewer understand more complex topics. You can also speed up the videos to reduce that 21 hour watch time!

OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829: After using Scott Selikoff and Jeanne Boyarsky's previous OCP book for SE 11 I knew what I was getting here. The writing style is very conversational, making even the more complicated subjects simple via their more human step by step guidance. Again, accompanying the book are the flashcards and over 1000 exam questions via the Wiley site. These questions are much more difficult than the actual exam, with longer code examples and more choices. My main gripe with this book is the section on Modules. The example of a zoo is quite longwinded and many of the explanations and diagrams seem unnecessary. I understood the concepts but I feel it could have been done more concisely.

There are a few program errors in both which is disappointing but nothing major. If you are unsure of something then best run it in your IDE or read the documentation to be sure.

For me I spent one month preparing for this, refreshing on some of tricky edge cases of the language that never come up in day-to-day life, and understanding the new language enhancements.

Taking the exam

This is a proctored exam taken from home. You need to make sure you personal computer can run the test software. It seems to be a browser-like full screen app that include Zoom-like web cam functionality. You cannot actually install this until the check-in. You can check-in 30 min before the exam and wait in a lobby (oddly shared with other candidates tuning their web cam settings). I was expecting to have to share evidence of my room and ID but neither were requested. The admin gave me a code at the time of my exam to start the test. I did not have any papers to hand and did not notice any drawing or note taking features to the test software. In either case, don't let yourself down by giving any doubt to your honesty and abide by the rules.

Exam difficulty

The pass mark is a little higher for this one compared to previous exams with 68% required from 50 questions. That means you need 34 from 50. The time is only 90 min so do not spend too much time on any question. There should be many questions you'll be able to identify the solution within a matter of seconds so it should level things out. I finished with 20 min spare to go over flagged answers.

Example code

I have example code for the new features (from Java SE 11 to 17) available in this repository.