I have been trying to put together a list of basic skills a Java developer should have to move on to being an advanced Core Java programmer.
SKILLS
You;
can write code on paper which has a good chance of compiling.
can use a debugger to debug programs and profile an application.
are familiar all the primitives types and operators in Java.
understands the class loading process and how class loaders work
can use multiple threads both correctly and can prove this improve performance or behaviour. e.g. wait/notify/notifyAll, SwingUtils.invokeLater, the concurrency library
can use checked exceptions, generics and enums
can time a small benchmark and get reproducible results
can write a very simple client server TCP service
have an understanding of garbage collection, when is it triggered, what can you do to minimise it
understand when to use design patterns such as Singleton, Factory, Fly-weight, Builder, Object Pool, Iterator, Strategy, Visitor, Composite