1- HackerRank challenge (90 mins)
2- Remote Interview (1h) with a live coding challenge
3- Full day on-site interview consisting of 4 more live coding challenges
I was given a HackerRank challenge with only 90mins, which I solved at the end of the day. Though I could easily fail because of the time pressure. Given a few more hours, or no time limit at all, I could produce a much better result, as I did after I submitted the solution. It took me 3 more hours to do so.
The second interview was remote and the interviewer was very nice and gave the impression of being very knowledgable in Scala and functional programming in general. The challenge itself was very easy and I ended up solving it but as I had to brainstorm, think, write the code, refactor it, and explain things at the same time it wasn't easy at all. I suppose that's the case with all remote interviews.
The on-site interview was in a small room with no whiteboard with 4 more technical challenges, though I was told that it will be just general technical discussions and not 4 more easy/medium algorithm.
Each section was 1 hour with around 20 mins on general discussion about my background. The first two interviews went well but it was still tough: It was a small room with no whiteboard to at least think about the algorithm for 5 mins. My brain doesn't come with a scratch pad so ask them to provide that for you in advance and take your time to brainstorm first. The coding environment and experience was also very uncomfortable, with an Apple bluetooth keyboard and mouse on an online editor which is the only option for a remote interview but not for a face to face one. I'd be 10 times more comfortable on my own machine which I had brought with myself. You will work on your machine so I don't see the point of testing candidates under so much pressure.
The 3rd section was again remote but the interviewee (seemingly having a major role) was not familiar with Scala and FP. Candidates can choose the language of their choice and I picked Scala. Given that they were looking for Senior Scala developers, it was a bit of a surprise when I was asked to explain simple concepts of functional programming to the interviewer. From what I understand regarding the company's structure, he is part/the lead of another team, with Python as the mainstream language. He seemed to think I have no clue of what I was talking about (recursion, fold, reduce, partial application, currying, etc.). So it soon became a monologue! You can guess the rest I suppose.
In the last section I was asked to solve yet another technical challenge! Then I was given a question (time complexity vs space complexity).
I try to be fair so I admit I wasn't really myself under those conditions and I got more and more frustrated towards the end. I expected the sections to be coordinated and not repetitive live coding challenges without a whiteboard to think through the algorithm/problem.
They called me two days later and said the team thinks I'm not really good in Scala and they might have something coming up for a mid-level developer. The bottom line is I have been working as a Senior Software Engineer / Scala Developer for 4 years now (last three companies). I also have certificates from Lightbend to teach Scala and Akka! I have been contacted by Netflix, Amazon, and Apple in the past two years and I have gone through the whole interview process with Apple but due to visa situation I didn't get the offered position as a Senior Software Engineer. A lot of companies give you a few days(basically no time limit) to solve the first challenge. I honestly think one can hardly be judged by their performance under time pressure or by their spontaneous responses, unless you ask them things that evaluate their knowledge and not their skills. Skill needs time to prove.