콘텐츠로 건너뛰기
IT 채용
Java: software engineer interview questions

How to screen Java developers’ skills to find the best – guide for IT recruitment

IT 채용
Java: software engineer interview questions

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

  1.  Java language
    – Collections
    – Streams and lambda expressions
    – Concurrency: thread pools
    – Locks
    – Modern language features: records, enhanced switch
  2. Frameworks
    – Spring Boot 2
    – Spring MVC/WebFlux for REST APIs
    – Hibernate and SQL
    – JUnit
    – Spock (requires Groovy language))
  3. Tools
    – Maven and Gradle
    – IDE, e.g. IntelliJ IDEA
    – Git
    – Docker
  4. 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 componentsJava Server Pages (JSP), Servlets, Enterprise Java Beans (EJB), JAX-RS, JAX-WS, Java Message Service (JMS)
Java Web frameworksJava Server Faces (JSF), Spring MVC, Vaadin/GWT, Wicket, Play
ORMHibernate, Java Persistence API (JPA), EclipseLink, OpenJPA
Java build toolsMaven, Gradle, Ant
Java application containersTomcat, JBoss/Wildfly, Undertow, Jetty, WebLogic, WebSphere
Java 테스트 도구JUnit, TestNG, 스팍, 모키토, 오이
IoC 프레임워크스프링 프레임워크, Guice, CDI

이제 기본 사항을 알았으니 자세한 내용을 살펴보겠습니다. 기술 전문가가 아니라면 다양한 기술 이름과 약어에 헷갈리기 쉽습니다. 지원자가 EJB를 안다고 하면 Java EE에 익숙하다는 뜻일까요? 아니면 지원자가 Maven 1을 안다고 하면 Maven 2도 다룰 수 있다는 뜻일까요? 진정하세요, 저희가 도와드리겠습니다. 계속 읽어보세요.

서로 바꿔서 사용되는 가장 일반적인 Java 기술 이름입니다:

- JPA, 최대 절전 모드, Java 지속성, Java 지속성 API,

- Java EE, EJB, 엔터프라이즈 자바 빈, 엔터프라이즈 자바,

- JBoss, Wildfly.

각 Java 기술 버전 간의 관계:

- EJB 2.0은 EJB 3.0과 완전히 다릅니다,

- Java EE 1.4는 Java EE 5와 완전히 다릅니다,

- Java EE 7은 Java EE 5의 향상된 버전인 Java EE 6의 향상된 버전입니다,

- 스프링 4.0과 유사한 스프링 2.0 또는 스프링 3.0,

- 에이스기는 사명을 스프링 시큐리티로 변경했습니다,

- Maven 1은 Maven 2와 완전히 다릅니다,

- Maven 2는 Maven 3와 매우 유사합니다,

- 최대 절전 모드 4.x는 최대 절전 모드 5.x와 매우 유사합니다,

- GWT 1.x는 GWT 2.x와 다릅니다,

- Struts 1은 Struts 2와 완전히 다릅니다,

- JPA 2.x는 JPA 1.0의 기능이 더욱 풍부해진 버전입니다.

다음 관계에 대해 알아두는 것도 중요합니다:

- 전체 텍스트 검색: 누군가가 Lucene, Solr 또는 ElasticSearch 중 하나를 알고 있다면 나머지를 처리할 수 있습니다.

- 객체 관계형 매핑: 최대 절전 모드, EclipseLink, OpenJPA 중 하나를 아는 사람이 있다면 나머지를 처리할 수 있습니다.

- RESTful 서비스: Spring MVC, JaxRS, Jersey 중 하나를 아는 사람이 있다면 나머지를 다룰 수 있습니다.

개발자의 Java 기술을 평가하기 위한 Java 인증서의 중요성

Java 자격증은 일반적으로 고용주들이 높이 평가합니다. 그러나 자격증이 지원자의 필수 요건인 경우는 거의 없습니다. 기술 채용 담당자는 인증서가 개발자의 역량을 보장하는 것은 아니기 때문에 인증서를 기반으로 Java 프로그래밍 기술을 평가할 때는 신중해야 합니다.

경험이 많은 프로그래머는 인증 시험에 거의 합격하지 못하고 약한 프로그래머는 그러한 시험에서 좋은 점수를 얻는 경우가 매우 자주 발생합니다. 왜 그럴까요? 이러한 인증서는 실제 기술을 거의 검증하지 않습니다. 일반적으로 숙련된 개발자가 문서에서 빠르게 찾거나 검증할 수 있는 내용을 머리로 익혀야 합니다. 여기서 '빠르게'란 시험 중에는 사용할 수 없는 IDE(프로그래머가 애플리케이션 작업에 사용하는 소프트웨어)를 몇 초 내에 사용하는 것을 의미합니다. 그런데 일상적으로 프로그래머는 업무를 수행하기 위해 IDE와 같은 외부 소스를 많이 사용하기 때문에 IDE를 사용할 수 없다는 것은 말이 안 됩니다.

아래에서 3가지 그룹으로 나뉘어져 있는 Java 인증 목록을 확인할 수 있습니다.

A. 실무 경험이 필요하고 주제에 대한 심층적 인 지식을 보장하는 실용적인 Java 인증서

스프링 인증서:

- 스프링 프로페셔널,

- Spring 웹 애플리케이션 개발자,

- 엔터프라이즈 통합 전문가.

B. 유용한 Java 인증서는 신뢰할 수 있는 지식 증명 역할을 할 수 있습니다.

- 오라클 공인 마스터, Java SE 6 - 꽤 높은 수준의 Java 기술이 필요하지만 10년 전(2006년)에 출시된 Java 1.6만 있으면 됩니다,

- 오라클 공인 전문가, Java EE 6 웹 서비스 개발자 - 탄탄한 지식이 필요하지만 상업적 경험을 검증하지 않으므로 프로젝트 성공을 보장할 수 없습니다,

- 오라클 공인 전문가, Java EE 6 Java 지속성 API 개발자 - 탄탄한 지식이 필요하지만 상업적 경험을 검증하지 않으므로 프로젝트 성공을 보장할 수 없습니다,

- 오라클 공인 마스터, Java EE 6 엔터프라이즈 아키텍트 - 아키텍처 수준에서 Java를 이해하고 적용할 수 있어야 합니다,

- IBM WebSphere - 탄탄한 제품 지식이 필요하지만 상업적 경험을 검증하지 않으므로 프로젝트 성공을 보장할 수 없습니다.

C. Java 인증서 - 이론적 지식, 비즈니스 관점에서는 별로 유용하지 않음

- 오라클 공인 어소시에이트, Java SE,

- 오라클 공인 전문가, Java SE,

- 오라클 공인 전문가, Java EE 6 자바 서버 페이스 개발자,

- 오라클 공인 전문가, Java EE 6 웹 컴포넌트 개발자,

- 오라클 공인 전문가, Java EE 6 엔터프라이즈 JavaBeans 개발자.

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:

  1. Java programming tests should verify not only Java developer skills as far as technology in general is concerned but also frameworks and libraries
  2. 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).
  3. 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
  4. 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.
  5. 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.

Java
시니어
검증된 기술
기간
111 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 Java, Core Java, I/O system, Lambda Expressions, Exceptions

코드 갭

에 대한 지식 평가 Java, Core Java, I/O system, Lambda Expressions, Network Communication

프로그래밍 작업 - 레벨: 어려움

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.

junit
중간
검증된 기술
기간
64 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 JUnit, QA

코드 갭

에 대한 지식 평가 JUnit, JUnit4, QA, JUnit 5, Java

프로그래밍 작업 - 레벨: 중간

QA | JUnit | ATM Service | Authentication and deposit validation - Write test cases to verify the Automated Teller Machine (ATM) software.

Java
중간
검증된 기술
기간
75 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 Core Java, Java, Serialization, Date and Time, Generics

코드 갭

에 대한 지식 평가 Core Java, Java, Memory Management, Network Communication, Lambda Expressions

프로그래밍 작업 - 레벨: 중간

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.

java
중간
검증된 기술
기간
58 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 Core Java, Java, Stream API, I/O system, Date and Time

코드 갭

에 대한 지식 평가 Core Java, Java, Network Communication

프로그래밍 작업 - 레벨: 중간

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.

Java
중간
검증된 기술
기간
104 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 Java, Spring Boot

코드 갭

에 대한 지식 평가 Core Java, Exceptions, Java, Generics, I/O system

프로그래밍 작업 - 레벨: 중간

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.

Java
주니어
검증된 기술
기간
49 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 Core Java: Network Communication, Generics, Memory Management

코드 갭

에 대한 지식 평가 Core Java: Collections, Memory Management, Generics

프로그래밍 작업 - 레벨: 쉬움

Java | Currency Exchange - Complete the implementation of the Currency Exchange app, which is responsible for managing exchange rates and exchanging the currencies.

Java
주니어
검증된 기술
기간
37 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 Java, Core Java, Lambda Expressions, Memory Management

코드 갭

에 대한 지식 평가 Core Java, Java, Memory Management, collections, Lambda Expressions

프로그래밍 작업 - 레벨: 쉬움

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.

junit
중간
검증된 기술
기간
66 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 QA, Testing, Unit-Testing, Manual Testing

코드 갭

에 대한 지식 평가 JUnit 5, Java, QA

프로그래밍 작업 - 레벨: 중간

QA | JUnit | ATM Service | Authentication and deposit validation

Selenium
중간
검증된 기술
기간
48 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 QA, Selenium, .NET, C#

코드 갭

에 대한 지식 평가 Java, QA, Selenium

프로그래밍 작업 - 레벨: 중간

QA | .NET, Selenium | Data extraction - Implement methods in class SeleniumTask.SeleniumExecutor to pass successfully all tests.

junit
중간
검증된 기술
기간
73 최대 분.
평가
자동
테스트 개요

선택형 문제

에 대한 지식 평가 JavaQA

코드 갭

에 대한 지식 평가 JavaQA

프로그래밍 작업 - 레벨: 중간

QA | Java, JUnit | Vending Machine - Write unit tests for the verification of a Vending machine.

시작하기
DevSkiller 오늘

데브스킬러가 어떻게 여러분의 성장을 도울 수 있는지 알아보세요.