Get started

At Codility, we create coding assessments for hiring software developers.

This implies that we also hire developers to create technical interviews for hiring developers. It is like two-star pointers or programming squared.

Our interview process consists of a Codility coding assessment in the front, and then a good old technical interview for the candidates who prove they have the coding knowledge and fundamentals in the back. I want to share four technical interview tips and questions that we use to assess competencies in programming during a video interview, using CodeLive.

Coding assessments and remote technical interviews
Coding assessment + remote technical interview = a successful interview process.

1. Scalability & Optimization

If you are planning to do something big, it will need to scale well in this way or another. A basic understanding of scalability is assessed by an automated Codility assessment.

During the technical interview process, we ask candidates to answer a simple programming problem-solving question which has multiple solutions with different simplicity/scalability trade-offs (e.g. compute prefix sums of a sequence of numbers). We assess whether a candidate notices the scalability aspect and whether he/she can deliver the working solution with better scalability.

Time permitting we probe deeper, asking “can it possibly be done better?” This question opens discussions about possible optimizations, sometimes going down to the hardware level, but also about intrinsic limitations of computing machinery, which greatly illustrates whether candidate a can apply theory to a concrete problem.

2. Aliasing – Pointers & References

It is not a revelation that an amazingly high number of professional developers have a lot of confusion about pointers and references. And I don’t mean three-star programming, I mean even simple stuff: If you do “A=B” in Python or Java, what actually happens and do you end with one or two Bs?

In the interview process, we usually ask candidates to answer a simple programming problem-solving question that involves pointers/references, like manipulations on single-link lists. As much as we rarely deal with direct lists manipulation nowadays, we believe it shows whether a candidate can deal with real-life scenarios where multiple levels of indirection occur e.g. in data models. (And as David Wheeler used to say, “All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections.”)

3. Recursion – Be Mentally Prepared

Understanding and handling recursion is a sign of a programmer’s fitness, and this should be a key component of any coding assessment.

On some jobs this skill will be crucial, on other jobs maybe not so much, but the fact that a candidate knows how to do it shows that they’ve been doing mental push-ups and sit-downs long enough to be ready to take the triathlon challenge and showcase their strength throughout the interview process.

The classic moderate question here is to take a simple recursive function and ask the candidate to rewrite it into an iterative one.

4. Communication – Be Clear & Concise

Coding is not only a way of communicating your requirements to the machine, but also a way of communicating your intent to fellow team members.

For each programming exercise the candidates solve, both on the automated Codility coding assessments, online CodeLive video interview, and in face-to-face interviews, we look at the code they write and assess whether it speaks to us clearly. If you look at the code and you immediately know what’s going on, that’s a plus, if you don’t that’s a red flag.

Bonus points: 
We created CodeLive to help hiring managers run their technical interview process effectively, by having a shared space to code alongside the candidate in person or via a video interview. Our coding assessments allow the interviewer to have full control to add test cases, change languages, and lock down the interface. The full session is then recorded and scored for other hiring managers to watch and review later, and to be kept on file. 
Our team will sometimes start CodeLive interviews from a candidate’s submitted Codility assessment so that we can ask specific programming problem solving questions about their approach, and test them deeper on their solutions. Other times, we’ll start with a completely new task. 
We like collaborative coding on CodeLive because it gives us deeper developer insights–and a great environment to run our technical interviews. Whether you are running an in-person or video interview, CodeLive can help.

Greg is the founder and principal scientist at Codility.

Connect on LinkedIn