How to screen Java developers’ skills to find the best – guide for IT recruitment
It can be a serious problem if you want to hire a Java developer but haven’t got a clue what to look for. You can search through a candidate’s LinkedIn profile or a resume all you want. If you can’t tell your JPA from your Gradel you won’t be able to tell if the candidate is a good fit for the position you want to fill. I wrote this article to gather all of the information you need if you are an IT recruiter searching for programmers with Java skills.
What is Java?
Java is a compiled, object-oriented programming language, similar in syntax to C++. It is intended to let application developers “write once, run anywhere” meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. An application written in Java have very good performance thanks to the use of a Just-In-Time compiler which continuously analyses the program speed and optimizes frequently executed spots. Another key advantage of Java is an automatic memory management which allows developers to write applications without worrying explicitly about memory allocation and deallocation. As of 2020, it was the most popular programming language tested by employers. Java is not considered an easy-to-use language for non-programmers.
Java is to Javascript like car is to carpet, so don’t confuse these two programming languages.
What is important for IT Recruiter to know about Java and Java skills?
Before I go into details on how to screen Java skills first let me share some basics that will allow you to become more familiar with this technology.
Firstly, Java world changes often, so experience with framework gained 5 years ago is not valid anymore. Bear this in mind when you assess Java developer skills based on so far employment.
Secondly, in the Java environment, knowledge of tools and libraries is more valuable than knowledge of the language itself. Without it, a programmer will write everything by himself from scratch and just waste time. If a developer is familiar with Java libraries and frameworks then he can use it like lego to make what they need and write code only where it is necessary. By doing it this way their work is much more efficient.
Last but not least only commercial experience is important. Java knowledge from a university is hardly ever useful for business coding. So unless you recruit for an entry-level or junior position you can skip assessing Java skills based solely on university education and degree. In that case, what is more important is the candidate’s real-life coding projects, it doesn’t have to be a commercial one – it can be a hobby or open source programming project.
Basic Java developer skills
- Java language
– Collections
– Streams and lambda expressions
– Concurrency: thread pools
– Locks
– Modern language features: records, enhanced switch - Frameworks
– Spring Boot 2
– Spring MVC/WebFlux for REST APIs
– Hibernate and SQL
– JUnit
– Spock (requires Groovy language)) - Tools
– Maven and Gradle
– IDE, e.g. IntelliJ IDEA
– Git
– Docker - Next steps (select some): (Kotlin, Groovy (for Spock), Reactive programming (Reactor), Kubernetes, React or Angular 2+ for front-end, Android development)
How to verify Java skills in the screening phase?
What to look for when hiring a Java developer? Screening is tiring, arduous, and takes a lot of your time. Usually IT recruiters turn to the following screening techniques from assessing java skills based on resume through an interview or video calls to online coding tests.
Below you find some useful and practical recruiting tips on how to verify Java skills using each method.
Technical screening of Java skills based on the candidates resume
Java technology – a basic glossary of Java terms for IT recruiters
Sure all the information you need is in the resume – you just need to find the right ones. Sounds easy, right? However, when you start screening the resume, you come across terms like Hibernate or JMX, and pretty quickly you get confused whether this is the candidate you are looking for. If you are Tech Recruiter recruiting for java position then you should at least be familiar with all its frameworks, build tools etc. in order to know what you are looking for and to be able to speak the same language with your candidates (or at least understand basics the candidate is talking about).
That’s why we prepared this basic Java glossary, just have a look.
Java glossary for technical recruiters
Java EE components | Java Server Pages (JSP), Servlets, Enterprise Java Beans (EJB), JAX-RS, JAX-WS, Java Message Service (JMS) |
Java Web frameworks | Java Server Faces (JSF), Spring MVC, Vaadin/GWT, Wicket, Play |
ORM | Hibernate, Java Persistence API (JPA), EclipseLink, OpenJPA |
Java build tools | Maven, Gradle, Ant |
Java application containers | Tomcat, JBoss/Wildfly, Undertow, Jetty, WebLogic, WebSphere |
Java testing tools | JUnit, TestNG, Spock, Mockito, Cucumber |
IoC frameworks | Spring Framework, Guice, CDI |
Now that you know the basics, we can go into details. If you’re not a tech person then it’s easy to get confused by all the different technology names and abbreviations. If the candidate states that they know EJB does it mean that they are familiar with Java EE? Or if the applicant knows Maven 1 does it mean they can also deal with Maven 2? Keep calm, we’ll help you out. Just continue reading.
The most common Java technology names that are used interchangeably:
– JPA, Hibernate, Java Persistence, Java Persistence API,
– Java EE, EJB, Enterprise Java Beans, Enterprise Java,
– JBoss, Wildfly.
Relations between respective versions of Java technology:
– EJB 2.0 is totally different from EJB 3.0,
– Java EE 1.4 is totally different from Java EE 5,
– Java EE 7 is an enhanced version of Java EE 6 which is an enhanced version of Java EE 5,
– Spring 2.0 or Spring 3.0 similar to Spring 4.0,
– Acegi changed its name to Spring Security,
– Maven 1 is totally different from Maven 2,
– Maven 2 is very similar to Maven 3,
– Hibernate 4.x is very similar to Hibernate 5.x,
– GWT 1.x is different from GWT 2.x,
– Struts 1 is totally different from Struts 2,
– JPA 2.x is a richer version of JPA 1.0.
It is also valuable to be aware of the following relations:
– Full-text search: If someone knows one of Lucene, Solr or ElasticSearch will be able to deal with the rest.
– Object Relational Mapping: If someone knows one of Hibernate, EclipseLink, OpenJPA then will be able to deal with the rest.
– RESTful services: If someone knows one of Spring MVC, JaxRS, Jersey then will be able to deal with the rest.
The significance of a Java certificate for assessing developer’s Java skills
Java certificates are usually appreciated by employers. However, certification seldom is a requirement for a candidate. As a technical recruiter, you have to be however cautious in assessing Java programming skills based on certificates, because none of them serves as a guarantee for developer’s capabilities.
It happens very often that a very experienced programmer hardly passes the certification exam and weak programmer scores well in such an exam. Why is it so? Such certificates hardly verify practical skills. They usually require learning by heart things that a more experienced developer would quickly find in documentation or be able to verify it. By quickly I mean within several seconds using their favorite IDE (software that a programmer uses to work on applications), which is not available during the exam. BTW, being not able to use IDE doesn’t make sense ‘cause on a daily basis, the programmer uses a lot of external sources, such as IDE, to perform their job.
Below you will find a list of Java certification divided into 3 groups
A. Practical Java certificates, requiring hands-on experience, guarantee of in-depth knowledge of the subject
Spring Certificates:
– Spring Professional,
– Spring Web Application Developer,
– Enterprise Integration Specialist.
B. Useful Java certificates can serve as a reliable proof of knowledge
– Oracle Certified Master, Java SE 6 – requires pretty good level Java skills, but only Java 1.6, which was released 10 years ago (2006),
– Oracle Certified Expert, Java EE 6 Web Services Developer – requires sound knowledge but doesn’t verify commercial experience, therefore, it cannot serve as a guarantee for project success,
– Oracle Certified Expert, Java EE 6 Java Persistence API Developer – requires sound knowledge but doesn’t verify commercial experience, therefore, it cannot serve as a guarantee for project success,
– Oracle Certified Master, Java EE 6 Enterprise Architect – a candidate understands and can apply Java on an architecture level,
– IBM WebSphere – requires sound product knowledge but doesn’t verify commercial experience, therefore, it cannot serve as a guarantee for project success.
C. Java certificates – theoretical knowledge, not much use from a business perspective
– Oracle Certified Associate, Java SE,
– Oracle Certified Professional, Java SE,
– Oracle Certified Expert, Java EE 6 JavaServer Faces Developer,
– Oracle Certified Expert, Java EE 6 Web Component Developer,
– Oracle Certified Expert, Java EE 6 Enterprise JavaBeans Developer.
Other information on a resume that can show a developer’s Java skills
Participation in open source projects is the information worth taking into account. If the candidate is a contributor to well-known and large projects then it can be of great value. It is also important if a programmer has experience in similar kind of IT projects that we are looking an employee for. Creating new things requires a different set of skills and attributes than maintaining them.
Technical screening of Java skills during a phone/video technical interview
As it is pretty difficult to draw reliable conclusions about a candidate’s programming skills from the resume itself, IT recruiters often conduct a phone or video interview. These types of interviews provide an opportunity to ask questions concerning their Java skills. In many companies such a technical phone or video interview is the basis for making a decision whether to invite somebody for an on-site technical interview with an IT team or not, so it’s worth asking the right technical questions.
As questions themselves can vary based on the position you are recruiting for and specific skills you want to verify, based on my experience I would recommend following general questions to find out more about candidate’s Java skills:
A. Java interview question concerning developer’s experience
- Q1: With which technologies listed in your resume, did you have commercial experience in the past 2 years? What were your responsibilities? What was your biggest achievement?
- Why ask Q1: By asking this question, you can find out more about candidate’s Java up-to-date experience, responsibilities and achievements. Thus you get to know your candidate better.
B.Java interview questionconcerning developer’s knowledge and opinions
- Q2: Which Java open source libraries do you consider to be valuable and why?
- Why to ask Q2: This question lets the candidate demonstrate their knowledge of the Java ecosystem. Moreover, the candidate can point out what he takes into account when choosing a certain technology. As a follow up questions you can also ask what in his opinion advantages of commercial solutions over open source and vice versa are. This shows how the candidate thinks.
- Q3: I’ve noticed you listed framework X on your resume. What’s your opinion about it? Is it a good choice?
- Why ask Q3: Such an open question allows a candidate to demonstrate their knowledge if they have it. You can also play devil’s advocate based on their answers “But why not use framework Y for that?”. Thus you can see how the candidates choose a technology, justify their choices and whether their opinions are in line with your IT teams.
C.Java interview questionconcerning developer’s decision making regarding Java technology
- Q4: On what stage did you join recent projects? Were you involved in the choice of technology or project setup? If yes, which technology did you choose or recommend for the project and why?
- Why ask Q4: Such a questions shows not only how a candidate makes choices regarding technology but also whether they were included into making decisions. Especially important if you are looking for someone with experience.
D. Behavioral question for java developer
- Q5: Think about programming project decision you made that was a failure. Why do you think it was a mistake? Why did it happen? Could there be anything done differently in order to turn it into success? What steps did you take to improve the situation? What did you learn from this experience?
- Why ask Q5: That type of question will help you find out how the candidate perceives their decisions, draws conclusions and how much they learn from their previous experience.
Technical screening of Java developer skills with online coding tests
Online coding tests can be a great way to screen Java developer skills. Below you will find information about how you can use programming tests and which ones to choose.
Online Java coding tests – the primary or additional method for screening
In some companies programming tests are used as an additional method for screening candidates, after resume is analysed and phone or video interview is conducted. However, more and more companies turn to coding tests as the first method of screening programming skills. What I mean is that the company invites all candidates that apply for a certain position to take a test. In such a way, on the one hand IT recruiter spends time only on the candidates that passed the exam so they proved that they have Java programming skills, and on the other hand such a candidate shows more engagement as they’ve already spent their time on recruitment process and thus are more likely to participate all its stages.
Java online coding test – which one to choose?
But in order to screen accurately, coding tests have to be the right ones.
There are a lot of Java online coding tests on the market but usually they verify candidate’s knowledge rather than programming skills and abilities to solve real-life coding problems. That’s why a lot of experienced programmers don’t like that kind of assessment and, what’s more, they aren’t able to get a good score as they cannot show their experience and skills in solving real-life programming problems.
So what features should such coding tests have? Below you will find my top 5 features you should be looking for:
- Java programming tests should verify not only Java developer skills as far as technology in general is concerned but also frameworks and libraries
- Java coding tests should consist of a couple of tasks, not only multiple-choice tests, but above all, programming tasks which difficulty should match the responsibilities the candidates will have if they get the job (tests shouldn’t be based on algorithmic tasks as thus you cannot verify whether a candidate can solve real life coding challenges).
- Preferably, Java programming task should be prepared on a company’s code base, as this is the best way to imitate the challenges the candidate will have once he gets the job
- There is no point in forbidding the programmer to use external sources, the best way is to create them such an environment like they have at work, so open book exam is much more appropriate. Moreover, the candidate should be able to use their preferred IDE, just as he does on a daily basis.
- Coding test can also include task with code review challenges to test Java skills. It gives very accurate information about the experience of the candidate, their approach to code quality and efficiency of debugging and finding traps. Such an assessment should be obligatory when recruiting Java senior developers.
Java interview questions for 5, 10, and 15 years experience
When creating Java interview questions for 5, 10 and 15 years of experience it is important to have a variety of questions that don’t just verify the candidate’s academic knowledge but also test their programming skills. Our screening tests are able to do this by using real-world problems rather than puzzles and algorithmic tests. This enables you to verify a developer’s skills as well as knowledge of frameworks and libraries. If you are hiring for a junior, middle or senior position, each Java test should match the position and include Java interview questions for 5, 10, and 15 years of experience. This can be done by using your company’s codebase so it can match the day-to-day work of the position.
Java developer interview questions
It can be hard to get a full understanding of a candidate’s abilities from an algorithmic test. This is because it may not include Java developer interview questions that let the candidates demonstrate their current skills and knowledge. Algorithmic tests rely mostly on a candidates’ university education. As the Java environment is always changing, this will not allow the developer to show their full abilities and does not provide an objective view of their skills. Because of this, candidates can drop out of the recruitment process as they feel they were not fairly tested. It is vital to have Java developer interview questions based on real-world tasks that relate to the position you will be hiring for. Devskiller tests include Java developer interview questions that emmulate real-world situations using our RealLifeTesting methodology.
DevSkiller ready-to-use online Java coding assessment tests
At DevSkiller we give companies an infrastructure which lets them use their own code base, whole IT projects using frameworks and libraries, to test programmers online. However, we also have some ready-to-use Java coding tests which you can use in your recruitment campaign.
- Tested skills
- Duration
- 111 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Java, Core Java, I/O system, Lambda Expressions, Exceptions
Code gaps
assessing knowledge of Java, Core Java, I/O system, Lambda Expressions, Network Communication
Programming task - Level: Hard
Java | Library application - Create an application that allows the library to manage books, their borrowings and prepare some reports about books that were not returned on time. Finish implementation of the missing service methods.
- Tested skills
- Duration
- 64 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of JUnit, QA
Code gaps
assessing knowledge of JUnit, JUnit4, QA, JUnit 5, Java
Programming task - Level: Medium
QA | JUnit | ATM Service | Authentication and deposit validation - Write test cases to verify the Automated Teller Machine (ATM) software.
- Tested skills
- Duration
- 75 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Core Java, Java, Serialization, Date and Time, Generics
Code gaps
assessing knowledge of Core Java, Java, Memory Management, Network Communication, Lambda Expressions
Programming task - Level: Medium
Java | Library application - Creating an application allowing the library to manage books and their borrowings. Your current task is to finish the implementation of missing service methods.
- Tested skills
- Duration
- 58 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Core Java, Java, Stream API, I/O system, Date and Time
Code gaps
assessing knowledge of Core Java, Java, Network Communication
Programming task - Level: Medium
Java | Azure | Production summarizer - Create an Azure function. Your current task is to finish implementation of production summarizer returning information about how many cars were produced by a particular plant.
- Tested skills
- Duration
- 104 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Java, Spring Boot
Code gaps
assessing knowledge of Core Java, Exceptions, Java, Generics, I/O system
Programming task - Level: Medium
Java | Couchbase, Spring Boot | Card Payments - Create a card payment processing microservice. Finish the implementation of saving payment data into Couchbase and communicate with other services.
- Tested skills
- Duration
- 49 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Core Java: Network Communication, Generics, Memory Management
Code gaps
assessing knowledge of Core Java: Collections, Memory Management, Generics
Programming task - Level: Easy
Java | Currency Exchange - Complete the implementation of the Currency Exchange app, which is responsible for managing exchange rates and exchanging the currencies.
- Tested skills
- Duration
- 37 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Java, Core Java, Lambda Expressions, Memory Management
Code gaps
assessing knowledge of Core Java, Java, Memory Management, collections, Lambda Expressions
Programming task - Level: Easy
Java | Library Application - Creation of an application allowing the library to manage their books stock. Task goal is to finish the implementation of missing service methods.
- Tested skills
- Duration
- 66 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of QA, Testing, Unit-Testing, Manual Testing
Code gaps
assessing knowledge of JUnit 5, Java, QA
Programming task - Level: Medium
QA | JUnit | ATM Service | Authentication and deposit validation
- Tested skills
- Duration
- 48 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of QA, Selenium, .NET, C#
Code gaps
assessing knowledge of Java, QA, Selenium
Programming task - Level: Medium
QA | .NET, Selenium | Data extraction - Implement methods in class SeleniumTask.SeleniumExecutor to pass successfully all tests.
- Tested skills
- Duration
- 73 minutes max.
- Evaluation
- Automatic
- Test overview
-
Choice questions
assessing knowledge of Java and QA
Code gaps
assessing knowledge of Java and QA
Programming task - Level: Medium
QA | Java, JUnit | Vending Machine - Write unit tests for the verification of a Vending machine.