Becoming an Oracle Certified Associate Java Programmer - OCAJP

Please note: I'm writing this article out of my own experience with the exam, and some things may differ from your experience, exam, questions, preparation, opinion etc.

The Oracle Certified Associate Java Programmer is the first and lowest certification handed out by Oracle to all enthusiasts who decide to walk down the path of mastery. CodeRanch has a wall of fame for people to engrave their feats for all to see, for both the OCAJP and OCPJP.

The exam may seem daunting, scary and complicated, and truthfully, it kind of is. But with adequate preparation, it's not that hard to pass. After all, every few days we see new people on the wall of fame.

In this article, I'll try to give you some advice on how to prepare for this exam, which will without a doubt be a shining addition in your CV and a memory of an obstacle you managed to tackle.

Literature

The first thing that may come to your mind is which literature can you rely on to prepare you for the exam. Fortunately, there are some amazing books out there dedicated solely to serve as study guides for this exam.

These three books collectively run over 1500 pages of detailed preparation. You don't have to go over them all, of course, one should be enough, but I would personally advise going over at least two. Each book jumps into the same problems in a different way and understanding more than one perspective can give you an upper hand on the exam.

Another thing I'd like to mention is to try to get the books in physical form since you'll be spending a lot of time with them. I personally prefer reading from paperback books, rather than a PC, and it also proved to be more practical.

Oracle also offers prep seminars and crash courses, but they charge high prices (850-1000$) for 5-day training sessions, while the exam itself costs around 250$ - depending on the region.
I personally wouldn't advise taking this course of action since it's very pricey and I don't think it offers adequate preparation - based on the feedback of some people who took it.

Required Time

Depending on your starting level, experience, and knowledge, the required time to prepare for the exam will vary.

  • If you have little or no experience - I don't advise taking the exam. Take your time to learn the language and gain some experience before attempting this exam.
  • If you have studied/worked with Java for 1-2 years - Also depending on the type of learner and person, I would suggest taking around 2-3 months (give or take) to confidently prepare for a smooth exam. Some prepared for the exam in just two weeks, and some took 4 months, but a general "normal" preparation time should be around 2-3 months.
  • If you have studied/worked with Java for 3-5 years - I don't think you'll need more than a month to prepare for the exam, but this also varies for each person.

If you have the luxury of free time during summer, take your time and don't overburn yourself with studying, but for working people who don't have much time, studying a couple to a few hours a day should do the trick.
The important thing is to allow enough time for new information to sink in otherwise the myriads of words and concepts will flush away what you have learned previously.

Mock Exams

The books I mentioned before offer mock exam questions at the end of each chapter. Some include exercises, some just questions with a few answers. 
In any case, the books offer multiple hundreds of questions for you to test yourself.

In addition to mock exams from the books, using services like Enthuware and WhizLabs is highly recommended. 

Enthuware offers high quality, accurate questions, and multiple full mock exams to practice on. It is even considered harder than the real exam, so if you pass Enthuware, you'll pass the real deal. Practically all the people who passed the exam relied on this service to prepare and it truly helps a great deal. In fact, I remember a question from Enthuware that was almost identical to a question from the exam.

I haven't used WhizLabs personally, but I've been hearing positive feedback from a bunch of people. 

The Exam

At the time of writing this article, the latest edition of the exam is 1Z0-808 granting you the title of Java SE 8 Programmer I. The following information is subject to change at any point according to their User Agreement, but I don't think that it will oscillate too much.

Question number: The exam has 77 questions, out of which 7 will randomly be discarded from the result. These 7 questions are used as test questions, as possible candidates for a newer version of the exam. This may, or may not be good for you, because it can either discard an incorrect answer or a correct one.

Question topics: The topics are mostly revolving around the fundamentals of Java SE 8 - classes and their structures, inheritance, interfaces, data types, methods, operators, arrays, loops, exception handling and a few prominent classes from the Java API (String/StringBuilder and ArrayLists) with the addition of the Date and Time API. It also includes a bit of functional-style programming in the form of lambda expressions.

Time to finish: You have 150 minutes to finish each and every question on the exam. This means that you have a bit less than 2 minutes for each question, with the always visible timer counting away in the top right corner of the screen. This seems unfair for some people, especially with some long, convoluted and challenging questions, but I personally didn't have a problem with this, even though I was terrified about it in the beginning. It sounded like madness, but if you include all the questions whose answers you know by heart and the amount of code you can skip just by noticing a compiler error in the first few lines, buying you more time, I think that 150 minutes is quite enough to finish the exam. I was left with 20 minutes, in the end, to go over all of the answers and potentially look for errors.
If you don't think that you can do it, or have a problem regarding time on the mock exams, when you encounter a wall of text or a question that takes too much time, you can mark it and proceed with the easier ones. You'll be able to overview all marked questions and answer them in the end once you've cleared up the rest.

Passing score: The minimum passing score is 65%. This means that you have to answer at least 46 answers right in order to pass. Keep in mind that 7 questions will be discarded as explained above.

When are you ready: It's important to note that practical knowledge isn't the only thing needed for this exam. What the exam is interested in isn't your ability to make a simple application, but rather your ability to understand just how does the written code work. How the objects are being stored in memory, how do Strings work, how does the JVM behave. In most cases, after reading these books, people are shocked at how much they, in fact, didn't know about the inner workings of Java. You're not only supposed to write code, you must understand it.
To assure passing, I'd say that getting ~80% score on mock exams ensures a similar or better result on the real exam.

Nature of the questions: The books that I referenced offer tips, and call out common tricks that you may run into. Questions usually don't span over multiple topics - if your question seems to be about a certain topic, you would probably focus on that topic. An example of a trick would be making you believe that the question is based on some topic, and offering 3 answers regarding it, but you're supposed to notice an error in the imports or some random, often overlooked, piece of code making the rest of the code, which was in the focus, obsolete. There are lots of tricks that will be employed to test your knowledge and focus so be wary of them.

What to do if you're short on time: Give it your best not to postpone preparation, but if you accidentally find yourself in a situation where you don't have enough time to finish everything, pick out the topics that you're already comfortable with, which you'll encounter in abundance on the exam, and skip the ones that won't make many appearances like for an example Lambda expressions. 

Next Step After the Exam

Using Oracle's CertView, you'll quickly receive your exam results. Sadly, Oracle no longer prints out official paper certifications, but rather provides them in digital format, but that doesn't stop you from printing it out and putting it next to your desk!

After passing the 1Z0-808 exam, the next level is 1Z0-809. This exam grants you the title of Java SE 8 Programmer II and is a professional level certification. It's aimed at advanced users of the language and introduces more advanced topics and concepts. Preparing for this exam takes more time and knowledge, but it might even be best to start preparing for it soon after the OCAJP - while it's still fresh in memory. Some found preparation to take over a year, while some managed to do it in less than a mere month. Based on your preparation for the OCAJP, you could estimate the time for the OCPJP.

If you're currently preparing for this exam, best of luck to you and I hope that this blog will help you in any way possible!