It's been a long time since I earned my first Java certification in 2005. Sun was still the owner of Java, my score was 98% and I took the exam at a Prometric Test center. I prepared the exam for seven months with only one book (from Osborne Certification Press, written by Kathy Sierra and Berth Bates) and I had 5 year's experience.
Then I took upgrade exams: Upgrade to Java SE 7 (93%), upgrade to Java SE 8 (83%) and I was starting to prepare the upgrade to Java SE 11 when a friend of mine let me know about the 25th Anniversary offer so I decided to take the full exam, it was only 25 USD, you know, it was worth the risk. I passed it with 78% and l would like to share my thoughts with you:
Certification exams are getting harder and harder with time. I guess this is because the language has been growing up and the number of topics is now huge.
I noticed a big increase in difficulty from SE 7 to SE 8 and I noticed the same from SE 8 to SE 11. Big new features were added there (streams, functional programming, modules, ...).
Books written by Jeanne Boyarsky and Scott Selikoff are a must to pass the exams. You have to read them several times, write down notes and highlight important sentences. The book should be completely scribbled before taking the exam.
Enthuware mock tests are a must to have too. The strategy I always follow is to take between 3 and 5 Leitner mode exams of 10 questions each every day. It is important to read and understand the notes when a question is evaluated, especially if you failed it.
This time, I only studied for 4 weeks, around 2 hours every day, 4 hours during weekends, but for previous exams I studied for 4 or 6 months, an hour or two every day. I include in this time mock exams, writing code to check doubts I could have, reading wikis and docs, etc.
I like to write down cards with short sentences, one or two cards per topic, and read them from time to time just to refresh what I am learning.
Take a Standard Test on Enthuware tool from time to time to get used to the exam format and time. It is a good way to measure your progress too.
Time is very, very tight. You have 90 minutes to answer 50 questions, meaning that you can devote one minute and a half to every answer and then you have 15 minutes left to review your exam.
Be sure you will see questions that could take you more than that time, so be always aware of the time (upper-right corner of the screen) and mark the question (a check box at the top of the window) for later review, and pass to the next one if you feel the answer is taking you too much time.
Do not forget to always choose one answer, just in case you do not have time to review it later. In my case, I only had 45 seconds left to answer the last question so I did not have time to review any answer. Again, time is very tight so do not leave any answer blank (probability might give you a chance).
Be very careful with the Review button. It is very close to Previous and you might click it by mistake. It happened to me twice and I wasted some precious time to come back to the question I was answering.
Do not get discouraged if you do not pass the exam. It is not easy at all, it is full of tricky questions, and the time is tight (did I write this already?). Just keep studying some more time.
If possible, try to use in your daily work everything you are learning. Use streams instead of loops, Paths instead of Files, try-with-resources, etc...
Finally, in my opinion, earning an OCP certification means the person has a great value as a developer because he/she knows perfectly the language so he/she is going to provide a high productivity and quality to the team, which is one of the most important skills companies are looking for. I always encourage people in my team to take the exam if they are not certified yet, to prove themselves they can do it and to improve as developers.
I really hope this is of help to some (it would be nice if it is many) of you. ;-D