Technical Interview: Questions, Lifehacks, and Keys to Success
JS for programmers

Technical Interview: Questions, Lifehacks, and Keys to Success

In this column we want to share our experience in conducting a technical interview, in particular on Java technology.

First of all, let”s decide why we are interviewing. To understand the technical level of the candidate and evaluate his Soft Skills. This may not be so important for Trainee or Junior professionals, but it is especially important for Senior, Lead or managers. Another goal of the interview is to check if the person fits the team mentally.

Interview format

What are the interview formats? Often divided into structured and unstructured.

A structured interview is a standard list of questions you ask your interlocutor, get answers, and form your feedback.

An unstructured interview is when you ask the interviewee to tell you details about his / her previous professional experience, ie what he / she worked on on previous projects, and you build your next questions from this information. Each of these approaches has its pros and cons.

It”s easy to get used to a structured interview. Moreover, this format allows you to quickly collect and provide formal feedback, which will get into the company”s internal database. The problem with this approach is that it is quite difficult to cover all the topics in one conversation, because it takes a long time. Also, such an interview is considered too formal and is often called monotonous and uninteresting.

An unstructured interview is more informal, so it gives a positive impression to the candidate. Also important is the fact that it must be carried out with an experienced and strong engineer. However, it is more difficult to conduct an unstructured interview qualitatively and to understand the level of the candidate, because you do not have a ready-made script and a list of questions.

In our opinion, it is worth combining the strengths of both approaches, and try to conduct a structured interview in an unstructured manner, try to make it interesting and learn to understand and evaluate not only what the candidate knows, but also how he thinks. It is also very important to learn to listen not only to what is answered to you – pay attention not only to the correctness, but also to the clarity of wording and structure of the answer.

Interview structure

Let”s talk about the standard sections in the interview:

Greetings and a little small talk. Because interviewing candidates is almost always stressful, your job is to minimize that stress and help your interlocutor adjust and relax.
Project information. The optimal time for this is up to 5 minutes. The goal is to help the candidate understand what the project is about and what it will hypothetically deal with. Don”t go into too much detail, because you need to leave time for the technical part of the interview.
Soft Skill talk. It is an opportunity to ask the candidate about his previous work experience and observe how the person communicates. In this part you can also check your English.
Technical part of the interview (more on this below)
Questions from the candidate. Allow time at the end of the interview for the candidate to ask questions that interest or concern him or her.
Technical interview
I think one of the most important parts is the technical interview itself. Here are some examples of questions that my team and I ask during the conversation. Note that questions for different levels of professionals may differ in the depth of immersion in the topic – this is normal.

OOP

The first topic is OOP. We usually ask about the basic principles and aggregation of the composition, ie the main concepts of OOR. We recommend that everyone ask these questions, but be prepared that you will receive different answers.

For example, young professionals need to know about these principles. But the fact that they study them means the seriousness of their attitude to the interview. ESD is the foundation of Java development and candidates need to understand the basic principles of working with elements and how they can help.

An example of an interesting question is the question of polymorphism. Sometimes a candidate understands what it is, knows how to use it, and may even apply the polymorphism in practice, but cannot easily explain and talk about its advantages, and this is a rather alarming bell, especially if the interview with a Senior specialist.

Features of Java Core / Java 8-11

Questions about Java 8 and later can also be asked to everyone, especially to techies and architects.

It often happens that they focus on architecture and design, but forget to follow the development of technology. For example, Java 6 is still used, although Java 8 was released more than 6 years ago. Other examples of questions can be seen in the image above.
Collections

Another mandatory question for everyone, regardless of the level and programming languages ​​in which the candidate writes, is collections, ie data structures. You can start with the question of list and set (List, Set), fifo / lifo and the associative array.

For example, we offer candidates basic data structures (in java it is list, set, queue, set) and expect them to know these data structures and be able to explain how they differ.

Good question: how is the list different from the number?

A popular answer is that the number does not allow duplicates, and the list allows. In fact, this is not the key difference between a list and a set. The main thing is that the items in the list are stored in the order in which you add them. These properties can explain the methods that you then observe in the data structures. You can add an element to the list by index, but not to set, because set does not guarantee order, and the concept of the index does not make sense. This is the main feature.

Another example is HashMap. Why is this question interesting?

Almost everyone starts with buckets, answering that when we get a bucket on the hash code, there are some mismatches / collisions. This is the standard answer. I”m curious to ask where the same buckets are stored. Candidates usually answer that they are stored in the array. Next I ask the following: we have a hash code, and how do we determine the index of buckets in the arrays of these baskets, to which we will add these elements?

There are two options:

People know how to do it – and you can keep asking. For example, you can ask how this is done, why, and why the size of the array in HashMap is always the same. The purpose of these questions, of course, is not to overwhelm the candidate, but to understand the depth of his knowledge.
People do not know how to do it, but somehow find a solution.
However, the task is not easy to find buckets. A feature of HashMap is the amortized constant of access to an element by key. The question is how to achieve this constant of element search complexity, and this is the main advantage of HashMap over any other map implementation. What is important here is that we do not expect the correct answer, it is important to think and explore with the candidate how it is possible to determine the index in the array in a constant time. A great time to understand a candidate”s thinking style and see how he or she comes to a decision.
Concurrency

Questions from Concurrency are rarely asked to Middle-specialists, because people in these positions feel confident in this topic. Asking them for details is pointless. But in Senior and Lead – it is better to ask. Knowledge of Concurrency for Senior is required.

Popular questions include synchronization and what volatile means. All these questions give you an opportunity to understand how well people understand the essence of things.

Data Stores

Next, it is important to talk to the candidate about databases. Again, this is a question for professionals at all levels, but young professionals should only discuss basic things like SQL. Middle, Senior, and Tech Lead experts are advised to ask about the theorem (necessarily), how relational databases differ from non-relational ones, when and which ones to use. You can also ask about SQL, but if necessary.

Questions of this kind help to understand how deeply a person understands technology, how well he has structured data in his head, and how he thinks.

JVM \ GC

We recommend asking about JVM \ GC in Middle at the level of general knowledge, but for Senior and Tech Lead it is worth asking more specific questions. However, if you don”t have a performance-intensive app, these issues aren”t key.

Another very important skill, especially for Senior and Team Lead, is troubleshooting.

Troubleshooting

This is the ability to understand the problem, connect to it with a monitoring tool (such as Java Mission Control), collect data, and successfully solve the problem in production.

Framework

According to the Framework, you should ask what is used in the project. You can also ask which framework the engineer would like to switch to. It is important to ask why Spring was invented, what problem it solves, on what template it is built, and so on. A good example of a question on Spring is the life cycle of a bin in a container.

Leave a Reply

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