Monday, December 7, 2009

How to Prepare for SCJP 6 (Sun Certified Java Programmer) exam?

In November, 2009 I passed SCJP-6 with the score 96% (58 correct answers of 60). That is quite high result, so being inspired with the achievement I have thought about unveiling my "secret of success":

1. Get a good book for your studies. Definetely, it must be "SCJP
Sun Certified Programmer for Java 6 Exam 310-065" by Katherine Sierra and Bert Bates (K&B). Other books for preparation are:
2. Make a plan for your studies unless you are a very disciplined programmer. Otherwise it's not easy to follow the "mind-plan". For reaching high score, expect to consume 20-40 full-days for studies (depending on your experience with Java) or 1-3 months for part-time studies (depending on your skills too).
I recognized that using a spreadsheet is a good way for planning. My spreadsheet contained the following fields:
The column chapter represents a chapter or sub-chapter of the book or any other activity. Deadline is for pre-defined deadline, which motivates to be quick enough and avoid "lazy days". Date really completed stands for real date when chapter/task is finished. Level of skills marks the level of skills acquired. Red is for "poor", yellow is for "average", green is for "perfect/almost perfect". Things to re-read is a place for marking notes what topics/pages must be read again. And two other columns were just for my notes and ideas for my blog.

3. Join the JavaRanch community or bookmark this page at least. It has a good forum for certification questions. There is also a place where certified guys and girls share their ideas how to pass exam with the best score.

5. Look around for mock tests. Two of them are included in the CD attached to the book. One bonus exam can be found following instructions in the book. SUN gives a demo-exam too. However, JavaRanch lists much more.

6. Relax and start learning. Keep up your shape each day. Take a pencil and underline all unclear places or places that raise questions. Also underline all essential things that you don't know already very well. Write down your notes, ideas, doubts, insights etc. directly on the book. Do not underline very well known or nonessential things (i.e. jokes, sarcasm or names of chapters). You will see this method helpful when reading the book for the next time. Also: always have a simple text editor (For Windows I recommend Notepad++; avoid using IDEs with autocomplete and autobuild options like Eclipse or Netbeans), JDK 6 and write many small classes that support your thoughts or test the material. Two benefits come from that: first, you will master the material much better, especially if you are "kinesthetic-learner", second, you will start noticing compile-time errors. Exam contains many questions where the student needs to "compute" correct result of the program OR mark the answer "compilation fails". So do not be lazy and wiggle your fingers all the time.

7. Somewhere in the middle of your studies, buy the exam's voucher (more information at Sun's website, also try to contact your local Prometric site. They also can help you to get the voucher). It is usually valid for one year after purchase and it will motivate you to reach the goal.

OK, now let's go into the details. You have the book (or books), internet connection, computer with Notepad++ and JDK 6, a box full of coffee or tea and much of enthusiasm. Keep reading my experience.

After initial review of Table of Contents of the book, I decided to read the chapters in the following order (I saw it easier according my background):
1 Declarations and Access Control
2 Object Orientation
4 Operators
3 Assignments
10 Development
8 Inner Classes
9 Threads
5 Flow Control, Exceptions, and Assertions
6 Strings, I/O, Formatting, and Parsing
7 Generics and Collections

You can use any other order that looks reasonably, i.e. do not put basic topics like Assignments or Operators to the end.
Some chapters contain several "topics" (i.e. chapter 5 consists of "Flow control", "Exceptions" and "Assertions") so splitting the chapter into several smalled pieces and moving them all into the plan is a good idea.
How to build up the schedule? I used to study few hours each day and more hours at weekends (part-time studies), so you have to adjust the times according your study intensity. I suggest to use several book reading rounds approach. Allocate about a month for the first round. Use one or few days for short chapter and dedicate roughly speaking a week for each long chapter (5, 6, 7).
The round means completing the book once. Two rounds mean that student read the book twice etc. A round consists of performing the following job for each of the chapters:
  • read a chapter
  • marknotes, essential places, hard things, things to remember
  • code a lot
  • read "Chapter summary"
  • read "Two minutes drill"
  • do exercises at the end of the chapter immediatelly. Do them carefully because that will help you getting used to pay attention to details (and you must be sharp-eyed as the exam will definitely try to catch you). Think about the problem, syntax, API, solutions, alternative solutions etc. instead of marking the answer mechanically. Try to explain the problem and why the chosen answer would solve it
  • check the answers, read explanations of incorrect (and correct) answers
  • evaluate your skills and progress. Type the results into the spreadsheet
After the first round I recommend to retake the exercises all at once. That will take several hours or more but it will help to avoid "short-memory" effect when you can remember facts for some short time immediatelly after accepting the material but leads to a "lost-memory" later. Find and complete simple mock tests (Google/Javaranch will help you to find mocks).
Then prepare for the second round. Everything remains the same. The only difference -- skip 100% obvious things while reading the book. And after finishing the round, read all the "chapter summaries" and "two-minutes drills" at once. Then take the exercises. Also you can take one of the exams in the CD attached to the book. You can complete Sun's online test exam. Expect to collect ~90% or more, but pay attention to details.
Third round: remains the same as the first and the second, but skip all the clear content, and concentrate on hard things. After the round, do the second and the third mock tests on CD.
The most important thing: don't overestimate your skills. Java is a tricky language with lots of pitfalls. Expect to get many of them during the real exam.
A note regarding the ExamLab exams: I did "open book" exams because the label "CORRECT/INCORRECT" appears straight after answering the question. In case of failure it's possible to get back and read the question again with noticing what has been wrong. These exams have few mistakes, but you will find them described somewhere in Javaranch.

There is one more thing: open the Java API documentation and read about java.lang.System class. Try to notice essential methods. You can get a question regarding them despite those described in K&B book.

That is all about preparation. Now, how to take the real exam?
First, read the initial chapter of K&B. It contains some invaluable information regarding the exam. Pay attention to these:
  • Drag'n'Drop questions lose their answer if you want to recheck them later. Mark their numbers on the board/paper (depends what you get for the exam, I got several plastic cards and a felt-tip, but that's very bad as it has big tip) 
  • Take some water if you are allowed to bring it in -- you will get thirsty during the exam 
  • There are easy and hard questions, so "answer easy questions, mark hard questions" strategy is reasonable. 
  • Get a good sleep before as you will need fresh head. Necessarily
My advice: do not be lazy and before leaving the exam room CAREFULLY CHECK your exam answers. Do that again and again as much as you have time left. Do not skip "obvious" and "perfectly clear" questions. You are fighting for the perfect result, right? I made ~7 mistakes initially, and after several reviews fixed them one by one. However, two still left despite my clear understanding of the material. Learn from that.
And, of course, feel free to put your experience/questions/feedback right here, into comments.


  1. First of all, Congrats for great score. I am planning to take SCJP and I would follow the schedule and books suggested by you. Thank you so much for sharing this. It's really helpful

  2. it's great, it's my dream to score 96%.Congrats. I want to ask one question. When I read the K&B and then do the tests at the end of chapters i do many mistakes. But when I do some online tests my score is not so bad(approximate -75-80%).
    What is the level in real exam? How many tricky questions are there?
    Please sorry if you don't understand my English

  3. Hi, Rufat.

    Actually all those tests at the end of each chapter are really difficult to complete without any mistake, and not all real-exam questions are as complex as those are. However, I should say that different online mock-ups doesn't always cover every possible question and I saw some of the a bit too easy. Many of them have outdated questions (notice the fact, that many questions have "compilation fails" option which is quite a new thing compared to previous exams). Also consider that small anxiety that you will probably have before the real exam, so it could have some negative impact too. My advice would be to try fighting until you reach ~95% correct answers in K&B book, which means you can reasonably expect similar score in the Prometric's room.

    By the way, after Oracle have bought SUN, the learning centre website is not reacheable using old links. Start right here:

    FAQ is here now:

  4. I got a score 100% :)

  5. Congratulations! You are The Master, man :)

  6. pasiinau, 95 % :), dekuj uz gerus advicus :)

  7. this was the best SCJP experience story i've seen in 2 weeks of research ... your method was REAL MAN ..Thank you

  8. Is this certification useful or should i concentrate on developing my own apps/programs in order to improve my Java skills and knowledge?
    Thank you

  9. It depends... Whether you want to improve your practical Java application development skills or get a paper recognised by various associations, employers and societies.


  11. Unfortunately I can't remember exact timescales... Actually I did not count it precisely. Until I felt the topic was "mastered", I read it slowly without rush. So for topics like "Development" I spent just a little bit, maybe three days or so in all. For topics like "Generics" that could take few weeks, I guess.

  12. I am so thankful to you that in my first search about OCPJP(formally SCJP) i found your article that solved all my doubts and also information really boosted my confidence.

    Thank you again.

  13. your guides are very informative and helpful and congratulations on such a high score.

  14. Your write-up is really helpful to me. Especially keeping track of the chapters in a spreadsheet. Well done!


  15. Congrats on the great score and thank you for sharing your experience. I am planning to sit SCJP soon and I think I use some of your techniques/books you suggested to prepare better.
    Thanks again

  16. Good post. In addition you may find essential mock questions @

  17. great score!! congrats!!:) n thanks a lot... the above article is really helpful.