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:
- Tell us about yourself, your career, etc.
- Design an architectural diagram for a specific use case.
- Provide answers to technical questions and complete several coding tasks.
- 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.
TABLE OF CONTENTS
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
- Java Interview Questions. A popular collection of in-depth articles and tutorials in the Java ecosystem and general Web Development, with a strong focus on Spring, Spring Security, and RESTful APIs.
- Spring Framework documentation.
- AWS free video courses.
- NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. The authors provide a fast-paced guide to the concepts you need to know in order to evaluate whether NoSQL databases are right for your needs and, if so, which technologies you should explore further.
- Designing Data-Intensive Applications. This book deals with all the stuff that happens around data engineering: storage, encoding, replication, partitioning, distributed systems, batch & stream processing, etc.