The software developer interview is an interesting and nuanced process. We all are different and have a unique approach to building solutions and solving problems. As such, there is no standard algorithm for asking questions in an interview. In fact, this is a conversation between the candidate and interviewer.

While this gives the candidate an opportunity to get specific information on both the company and position she/he applied for, here the interviewer is hoping to find answers to the following questions:

  • How well do you know the programming language and its environment?
  • How capable are you of designing most of the solutions we’re working on at the company?
  • How good are your analytical and communication skills?

The ideal candidate for us here at Klika Tech is someone who doesn’t just know the technical details but understands how and where to apply them in a real-world context, and plays well in a team environment.

The whole interview will take approximately 1.5 hours. We will do our best to stick to the following structure:

  1. Tell us about yourself, your career, etc.
  2. Design an architectural diagram for a specific use case.
  3. Provide answers to technical questions and complete several coding tasks.
  4. Ask the interviewer, ‘as a potential colleague’ questions, or any others you may have.

And now let’s talk about each of these phases in more detail.

TELL US MORE ABOUT YOURSELF

Typically, we start with an introductory part. This is an opportunity to talk about yourself, share details of your experience, tasks you’re most comfortable with, technologies you’ve used, and the kind of project(s) you’re most interested in.

Based on this information and your work history, the technical expert selects questions for the next part of the interview.

WHAT IS IMPORTANT IN YOUR EXPERIENCE?

When evaluating Developers with extensive experience, our interviewers prioritize achievements based on your previous projects, specifically the part your contributions played in the resulting success of those solutions, over formal courses. If you lack commercial development experience, Java interview questions may be focused on projects you were involved in during studies, research, your personal projects, and/or other examples that can be applied to gauge motivation and competence.

As a piece of advice, don’t spend too much time remembering exact names, abbreviations, and definitions. If you know the principles of how it works, it’s enough for us to understand your level.

In our company, senior-level developers are usually responsible for certain components of a system, its design, and the group working on it. To carry out these responsibilities effectively, they need to have an overall understanding of the system and how the various components fit together. Constant and effective communication with other developers working on the same component is also a priority, as well as it is with those focused on other parts of the system. In addition, they must be able to quickly identify potential problems and brainstorm solutions.

In short, we expect stronger communication, leadership qualities, and system design skills from our senior-level specialists.

TALKING ABOUT SYSTEM DESIGN

During this phase, you will be asked to design a system for a specific use case. Since our company specializes in IoT and Cloud-native development (our portfolio), our use cases will focus on:

  • Smart Home
  • Connected Vacuum Cleaner
  • Asset Tracking
  • Anomaly Detection
  • Other

Based on one of these business cases, the interviewer may ask you to detail one or more of the following:

  • Collect and store all telemetry data in the cloud
  • Implement a website that can:
    • Show the most recent values
    • Give users visibility of all metrics at a specific point in time
    • Provide an interactive dashboard to view a 30-day history diagram for a selected metric

Knowing this, you should be prepared to draw a diagram and explain why you chose a particular solution.

Please be ready to collaborate during the interview using tools such as:

We have a strong partnership with Amazon Web Services (AWS) and use its products and services to build our solutions. However, we understand that you may not have experience with it, and are ready to hear about alternative solutions (e.g., Rabbit MQ instead of AWS SQS or KeyCloak instead of AWS Cognito User Pool).

By asking such questions we are aiming to measure your:

  • Logic, thought process, and way of thinking
  • Ability to make intuitive decisions
  • Knowledge of key architectural patterns
  • Understanding of microservices/serverless architecture principles
  • Hands-on relational/NoSQL database experience
  • Experience with network protocols
  • Ability to make a solution secure
  • Experience with logging, monitoring, alerting
  • Experience with CI/CD

Seeing how you respond to these questions helps us better identify your areas of interest and evaluate your breadth and depth of knowledge.

TALKING ABOUT JAVA

We generally don’t judge harshly on inability to answer more “advanced” questions. We value practical knowledge over theory.

Usually, we don’t focus on one thing. Instead, we try to cover as much ground as possible with a focus on practical questions (i.e., how to do “X” in Spring).

Let’s consider the next exemplary question for an interview:

“You have a package with a lot of beans that you cannot touch. You need to add logging to each bean method call in the package to understand what’s going on. How do you do this without changing the package code?”

WHAT DO WE EXPECT TO HEAR FROM THE CANDIDATE?

Aspects, obviously (BeanFactoryPostProcessor, maybe, since that also works).

WHY DO WE THINK THIS QUESTION IS WORTH ASKING?

Aspects are not essential to know when developing Spring applications but are referenced so often in any Spring learning material that we expect any experienced Spring developer to know them.

HINTS WE MAY OFFER IF WE SEE THE CANDIDATE STRUGGLE OR FOLLOW UPS WE MAY ASK FOR CLARIFICATION.

Sometimes we mention that there’s a way in Spring to hook into bean method execution.

The goal at this stage is to evaluate the following areas of your knowledge:

  • OOP/Functional Programming/Reactive Programming concept knowledge
  • Understanding of Java principles, updates, advantages
  • Grasp of layering logic: what should be in application, and what we need at the database level
  • Knowledge of software design patterns
  • Knowledge of data structures
  • Knowledge of Java Memory Model
  • Experience with Java Code Testing

SUMMARY

The world is constantly evolving and changing, so it’s impossible to know everything. And even if you did know everything, you wouldn’t be able to retain all that information. The aim of our interviews is to give you an idea of how we work and an opportunity to demonstrate your skills. Based on this, we are able to gauge how meticulously you approach work, measure your level of passion for the technology, and get an understanding of the proficiency you have in general systems design.

Hopefully, this has helped you gain insights into our Java Developer interview expectations. 

If you’d like details on our entire interview process, please read this article or take a look at our available opportunities.

PREPARATION RESOURCES