On Monday I squeaked past the SCJP with 93%. OK, there's a little daylight between that and the minimum passing score but it was a lot better than I expected. Since I've been a lurker in this forum for a while and knowing from first-hand experience how much trepidation grows as The Test approaches, I thought I'd pass along some of the procedures I used. Of course, YMMV.
0) First, some background. I have experience in C, Perl, and assorted other languages; about 1 year with Java. At the Java One conference in June, Sun offered an exam voucher for half price ($75). Not knowing much about the exam at the time I bought it thinking it was a good deal. They even had exam sessions right there and being naively confident I was tempted to take it there but (fortunately!) I didn't have time.
1) After I got home I began to grasp the magnitude of the problem :-( I read Eckels, RHE, and Brogden's Exam Cram, probably spending the most time with RHE. I kept a notebook while I read and jotted down what I thought were important points. I spent about three months reading sporadically, averaging perhaps 1 hour/day. At the end I had 66 pages in my notebook.
2) I reviewed these and started a "cheat sheet" of points I *had* to memorize since I couldn't reason them out. This list started with about 10 items.
3) Then I started with mock exams. These were depressing at first because my scores were low, even after three months of studying! However, mock exams are very good because a) they teach you to look for minutiae that the real exam requires b) they eventually give you confidence, and most importantly c) they give you feed back on what you need to study.
4) I used the mock exam results to augment my cheat sheet. At the end I had 13 pages, probably about 100 items. Before every mock exam, I would review my cheat sheet which helped me memorize the points therein. After the exam, I would usually be able to add a few more items. Note: I originally intended to make flash cards for all the items. However, it was just easier to use StarOffice and make a Q&A-style document. I still think flash cards would be an effective means of studying, I just didn't get around to making them.
5) There are a plethora of mock exams on the web. javaranch is an excellent place to start but the questions are probably a little easier than the real exam. The best sites give you more than just the right answer but also a good explanation. I liked Brogden's exam and his Hardest Questions. I also liked the sample final and 3 bonus exams included with RHE.
6) Write *lots* of little test programs. You'll need to verify that i=i++; does not change the value of i, and that s.toUpperCase() doesn't change s but that s+="foo"; does. You'll want to play with static and inner classes, not to mention static inner classes. It's a way of getting real experience as lightweight as it may be; it's still easier to remember than solely book knowledge.
7) On the mock exams I was getting 70s and 80s and an occasional 90+ when I decided to schedule the exam. For those of you who have not yet taken a Prometric esam: it's an excellent setup and easier to use than most of the mock exams, including the sample RHE ones - remember, I'm talking about just the interface, _not_ the questions. But about the questions: one BIG feature that one one mock exam emulated (jtips, I think?) was that when multiple answers were sought, they told you HOW MANY. IMHO, that makes the question *much* easier.
8) About the exam itself: you have plenty of time (2 hours) because on most of the questions you realize immediately whether you know the answer or not; spending one minute or one hour or one day won't improve your chances. On the first pass I skipped four questions and finished the others in about 50 minutes. Then I did the four skipped ones, and still had an hour to review every question twice.
9) About the exam questions: it covers a lot of details that I didn't know even after writing three large Swing programs (over 10KLOC). I didn't know them because in real-life programming you don't have to know them by heart; the JDK Javadocs will be right with you and you can have the answer in seconds. OTOH, the exam also covered core fundamentals that aren't an immediate lookup, such as when late-binding applies, how threads behave, inheritance rules, etc.
10) On the day of the exam: no matter what people tell you and no matter how many mock exams you've taken, you will always wonder if your info is correct or if the mock exams are realistic or not. But if you've taken enough mocks, your eye will be finely tuned to potential tripwires: illegal overriding, default accessability, classname agreement with filename, that sort of thing. I reviewed my cheat sheet (and Brogden's Exam Cram one) before going in.
11) If you've had the patience to read this far, you'll do fine!
Jim (SCJP !)
[This message has been edited by Jim Z Wang (edited December 19, 2001).]