Senior SDE interviews in Uber, Amazon, Booking and IMC Trading in Amsterdam
by Denis Kovalev
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.
Offers
- Uber, L5A Senior I (accepted)
- Amazon, Senior SDE III
- Booking, Senior Software Developer
- IMC Trading, Software Developer
- SendCloud, Senior Backend Developer
- Freshbooks, Software Engineer Level 3 (Middle level)
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
- ✍ Rock the Behavioral Interview (LeetCode)
- ✍ Use Amazon Leadership Principles to think of stories from your past work about each of them - will be helpful for any company preparation
- ✍ Cracking the Soft Skills
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
- 📖 Cracking the Coding Interview
- 📖 The Algorithm Design Manual
- ✍ Cracking the Coding Skills
- 💩 Interview Preparation for Software Developer
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
- ✍ The complete guide to system design in 2022
- 🎒 Software Design Patterns: Best Practices for Software Developers
- 🎒 Grokking the System Design Interview
- 🎒 Grokking the Advanced System Design Interview
- ✍ Catalog of Patterns of Enterprise Application Architecture
- 𝐖 Learn how to design large-scale systems
- 💩 Preparing for the Systems Design and Coding Interview
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:
- 20 min - discuss a couple of Amazon Leadership Principles and how they match with your experience
- 30 min - interview-specific part (see details below)
- 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.
Subscribe via RSS