Well, its resurrection time...I am back... with some tips for wannabe SCJPs
The first thing that struck me was
" Wow! This test is simple ". But please don't get too cozy with the thing. Sure you'll find it easy...but all you've to do is
read the questions very carefully . In short, you'll have nothing to complain about the test.
Regarding your preparation, Sun pretty much sticks to what it has put forth as "objectives"...So, have a list with you and make sure that you cover
each and every damn objective, sub-objectives and their subs.

For example, while studying about access control...learn about the behavior of classes in different packages (with various visibility modifiers for members), when 1.imported into other classes and 2. when not done so. etc., Also be aware of static methods accessing non-static ones..etc.
Be really aware of widening/shortening thing in variable types...for example...
byte b = 34;
byte z = 5;
byte s = b+z; //This is a compile-time error
byte s1 = 34+5; // This is not.
What I did was to write a lot of small programs to understand this concept...and I have no problems in recommending this to anyone. Sharpen yourselves on the overloading/overriding concepts in terms of knowing when a function can be overridden...if so, what should be its access modifiers, parameters... etc., Sun does seem to test these nuances thoroughly. Learn where break and continue should be used and where not.
Also remember that a top-level class cannnnnnnottttt be private and a final class cannot be extended. (Simple concepts, but these are the things that one needs to be extra aware of!)
Inner Classes!...They are an
important component of the test...Learn the types of members the various inner classes can declare and can access. Learning how to deal with Anonymous classes is absolutely indispensable. I remember having posted a chart on Inner classes in the certification study forum...cannot seem to locate it. Also, the creating of instances of static inner classes and the non-static ones are
a bit different...it'd be helpful to learn it.
Threads are a class of their own...learn to identify the classical deadlock problem when you see one. Also, identifying the various ways and means to start threads ...remember which methods must be enclosed within try/catch blocks. Also, remember that if wait()..notify() and notifyAll() are not enclosed within sync. block...an exception (IllegalMonitorState Exception) will be thrown. Also, learn about overriding the run() and the start() methods.
Learn about the behavior of the
peer classes
String and StringBuffer...Learn what will happen if you use the == and equals() method to compare objects of String with StringBuffer...how these guys will behave when passed in function parameters...the use of + with these objects..etc., It'd also be worthwile to remember the parameter and return types of the functions in the Math Class. For example: x = Math.round(4.6) is 5.0 and not 5 unless it is cast to a lower type.
Wherever you are dealing with a lot of classes (eg., IO) try to draw a tree-like structure and use that as a supplement to your learning. I'll try to post my notes that I used to learn Collections, IO and AWT components hierarchy.
Regaring IO...I would simply parrot what the others have said...without knowing the constructors of the various classes pertaining to IO, one
cannot go anywhere. What I did was...I created a tree like representation of the important IO classes and beneath them, wrote their constructors...I kept staring at this thing for the greater part of my "awake-period"...it helped.
Now, don't get me wrong...I am not suggesting you guys to memorize...that would be a sheer waste of time...What I am saying is that the constructors will reflect what a particular class can do. For example, the abstract class Writer has a subclass called the OutputStreamWriter. It can be used to write characters to a
specified byte output stream using the given encoding (if no encoding is specified, the default encoding is assumed). By reading the
word specified, we can guess that one of its constructor parameters must be an OutputStream and so it is. So, if you know what a class can do, then learning the constructor can be fairly easy and intuitive. I will try to post my "tree structure" as soon as I can.
The rest of the stuff is easy...just remember to get plenty of rest. Please do not do the mistake I did..take a lot of mock exams (I took just 2 and paid the price dearly). It'll definitely help in the sense that you'll get the feel of the test. I found this out the hard way.
And one trivial thing...in your exam, the whole area in which the checkboxes/radio buttons and their associated text exist (In short, the Question area)will respond to your MouseClicks. So, after checking on an answer take care not to click your mouse anywhere else on the "question-choices-zone" (this includes the text area)...you might unwittingly change your answer...This is not serious because you'll definitely notice if your "check" changes...but I thought it'd be worthwhile to put this in the back of your minds.
Good Luck folks...Feel free to ask me quesions and I'll give my best shot.
Regards...
Shyam
[This message has been edited by Shyamsundar Gururaj (edited November 13, 2001).]