I recently sat and passed the Sun Certified Java Programmer 1.6 exam (310-065). Throughout my life I have found exams unusually difficult so I wanted to share some tips which I found invaluable in case they are of help to others.
Before explaining my revision tactics it might be useful to give a bit of background on the exam itself. The exam is a multiple choice test which consists of 60 questions, has a pass mark of 58% and a duration of 180 minutes. This gives approximately 3 minutes to answer each question. Questions with more than one correct answer will state how many answers should be picked, but exactly the right answers must be selected for each question to get the mark. Most of the questions involve reading a code excerpt and detailing the outcome of the execution of the code, some questions involve dragging code snippits in to the appropriate place in a code excerpt. The exam is not negatively marked.
So without further ado, here are my revision tactics:
Read the official book(s)
There are several books on the market which exist specifically to teach the exam subject content, reading at least one of these in detail is one of the most important things you can do. I chose the study guide by Kathy Sierra and Bert Bates and found it to be excellent; the book covers all the official certification objectives in detail and also provides a useful section on how to prepare for the exam. As an added bonus the book comes with a free CD which contains the book content as a PDF plus an exam simulator containing 2 full length mock exams. Note that there are many other SCJP 1.6 books available which are definitely worth checking out before you decide which to buy as you never know which will suit you most.
Learn the chapters and objectives
The SCJP exam will only test you on the official objectives, the exam questions are notorious for being deliberately ambiguous about what they are testing (by including red herrings) and for often referencing at least one objective even when the answer refers only to a sigle objective. Thus knowing the objectives can give you a distinct advantage in helping to quickly identify what a question is really testing you on, it also makes it quickly to spot and eliminate red herrings allowing you to answer questions more accurately.
Do mock exams
Mock exams are important since they allow you to test your skills, identify strong/weak areas and determine your question answering speed. Having worried that I would run out of time in the real exam I found this really beneficial as I determined early on that I generally took about 90 seconds to answer each question. This was comforting to know and made me much more relaxed in the real exam as I knew I would have time to complete all questions and review my marked questions. There are several sites which offer free mock exams, I used www.certpal.com which contains full mock exams for both the SCJP 1.5 and 1.6 certifications. Don’t be put off by the slightly basic design of the site, or by the occasionally badly worded question explanations as the quality of the questions outweighs both these things. With retrospect, having now taken the exam, I can see that the certpal questions were consistently harder than the real exam questions, so if you can consistently get a good pass mark on certpal that’s a good indicator of being ready for the exam. However if you don’t like certpal then JavaRanch maintain a useful list of SCJP mock tests.
Seems obvious doesn’t it but you’d be suprised how many people apparently don’t sit down and learn through coding. I found that writing small pieces of code, specifically targeted in testing an individual objective or API, to be hugely beneficial in enhancing my understanding of my weaker areas. Coding also helped me in learning a new objective/API that I hadn’t previously used much before (java.util.NavigableSet and java.util.Scanner were pretty new to me). I also found coding really useful in a couple of instances where I didn’t understand the answers to certain mock exam questions, being able to code the question and then debug through the code line by line caused me to unlearn a couple of my own mis-understandings which would have otherwise tripped me up in the exam.
Again when reviewing my mock exam question failures there were a few instances when, even after coding and debugging a question, I failed to understand WHY the JVM would demonstrate a certain behaviour. I found JavaRanch to be an invaluable resource here, particularly the Big Moose Saloon forums which have friendly and dedicated boards for SCJP questions and answers.
Make revision a regular practise
Revise regularly and often, in a consistent manner each time. I gave myself 8 weeks to revise for the exam and changed my daily routine by doing the following:
- I stopped cycling to work and instead took the train.
- Each morning and evening on the train I revised by reading new material or re-covering old material or by reading flashcards
- During lunch each day I took 15-30 minutes to make detailed revision notes on what I had read that morning.
- Each evening I varied my revision by either coding, condensing my detailed notes to concise revision flashcards or doing mock questions (not whole exams though).
- On each of the last 3 weekends I sat a full length mock exam and went through my question failures and flash cards.
Figure out what works for you
The above is what worked for me and what suits each person is going to be highly subjective. My point here is that you should try and find something that works for you, whatever that may be. Make flash cards - Flash cards are a brilliant and very portable means of concisely documenting information. Keep them brief, use bullet points and mnemonics where possible, carry them with you and test yourself (or get others to test you) as often as possible.
I think that’s about it, ultimately the SCJP does take a small chunk of time out of your life so it’s worth making sure you can dedicate that time before you commit to booking the exam. However I think it’s a useful certification to have and as someone who has been developing Java for several years I am pleased that taught me some new things that I didn’t know and helped me un-learn a couple of things I thought I knew! Hopefully this will serve to make me a better software engineer!
I hope this is helpful to anyone considering/ already studying for the SCJP exam - good luck!