I actually took the test before I was ready. I set a quarterly goal at work to get my certification. The period ended on 12/15 so I scheduled the test though I hadn't fully prepared. Thanks to Kathy Sierra and Bert Bates for the study guide that got me there.
Here's what I did to pass:
1. Read the book (doing the code exercises and taking the tests along the way).
2. Reread a couple of chapters covering topics I rarely use at work -- Threads & Inner Classes.
2.5 I did a few rounds in the Java Ranch Round up.
3. Took the LearnKey sample exam 1. This test has a few errors and provides a pretty LAME interface. However, the questions provide a good guage to measure how well you are prepared for the real test.
4. Reviewed some of my weak points (this is where I wish I had more time).
5. Took the LearnKey sample exam 2. Anyone know why the timed tests are set for 90 minutes instead of 120 like the real test?
6. Took the 10 Sun Sample questions. These questions gave me a good idea of what to expect for the real exam. I remember one question on the exam was pretty much the same.
7. Did a little review before the exam and took the test.
The first time I read the book some of the examples that explain why things work the way they do, it didn't sink in. When I reviewed my week points I tried to understand the explanations of why the rules work as they do. As I mastered these concepts, the rules became easy to remember. I recommend digging into the underlying concepts on those areas you find need more study. For example, when I was trying to remember if access for an overridded method could be more or less restrictive, I read the section explaining how polymorphism works with acces modifiers and it became clear. Since subclasses can be accessed through variables cast as the Super class type, then the subclass methods must have the same or less restrictive access.