In April 2001 I passed my Sun Certified Programmer for the Java 2 Platform exam with a score of 98%. Which may or may not qualify me to give advice to others. So what I've done with this page is put together a few tips that I wish someone had told me along with links to what I think are good resources.
- Try the Javaranch rules roundup but be careful. After a while you may find you have all the answers memorised, which can give you a false sense of security about a concept.
- Buy the recent version of the Java Language Specification--that way when books disagree or you don't understand the results you're getting from your code you can look it up somewhere authoritative.
- Don't buy the small version of the Java Study guide--it's got too many mistakes in it and it's not detailed enough to be useful.
- Buy the Roberts & Heller Java 2 Study Guide. It's got detailed explanations of all the topics and it would be worth it just for the bundled tests alone. Unlike most online tests, the ones on the CD are not based on trick questions or your ability to memorise large chunks of the API. Like the real exam they test understanding rather than memory.
- Make sure you read every chapter in the Roberts & Heller books at least twice and take the end-of-chapter tests. Whenever you get one of their questions wrong make a note of it and why you got it wrong. Try to write some code to clarify it rather than relying on their explanation.
- Write code. Lots of code. Whenever there's a concept you're not crystal clear about write a program that uses it. Write programs till you know what's going to happen without having to compile them. That's one of the skills the exam tests. Even when you're sure about something write some code. The practice will do you good. And of course feel free to try silly things...what if the main method was declared as private?
- It's not enough just to get a good night's sleep on the day of the exam. Try to develop a regular pattern of sufficient sleep for the week before the exam. I took a few days off work during which I avoided thinking about or even looking at other languages and went to bed early.
- In the week before the exam get in the habit of taking a mock exam at around the same time of day as the real one is scheduled to take place. That way you get more comfortable with it and when the time comes for the real exam you're more relaxed.
- Prepare notes, maybe a mindmap, detailing the things you tend to get wrong in the mock exams. Make sure that your notes on those topics are based on facts you've verified yourself by going through the language specification and writing example programs.
- Make sure you know what's really going on with the bit-shifting operators. It's quite different to C/C++. Especially the use of two's complement.
- You will most probably find yourself with time to spare at the end of the exam. Don't just get up and go. It's not a race so it's wiser to use the time to double check all your answers. Trying alternative ways to work out the answers is also a good idea. I found quite a few mistakes in my exam this way. At this point your personal list of recurring mistakes comes in useful. Whilst double-checking your answers be on the lookout for situations where you've jumped to conclusions about the answer and haven't considered whether the code might not compile. For instance while overriding a method you can't make it more private.
- Marcus Green's excellent website (containing a very thorough FAQ, a couple of mock exams, and a discussion area
- JXam (a mock exam program)
- Roseanne Zhang's FAQ (covers the trickier parts of Java)
- Michael Thomas's advice page
- Some more good advice
- Interesting questions that raise some tricky issues
- Bill Brogden's Hardest Questions applet
- Javaranch home of the frighteningly addictive 'rules roundup', a discussion area and a massive list of online mock exams.