Originally posted by Mark Herschberg:
Understand object oriented programming. That is first are foremost. Understand how to take a problem, and create a set of classes and packages from it. Unfortunately, this is best learned from experience.
Know basic data structre theory
If you don't have a CS degree, go to your local college, find what book their data structures course uses, and read it. You should understand sorting and searching, storage structures like hash tables and binary tress, and, if possible, learn a little bit of recursion theory and complexity theory.
Don't worry too much about specific APIs. I don't care if you know the IO API's inside out, if you're a smart guy, and understand what a stream is, you can figur eout more complex IO as you need it. And if you can't w'll figure it out for you when we do a design/code review.
What APIs should you know, at least minimally:
IO - know the basics, e.g. how to read and write text to a file
Swing - understand the event model and listener pattern
Threading - understand the basics of multithreading, how you create and use new threads
XML - theXML and the Java APIs itself are easy, and frankly, I personally don't care if you know them, but other people like to see XML on a resume, but learning both XML itself, and some of the basic APIs may help
EJB - know the basics, what they are and how to use them (optionally servlet's, too)
basically, when learning APIs, go for breadth over depth. The tests often focus on depth, understanding the obscure nuiances of using a particular class or method. But again, if you're smart, and know what's out there, you can learn it as you go. So don't worry about understanding every last detail, as you would for the certification exam.