This article is about my recent interviewing experience for Senior Software Developer positions in Amsterdam. It contains general preparation tips and also describes and compares the interview processes in different companies.

In short:

  • 10 years of backend development experience;
  • current position: Senior Backend Developer at KPN;
  • 5 months of preparation;
  • 6 virtual “on-site”s -> 6 offers.

-go to index

Offers

Other companies

I applied here but decided not to proceed after the first screening interviews:

  • Stream Data Suite, Lead Software Engineer - They don’t provide work Visa support in the Netherlands
  • ING, Senior Backend Engineer - Turned out they were looking for more of a DevOps than developer

Index

General preparation

These resources will work for any developer role in any company. I will provide company specific notes later in the corresponding sections. Each interview step takes an hour if not specified otherwise.

Legend:
✍ - article
📖 - book
🎬 - video
💩 - collection of resources
𝐖 - wiki resource type
🎒 - course

Behavioral

These interviews test your soft-skills and focus mostly on your past projects and experience. All answers should follow STAR format. There are plenty of resources online on how to prepare for such questions. However, note that these resources will only help you shape your answers and make you more focused - you really need to have quite a lot of experience with different teams and projects or even companies to have a backpack of appropriate stories to talk about.

Algorithms

These interviews are rather straight-forward: providing solution (algorithm) to a given problem within a limited time. There can be several types of such interviews:

  • codility/hackerrank/codesignal home assignment. Some companies use it as a screening test as initial filter. Usually the tests consist of several different tasks there are rather simple and there’s a plenty of time. The complexity of those tasks are about “return most common character in the string” + they can throw some extra conditions along. I usually finished 3 tasks there in 30 minutes while the time limit is about 2 hours. I would recommend getting to know the specific environment the company uses as they differ in UI.
  • another option of home assignment is when you are given a small project to complete. It’s rather rare but it allows the company to test your ability not only to solve the problem but also to demonstrate how you write production code: make sure you write clean code, use proper variable names, add tests, readme and proper build/deploy system.
  • live coding session: most common one on later interview stages. You connect to a shared environment (usually in a browser) and are presented the task and need to write a method/class/etc. that does the job. Remember here that communication here is as important as problem solving skill. You need to be able to collect the requirements, talk over corner cases, suggest some solution, discuss its limitations and time/space complexity, improve if necessary and only then start coding.

First two books in the list above are a must-read for this interview. Best way to prepare is combine these books with solving leetcode puzzles. Use easy puzzles to warm up, but your main focus should be on medium ones. Hard puzzles are very rare in the interviews as they usually require significant amount of time to think of and code, but they definitely should be on your list.

System Design

In this type of interview you will be asked to design some system/service from scratch, e.g. “design twitter” or “design ticket system”. You are given a whiteboard (virtual one in case of online interview) and you should present the architecture of the system. Best way to sharpen your skill is educative.io platform: most of the links above lead there. It’s not free, but definitely worth the money.

Company specific

Uber

When you apply for a position in Uber, they provide all the necessary information about the stages, types of interviews and even preparation materials. Here’s a list of interviews I had during my process.

Interview stages

Screening/first technical

One hour call where you are presented with an algorithmic challenge (complexity is about middle level of leetcode puzzles). As with any technical interview, communication is very important: talk through your process of thought, discuss different solutions and their trade-offs until you come to a satisfactory solution and only then start coding.

Final rounds (6 interviews)

All the rest interviews are called “final rounds” and usually conducted within one or two days. Each interview takes one hour. Before the final rounds in advance Uber organizes a call with your recruiter where you discuss in detail what to expect and how to prepare.

All coding interviews are done in codesignal environment, so it’s possible to run your code and do some testing/debugging when you are solving the puzzles.

Coding: Algorithms & Data structures

Another medium level leetcode style task: you are given the puzzle overview, inputs and expected outputs.

Design & Architecture: Previously Solved Problem

This is an architectural interview where you discuss one your previous projects in deep details: the task you were trying to solve, why those decisions where made, how that architecture worked, etc.

Coding: Depth in specialization

Another coding interview, but this time instead of pure mathematical puzzle you are given a task to design and build some more real-world system. Usually it’s just a class/method/library that does some job, e.g. “collect statistics based on a series of requests”.

Design & Architecture: New Problem

Classical system design interview. All the rules and resources from the “System Design” apply here.

Behavioral: Citizenship, Collaboration

This interview focuses on your old projects and mostly teams and people you worked with: how you can collaborate with others, challenges and learning.

Behavioral: Bar raiser

Very specific interview: behavior interview conducted by a tech person, you talk here again about your experience, some decisions made in previous projects, the discussion flows from talking about tech to people and back.

Overall impression

Pros:

  • very straight-forward process
  • you get what you expect on each round: algorithms, system design, behavioral questions
  • handy preparation tips from Uber itself before the final rounds
  • very nice salary

Cons:

  • final stages take a whole day, you need to take a day-off to attend

Amazon

Amazon is also very kind to provide all information about the interviews and preparation materials after you pass the screening interview.

Interview stages

Screening

Friendly one hour talk mostly based on Amazon Leadership Principles questions. Be prepared to talk about your motivation, understanding the role and briefly about you past experience.

Behavioral and coding

45 min of STAR questions and 15 min of coding (small problem solving puzzle).

Final rounds (5 interviews)

All the rest interviews are called “final rounds” as in Uber and usually conducted in a day. Each interview takes one hour. Before the final rounds in advance Amazon organizes a call with your recruiter where you discuss in detail what to expect and how to prepare.
Every interview here consists of three parts:

  1. 20 min - discuss a couple of Amazon Leadership Principles and how they match with your experience
  2. 30 min - interview-specific part (see details below)
  3. 10 min - your questions

First part if very important, make sure to study Amazon Leadership Principles and think of a couple of stories from your experience for every principle beforehand.

In the sections below I will mention only the second (30 min) part of every interview. Also keep in mind that online environment where you do your coding assignments is basically a text editor with syntax highlighting, so doesn’t allow to actually run any code you type.

Hiring Manager

Talk about system design for one of your previous projects and your involvement.

Coding: problem solving

You are given a relatively easy task, but the requirements and corner cases are very vague. Focus of this interview is how you communicate with the interviewer to gather all the necessary information and discuss the proposed solution. Timing here is also important as don’t forget that you also need to code a working solution and you have only 30 min for everything.

Bar raiser: system design

Again, classical system design interview. All the rules and resources from the “System Design” apply here.

Coding: algorithms & data structures

As the name suggests here you need to know data structures (especially more complex ones) and be able to combine them to solve the puzzle. This round has the hardest problem of all the interviews, but don’t forget to keep talking to the interviewer, they are not your enemy or your professor at the exam, they can guide and help you come up with the appropriate solution

Coding: logic & maintainability

You are given a very simple puzzle, but the catch here is to write the code as if you are coding a production project: think about how you structure your code, name variables and methods, do testing, check input, etc.

Overall impression

Pros:

  • each part of every interview is clear and what you expect from such company
  • handy preparation tips from Amazon itself before the final rounds
  • as each coding task is 30 min max, they are not too complex
  • very nice salary

Cons:

  • this mix of interview questions during every interview in the final rounds is hard to process and also this leads to small amount of time you have to do coding and system design, though the tasks are not too hard, you need to be very quick.
  • final stages take a whole day, you need to take a day-off to attend

Booking

I applied to Booking for Machine Learning Platform engineer position for the team building infrastructure.

Interview stages

Screening hackerrank test

As soon as I applied I was automatically sent a hackerrank test to do. The tests consisted of three easy algorithmic puzzles to do. There’s plenty of time to finish all the tasks and double check everything.

Recruiter call

A call to manage the expectations: not really an interview, but a talk about the role, responsibilities and your experience.

Coding

You are given a task to code some small application which is a close to what you are expected to work with in the future. The key here is to gather all the necessary information from the interviewer, propose a solution, discuss corner cases, and only after the interviewer approves your proposal, start coding.

System design

Classical system design interview. All the rules and resources from the “System Design” apply here.

Hiring Manager

More of a cultural fit interview, talking over your past experience, interesting cases from different projects, your collaboration with team members, handling difficult situations, etc. Though it’s Booking, but Amazon Leadership Principles preparation can be of a great help here.

Overall impression

Pros

  • relatively short path (especially compared to Uber, Amazon and IMC Trading)
  • very nice salary

Cons:

  • initial screening is automatic with no return email, so you can’t ask any questions before the start of ask to postpone the start of the test (you must complete it in 3 days)
  • recruiters are not as fast to respond as in other companies
  • last-minute changes to the scheduled interviews

IMC Trading

Applied for Python Software Engineer in the team building tools and metrics and developing strategies for traders.

Interview stages

Introductory call

Managing expectation, talking about the company, position, responsibilities, etc.

Home assignment

I was sent a programming home assignment: develop a small application. The logic there is very simple, but the target is to make it production-ready. I spent about 10-15 min coding the main algorithm and then about 5 hours wrapping it into proper command line tools, Docker, writing unittests, Makefile and documentation,

Initial technical overview

Discussed the home assignment, talked about Python experience in general and some dive-into knowledge.

Coding interview

This is a rather long interview that takes 2.5 hours. You are given a relatively complex system to build (I’d say still about medium leetcode complexity).
This interview consists of several parts:

  • you are presented a task pdf and are given 5-10 min to look through it
  • interviewers walk you through the task, making sure you understand the requirements
  • 10 min break when you can think of a solution, google something if necessary
  • discuss your solution with interviewers, improve as you go
  • actually code the solution

The complexity here is also in a way you are coding: the interviewer gives you remote access to their Pycharm instance where you need to write your code. The project and all unittests are already in place (of course all of them are failing at the beginning). Pre-defined unittests here help a lot, you can go and “fix” them one by one, implementing missing pieces of logic.

Behavioral and Trading interview

Again a very long 3.5 hours interview. It’s a mix of STAR questions and tech knowledge. You are not expected to be proficient in trading, but good to know at least some basics: how stock market works, what stock options are, bid and ask, etc. Trading interview is more a mathematical one.

Overall impression

Pros

  • very straight-forward process
  • all the tasks that you are given are described perfectly: e.g. home assignment and coding interview task pdf files
  • in coding interview you are given some time to yourself when you can think quietly about the task and the solution
  • very nice salary

Cons:

  • home assignment: not a big fan of those, as in my opinion they are hard to trust and they take a lot of time to complete and then to check, I prefer pair programming session instead
  • the process felt very long, maybe due to that home assignment and also due to those 3 hour long interviews

SendCloud

Interview stages

Introductory call

Managing expectation, talking about the company, position, responsibilities, etc.

Peer programming

It used to be a home assignment task, but now they switched to pair programming session. You are given a full project and you task is to go though all the files and do code review, discussing what is wrong there, what can be improved. After that you need to implement couple of missing methods there. We didn’t get to this second part as we ran out of time (1 hour).

Team overview

Not an actual interview, just a call to meet the team and discuss your future role.

Overall impression

Pros

  • very short process

Cons:

  • relatively low salary (still above average, but hard to compete with top companies)

Freshbooks

Interview stages

Introductory call

Managing expectation, talking about the company, position, responsibilities, etc.

Screening codility test

The tests consisted of two easy algorithmic puzzles to do and one task about SQL (to write complex SELECT). There’s plenty of time to finish all the tasks and double check everything.

Hiring managers

Behavioral interview, see the generic section above for preparation.

Technical

Interview with two engineers about your technical experience.

Meet the team call

Just a call to meet the team and discuss your future role.

Overall impression

Pros

  • very short process

Cons:

  • low salary (also due to offered Middle position)

Conclusion

Interviews in all companies felt very friendly and open. It’s never felt as an exam but more of a discussion with colleagues. And all top companies from the list above: Uber, Amazon, Booking and IMC Trading - offer very competitive compensations. I’ve made my choice due to a combinations of reasons: company culture, tech stack, overall interviews impression and future career possibilities.

Cover photo by Scott Graham on Unsplash