You are on page 1of 2

I work with a lot of interns who have learned Java in school and are now applyin

g it for job purposes. My answer is going to assume you're looking at entry-lev


el positions.
Schools, for the most part, do not teach Java job skills. If you're learning ev
ent driven programming using Swing, for example, expecting to use that on the jo
b is a pipe dream. Unless you're applying to a job that lists it specifically,
most Java is web or enterprise oriented.
Conceptually, you need to understand the following in Java and know how to descr
ibe and apply it:
Understanding of all basic Java control structures, able to declare methods and
a working understanding of pass-by-value and pass-by-reference.
A understanding of classes vs. interfaces.
Understand the role of the public/private/protected modifiers.
Understanding of Strings as immutable objects. How to create mutable Strings vi
a StringBuilder and other classes.
Creation of a basic Java POJO/bean (data entity).
Understand how statics work.
Know how to declare constants.
Understand basic class, variable and constant naming conventions.
Know how to organize code into packages.
Understand the role and usage of JAR library files and how to reference them in
your application.
Have a working understanding of the core Java API and where to find stuff. At a
minimum, know the roles and uses of classes in java.lang, understand and able t
o use the Java Collections API correctly (i.e. declare variables of List type, n
ot ArrayList) and know some of the utility classes in java.util, java.text and j
ava.math.
Knowledge and theory of some basic design patterns (Singleton, Factory, Facade,
DAO, MVC).
Know what the CLASSPATH is!
Know how the main() method works and how to pass arguments to basic programs.
If you're looking to get into web or enterprise development, some exposure and k
nowledge of the following is helpful:
Familiarity with SQL databases and programming against them via JDBC.
For web, understand how the HTTP protocol works and how basic web interaction ta
kes place.
A basic knowledge of HTML. Specifically, basic page structure and how HTML form
s work. Difference between GET and POST.
Any knowledge of the Servlet/JSP API, how web containers work and the Servlet li
fecycle.
Any understanding of XML. Web services and WSDL theory is a bonus.
Any understanding of TCP/IP networking (TCP vs UDP, role of IP, DNS, network add
ressing).
Use of any logging framework.
Know what Apache Commons is!
Any understanding or exposure to source code control systems and why they are im
portant.
Any understanding of software project management and the software development li
fecycle.
Notice I have not listed a single framework! I am always looking for fundamenta
l knowledge and a foundation to built upon. An entry-level person is not expect
ed to know too much. The more the better but it must be a place we can grow you
from.

And of that first list, only about 1/4 to 1/2 of it is ever touched upon in a co
llege or university class. Virtually none of the second list is ever covered in
college or university classes.
Honestly, having a working if imperfect knowledge of stuff on the first list, ab
le to answer some questions off the top of your head without needing a book or t
he Internet as a crutch at every stage and a willingness to learn is what is nee
ded to get you in the door. Given I am usually interviewing candidates that are
from the same school, I am looking for things that differentiate them. Self-st
arters and motivated learners are often that differentiator

You might also like