This morning I took the OCA exam and passed with 98%! I'm very happy with this result!
I read each question carefully, answered it and after that verified my answer. There were one or two times where I corrected the answer upon verification because of a subtle point I had missed. Near the end I marked only one question for review.
After answering all 70 questions I only had about 5 minutes left in which I reviewed this question and finished with about 3 minutes left.
My preparation:
Working in a part-time Java job for several few years and 6 years full-time.OCA/OCP Java SE 7 Programmer I & II Study Guide by Kathy Sierra and Bert Bates, including the test questions and mock exam on the CD-ROMMade all of the (very high quality) Enthuware mock exams (OCAJP 7).
All of these were definitely required for me to get this high score. With only the job experience alone I would probably pass, but without such a very high grade.
The book is very good for preparation, but even after reading the book twice, I really benefited from doing the mock exams. They taught me some subtle points that you may rarely encounter on the job but could encounter on the exam.
They are very useful for learning the general format of the questions and getting a feel for how the exam software works and how much time you can afford to spend on each question. I learned to first have a very quick glance at the possible answers before reading a large piece of code. Especially if there is no answer containing "compilation fails", you know that you don't need to check for compilation errors. This generally takes more time than only checking what the code does.
My scores on Enthuware mock exams:
Starter Test 89%
1 91%
2 90%
3 93%
4 89%
5 88%
6 98%
Last Day Test 96%
I carefully reviewed each question that I answered wrong and each question that I was not entirely sure of. The Enthuware exam has excellent explanations. Sometimes I checked details by googling for them. This invariable led me to stackoverflow.com, I sometimes read the parts of the JLS to which the Stackoverflow answers are linking. This was especially useful for learning the subtleties of which conversions are implicitly done (e.g. int to float) or require a cast (float to double, short to char) and how Java evaluates expressions (e.g. when they contain compound operators or throw an exception). Not all of this very detailed information I read was necessary to make the exam, but still nice to know.
In addition I have read Java Puzzlers -- Traps, Pitfalls, and Corner Cases by Joshua Bloch and Neal Gafter. Definitely not required, but it's fun to read and experiment with and may be useful to avoid some of the possible traps on the exam.
Now on to learning for the OCP exam!