How much Java do you need to know to get a job?

Imagine a childhood friend comes to visit with his kids.

You’ve not seen each other for a few years. What will you cook?

First, you need to know what they like to eat. Do they like spicy food? Is anyone allergic? What if one of the kids has become a vegetarian?

With computer programming it’s the same.

You need to think about your target job market before picking your tools:

  • Are they struggling with the problem you want to solve?
  • Do they want to solve this problem?
  • Can you help them solve this problem or is the problem too big? Can you narrow it down?

As a Java programmer, just like any other programmer, you’ll primarily be hired because of your experience. And that means, the past problems you’ve solved.

You first build your experience by building a functional application that solves a problem people care about.

I find it rather mundane trying to find out how much Java or PHP or Ruby someone knows.

I am yet to meet someone who could possibly evaluate that and get back to me with an accurate answer within 10 minutes of an interview.

So I don’t think you should be worried about what amount of Java you should know.

In order to get a job, what will be assessed are your actual problem solving skills.

You’ll get to know the level of your problem solving skills by building software that solves a particular problem.

That is the important thing.

Otherwise, trying to master class inheritance, queues, stacks and algorithms in order to be a good Java coder is a recipe for frustration.

Those are vanity metrics. I always forget algorithm tests as soon as I am through with the technical interview and I got the job.

I only remember the ones I use every day.

So here is the million dollar advice:

Use your Java skills to build an application that solves a problem. Then you should be able to get a job based on the experience you got from that project.

And relevance, just as I mentioned above, is key. If you are getting into web development, build web apps. If you are getting into mobile app development, build mobile apps.

Lastly, don’t just build any app. Say, a TodoApp.

Your software should solve a problem that will make you stand out. A problem someone will really want to solve, so that you can get users for your application.

It is the active users that will bring life into your project and make your experience meaningful to an employer.

Happy coding!

19 Replies to “How much Java do you need to know to get a job?”

  1. I think you can think of it not as per programming language but as application needs

    Apart from code basics such as Static variables, loops, classes, OOP, packages, to get the Job you should at least know what every application needs in particular programming language (In your case JAVA)

    Any Application Needs:

    1. Database : You should know atleast how to work with one or few databases in Java. for e.g MySQL, SQLite using JDBC 
    2. Logging Framework:  You should be aware of creating Logging for application if required in Java. for e.g Log4J
    3. Threading:  This is most basic requirement, almost every Enterprise level application needs multi threading. So you should be well versed with Runnable, Thread etc in Java
    4. Regex: This is most difficult for especially new interns, but once you get comfortable with it, you can do wonders with it. For e.g you should know what exactly the regex "('(''|[^'])*'|\d+)(\s*,\s*('(''|[^'])*'|\d+))*" does and how to handle it in Java.
    5. FrontEnd:  You should atleast know couple of ways to create user interaction with your Application, it can be either command line or web html or desktop UI. This requirement can sway based on job description, for e.g if it is UI developer job this will be most sought of skill, while in backend developer job even taking inputs on command is okay. For e.g Swing, JQuery, HTML
    6. Testing: You should be aware of atleast couple of testing frameworks for Unit and Integration testing. For eg JUnit
    7. One common data format of Exchange: You should be aware of atleast one common data format of Exchange. for e.g JSON, XML and how to interact with it using Java.

    Now it comes to Extras, above are must have and the below points  are good to have and in some cases must have again depending on Job
    1. Software Process : Awareness of one or the other software process such as Scrum, Kanban etc.
    2. Design Patterns
    3. MVC
    4. Web Services
    5. NoSQL databases
    6. Java Web technology stack (Servlet, JSP, Message Beans, Spring)
    7. Desktop App Development.

  2. I work with a lot of interns who have learned Java in school and are now applying it for job purposes.  My answer is going to assume you're looking at entry-level positions.

    Schools, for the most part, do not teach Java job skills.  If you're learning event driven programming using Swing, for example, expecting to use that on the job 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 describe 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 via 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 to use the Java Collections API correctly (i.e. declare variables of List type, not ArrayList) and know some of the utility classes in java.util, java.text and java.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 knowledge 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 takes place.
    • A basic knowledge of HTML.  Specifically, basic page structure and how HTML forms work.  Difference between GET and POST.
    • Any knowledge of the Servlet/JSP API, how web containers work and the Servlet lifecycle.
    • 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 addressing).
    • Use of any logging framework.
    • Know what Apache Commons is!
    • Any understanding or exposure to source code control systems and why they are important.
    • Any understanding of software project management and the software development lifecycle.

    Notice I have not listed a single framework!  I am always looking for fundamental knowledge and a foundation to built upon.  An entry-level person is not expected 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 college 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, able to answer some questions off the top of your head without needing a book or the Internet as a crutch at every stage and a willingness to learn is what is needed 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-starters and motivated learners are often that differentiator.

  3. What book or curriculum did you use to learn Java? How much did you learn before threads?

    I'd say the core of Java that everyone should be familiar with should be:

    • java.util.Collections – know your various container types and interfaces like: Random access sequences – java.util.List and its implementations like ArrayList and Vector Associative sequences – java.util.Map and its implementations like HashMap and HashTable Other collection interfaces and types like Set, Queue, and Stack
    • Java Generics
    • Exception handling, and what's the difference between checked and unchecked exceptions
    • Unit testing with JUnit (and maybe Mockito for mocking)
    • "Traditional" concurrency in Java – java.lang.Runnable for threading, and also java.lang.ThreadThread is rarely used because of the restrictions on inheritance, and also because the concept of subclassing from Thread is kind of anti-OO.
    • Modern Java concurrency (since Java 5) – the concurrency collections and types from java.util.concurrent and java.util.concurrent.atomic like ConcurrentHashMap, ConcurrentSkipList, Executor classes, Future<T> and the Atomic types.
    • Actual language and software design concepts like inheritance, implementation, accessibility and visibility (private, protected, public, etc.) , design patterns and algorithms, packages, dependency injection (which is pretty huge in actual Java code)
    • Lambda functions (Java 8 only, though this is pretty new and not extremely important like the other stuff in the list)

    That's just the basics. Next you'll actually want to demonstrate proficiency with using the language, so you'll want to write a lot of sample code to practice using those concepts. In any company, you'll be learning and using a lot more stuff depending on what you're doing:

    • How to actually create and build large-scale Java projects using things like ant, or maven, or ivy for project and dependency management
    • Utilizing more than just Java – the JVM is host to a variety of languages, including Scala, Clojure, JRuby, Groovy, Rhino, and Jython, which have become popular choices to interface with Java or to replace Java for situations like non-performance-critical code
    • Using major frameworks like Spring, or Apache Commons, or Google Guava, etc.
    • Using more specific Java libraries like JDBC and Hibernate(for database access), JAX-RS implementations like Jersey or RESTeasy for creating RESTful web services, or working with the nio classes for I/O code.
    • An actual database – knowing how to query a database without a crutch like Hibernate. Also concepts about databases like query optimization and connection pooling (typically provided by libraries like c3p0).
    • Application servers and containers like Tomcat, jetty, glassfish, JBoss, Weblogic
    • Java Servlet API, which is the middleman library for web development
    • Doing web stuff with things like Wicket, or Tapestry, or Play, or Struts 2, or CXF, etc.
    • Dependency injection and inversion of control frameworks like Google Guice or Spring DI
    • Doing Enterprise Java (JEE stuff)
    • Becoming intimately familiar with the Java system and the virtual machine
    • Using company specific code and libraries

    I'd recommend getting your hands on Joshua Bloch's Effective Java, Brian Goetz's Java Concurrency in Practice, and Benjamin Evans' The Well-Grounded Java Developer if you want to expand your knowledge and idiomatic knowledge of Java.

    Meanwhile, here are 3 easy part time online jobs:

    1. Paid Social Media Jobs – Visit Official Website

    Did you know that businesses all around the world are hiring people just like you to help manage their social media accounts such as Facebook, Twitter, and YouTube?

    There is a lot of money in it, and the best part is that you don’t need any qualifications, prior experience or specialized skills. All you need is a few spare hours per week, a computer with an internet connection and a good knowledge of how to use Facebook, Twitter or YouTube.

    They are hiring people just like you to do it for them! They are paying people just like you great money to work from home doing simple tasks such as:

    • Creating their Facebook Fan page
    • Posting status updates and comments
    • Creating Twitter profiles
    • Tweeting special offers and promotions
    • Engaging with their customers through comments and posts
    • Spending time messing around on Facebook and Twitter!

    2. Writing Jobs Online – Visit Official Website

    The Writing Jobs Online website is a place where freelancers can find a ton of different writing jobs. Here anyone even (inexperienced writers) can start to work, doing many different writing jobs. Some examples of jobs is writing content for blog sites, ebooks, books, websites, magazines, etc.

    If you’re already a good writer or have some knowledge regarding online writing, you will have a major advantage over people who don’t. You will be able to begin with work right away. The online platform offers a wide range of subjects that are updated everyday. Therefore, you will be able to choose subjects, and write about topics that generate your interest.

    In simple words it works like this: writing jobs online how it works: You choose a writing job, You submit your work, You get paid.

    3. Get Paid To Play Games – Visit Official Website

    And I guess you've heard that some smart cookies are actually getting paid to play video games and you're wondering if it's just an urban myth? So I'm happy to tell you it is NOT.

    You see the video game business is now bigger than the movie business – worth about $62 BILLION currently. And with that sort of money at stake, games have to be as perfect as humanly possible. Because if a game is released with a even few bugs in it, the bad news will spread like wildfire on line, sales will bomb and the game's creators will lose millions.

    So – with that sort of money at stake – it's a drop in the ocean for the games makers to pay you up to $30 an hour to test their games to destruction, so they can fix any bugs before launch day. And while $30 might be a drop in the ocean to the games companies, it soon adds up to a handy income for you – particularly when you're ALSO enjoying yourself playing games that no one else in your neighborhood has even seen yet.

  4. For a Java developer, having strong understanding on Object Oriented Programming is a must. Without having a strong foundation on OOPS, one can't realize the beauty of an Object Oriented Programming language like Java. If you don't have good idea on what OOPS is, even though you are using OOP language you may be still coding in procedural way. Just studying OO principle definitions won't help much. We should know how to apply those OO principles in designing a solution in OO way. So one should have a strong knowledge on Object modeling, Inheritance, Polymorphism, Design Patterns.
     
     2. Master the core APIs
     It doesn't matter how strong you are in terms of theoretical knowledge if you don't know the language constructs and core APIs. In case of Java, one should have very strong hands-on experience with core APIs like java.lang.*, I/O, Exceptions, Collections, Generics, Threads, JDBC etc. When it comes to Web application development, no matter which framework you are using having strong knowledge on Servlets, JSPs is a must.
     
     3. Keep coding
     Things look simpler when talking about them theoretically. We can give a solution to a problem very easily in theory. But we can realize the depth of the problem when we start implementing our approach. You will come to know the language limitations, or design best practices while coding. So keep coding.
     
     4. Subscribe to forums
     We are not alone. There are lots of people working on the same technologies that we are working on. While doing a simple proof of concept on a framework may not give you real challenges, when you start using it on real projects you will face weird issues and you won't find any solution in their official documentation. When starting to work on a new technology the best and first thing to do is subscribe to the relevant technology forums. Whatever the issue you are facing, someone else in the world might have already faced it earlier and might have found the solution. And it would be really really great if you can answer the questions asked by other forum users.
     
     5. Follow blogs and respond
     As I already told you are not alone. There are thousands of enthusiastic technology freaks around the world blogging their insights on technology. You can see different perspectives of same technology on blogs. Someone can find great features in a technology and someone else feels its a stupid framework giving his own reasons of why he felt like that. So you can see both good and bad of a technology on blogs. Follow the good blogs and respond/comment on posts with your opinion on that.
     
     6. Read open source frameworks source code
     A good developer will learn how to use a framework. But if you want to be an outstanding developer you should study the source code of various successful, popular frameworks where you can see the internal working mechanism of the framework and lot of best practices. It will help a lot in using the frameworks in very effective way.
     
     7. Know the technology trends
     In the open source software development technology trends keep on changing. By the time you get good idea on a framework that might become obsolete and some brand new framework came into picture with super-set of features. The problem which you are trying to solve with your current framework may be already solved by the new framework with a single line of configuration. So keep an eye on whats coming in and whats going out.
     
     8. Keep commonly used code snippets/utilities handy
     Overtime you may need to write/copy-paste same piece of code/configuration again and again. Keeping those kind of configuration snippets like log4.properties, jdbc configuration etc and utilities like StringUtils, ReflectionUtils, DBUtils will be more helpful. I know it itself won't make you outstanding developer. But just imagine some co-developer asks you to help in fetching the list of values of a property from a collection of objects and then you just used your ReflectionUtil and gave the solution in few minutes. That will make you outstanding.
     
     9. Know different development methodologies
     Be familiar with various kinds of methodologies like Agile, SCRUM, XP, Waterfall etc. Nowadays choosing the development methodology depends on the client. Some clients prefer Agile and some clients are happy with waterfall model. So having an idea on various methodologies would be great.
     
     10. Document/blog your thoughts on technology
     In day to day job you may learn new things, new and better way of doing things, best practices, architectural ideas. Keep documenting those thoughts or blog it and share across the community. Imagine you solved a weird problem occurred while doing a simple POC and you blogged about it. May be some developer elsewhere in the world is facing the same issue on a production deployed application. Think how important that solution for that developer. So blog your thoughts, they might be helpful for others or to yourself.

    For more website:- http://www.traininginlucknow.in

  5. When I was in the university I only learned JSE and OOP concepts, plus Oracle database and SQL, and no web application development at all (at least my university incorporated that later). Even so, it didn't take me much to adapt and learn, and my first project was a 3-tiers web application where I had to develop in all of these layers.

    For an entry level the professionals should have the basic knowledge of programming, database and few other things, however they shouldn't really be expected to know everything right away. Instead, a well managed project should have senior developers guide the new comers for a few weeks, explaining them the general architecture of the application and the tools to get them started, then give them small tasks to warm up and finally stop supervising them as they grow.

    I took around 3 weeks to earn autonomy even thought I still had a lot to learn. For entry levels, you would be expected to have good adaptation capacity rather than vast knowledge.

  6. We can’t say exact limit of knowledge but you should know Core Java , Spring , Hibernate , Web Services.

    These are the basic requirements to become a Java Resource.

    Now a days web services are the hot concepts .

    CORE JAVA

    You should know the basic OOPs concepts, Collection , Multithreading , Exception Handling .

    SPRING

    It is a framework . Spring provides lot of modules.

    You should know some basic modules like – Spring MVC , Spring Transactional , Spring Exception Handler.

    Now a days Spring Security is the best choice for securing any application as well as Web Services too. Its an advantage if you know Spring Security.

    Its very good if you aware of web services.The RESTful web services is magic now.

  7. I would say try to learn object orient programming basic concepts encapsulation, polymorphism, inheritance etc. Try to understand everything about java like why interface has been introduced etc. start reading oracle Java Magazine, learn about solid design principles, design pattern. And try to understand these concepts through real time examples.All the best!!!

  8. Hello ,

    It depends on your experience and company requirement .

    1. No experience : Core Java .(oops concepts)
    2. 1 Year experience : Core Java , Servlet JSP , If possible JSTL
    3. 2 Years Experience : Core Java , Advanced Java , Framework on which you have worked .(We have R2DS internal framework in HSBC- similar to spring)
    4. 3+ Years Experience : GET READY TO BE GRILLED . You should literally know as much as possible . Ex: JAVA(core+advance) , Framework like spring struts hibernate , HTML , HTML 5 , CSS ,CSS3 , MAVEN , Log4J, JUNIT testing at-least some basics . Tomcat server , Deployment of application . Best coding practice . DESIGN PATTERNS . Writing complex code if they ask you to write code . Some JavaScript framework like JQuery , Dojo 1.7 + etc etc etc …… as much u can imagine .

    But still it depends on the company what they actually want .!! In market there is demand of Angular JS with Java .

    Its always ever changing scenario , Just be ready and confident and try to learn as much possible in your 3 to 4 years of service or job . Don’t only think about switching companies and money .

    Remember lines from 3 Idiots –

    खुद को काबिल बनाओ कामयाबी झक मार के तुम्हारे पीछे आएगी |

    (Make yourself skilled and able, Success will eventually follow you !).

    Thanks

    Sandeep Satone

  9. There's no standard knowledge you should know in java, because the requirements differ from job to job. You just need to know the basics well and enhance your knowledge in the area that you want to work in.

    Also most of the time the java is used along with other frameworks to organize the code like spring for example
    Spring Framework

  10. It is difficult to quantify the amount of java knowledge or to simply list down the topics to be learnt. There are several criteria to judge a person depends upon the requirement of the job. Say knowledge of Collections framework or Enterprise java with knowledge of a server like Tomcat.

    There is a simple measure which I believe one of the important parameter is as follows.

    If you are able to use a completely unknown set of classes and interfaces in any new domain with the help of API documentation, than you are ready to go.

    For example you are developing a java project in which you need to incorporate XML processing. Though you are completely new to XML if you are able to make use of API documentation and all the necessary classes, methods, interfaces without any difficulties you are a java person. This ensures that you know inheriting classes, abstraction through public methods, handling exceptions and several fundamental aspects of java programming.

  11. Java to learn OOP (class basics, constructors, overloading, visibility etc), did a bit of GUI design using the swing API (event listeners, action handling, extending the swing API), did a bit of basic jsp and did all the usual stuff like understanding compiler errors, thread handling and did about a load of classes to handle file, errors and exceptions. I always remember getting very bored at the point we were given the extra credit task of creating a little app using RMI.

  12. More than being too specific like Java, focusing on Data Structures in general and growing strong in analytical thinking will make you a better programmer in any language you prefer.

    If you can think and act right in problem solving, language is just a matter of syntax. Learned it hard!

  13. hello,

    You atleast need to know the Core Java to get a job,and always a plus if u know the framewrork i.e spring ,hibernateetc.

    Core JAva includes :-

    • OOPs Concepts (very very imp..! ASked in EVery interview)
    • Abstract Classes and Interfaces.
    • Constructors.
    • File IO and Serialization.
    • Collections – List , Map , Set – Search, Sorting Algorithms.(important topic)
    • Access Specifiers.
    • Exceptions handling(very important from interview point of view)
    • JDBC(its just the connectivity to the database but go through it)
  14. On fundamentals requirements, you require to learn:

    HTML, XML, CSS, JavaScript, Core and Advanced Java, SQL.

    Also, you need some introductory hands on for:

    Struts, Hibernate, Big Data & Hadoop, Bootstrap, Amazon Web Services, Google App Engine, Linux, Android App Development.

    This is all you get offered in a Java certification course and having a hold on these concepts make you sure to crack a job interview.

  15. The more you the better it is. But most of the time you learn stuff on job. The following are the topics according to my experience you should know apart from the basics

    Working with Methods and Encapsulation

    Working with Inheritance

    Handling Exceptions

    Multi threading

  16. How much java you need to know for getting a job : more than what the interviewer knows.

    Ideally it shouldnt be about a job.it is why you want to learn it and why only java.
    If you enjoy learning programming languages and see how various problems could be solved by simple programs,you could consider any progrmming language .

    Personally I think you can never learn enough about a programming language or for that matter anything unless you're the one that built the language or are an active contributor to the language.

  17. Not much, OOP concept, simple own project using Hibernate.

    What am encountering last year, every new project is about absolutely new technologies and seniors together with juniors have to study them.

    More likely you should ask THEM what can they do for your Education, this can show you if its really good company or  slavery.

  18. It depends on your experience and company requirement .

    package com.ashok.job;
    
    import java.util.ArrayList;
    import java.util.List;
    
    class Person {
       private String name;
       private List<String> skills;
       private String type ;
    
       public Person(String name, List<String> skills, String type) {
          http://this.name = name;
          this.skills = skills;
          this.type = type;
       }
    
       @Override
       public String toString() {
          return "Person [name=" + name + ", skills=" + skills + ", type=" + type + "]";
       }
    }
    
    public class GettingJob {
       public static void main(String[] args) {
          List<String> fresherSkills = new ArrayList<String>();
          fresherSkills.add("Java Core Basics");
          fresherSkills.add("Arrays");
          fresherSkills.add("Operators");
          fresherSkills.add("Flow Controls");
          fresherSkills.add("OOP Concepts");
          fresherSkills.add("Classes");
          fresherSkills.add("Interfaces");
          fresherSkills.add("Collection Framework");
          fresherSkills.add("Multithreading");
          fresherSkills.add("Exception Handling");
          fresherSkills.add("Files");
    
          Person fresher = new Person("Ashok", fresherSkills, "Fresher");
          System.out.println(fresher);
          
          List<String> expSkills = new ArrayList<String>();
          expSkills.add("Java Indepth Concepts");
          expSkills.add("JVM Internal Structure");
          expSkills.add("Design Patterns");
          expSkills.add("Regular Expressions");
          expSkills.add("OO Design");
          expSkills.add("MVC");
          expSkills.add("Java Frameworks (Spring, Hibernate etc)");
          expSkills.add("Loggers");
          expSkills.add("JSVC");
          expSkills.add("Multithreading Locking Mechanism");
    
          Person exp = new Person("Ashok", expSkills, "Fresher");
          System.out.println(exp);
       }
    }
    

    Here experience person skills varied from company to company.

    Thanks A2A.

    Way To Easy Learn

  19. You can try solving some algorithm problems in java in the mobile app Dcoder : Dcoder, Mobile Coding Platform – Android Apps on Google Play

    When you solve enough problems, you will get confidence and that’s the key to crack an interview, basic java is enough for most of the times, most of the interviewers judge you on your problem solving and analytics abilities, which you can easily improve.

Leave a Reply

Your email address will not be published. Required fields are marked *