Want to ace your interviews at Delivery Hero? Being prepared is key! Jump into this article for some top tips from our awesome engineers on what we are looking for and how to be prepared.
Are you interviewing at Delivery Hero, or are you just curious about our tech interview process? Then read on – we want to be transparent about what to expect so that you feel well prepared and ultimately, have a positive candidate experience. Our engineers Burak Tasci, Alex Narayan, and Adegoke Obasa have broken down the various stages of our technical interview process, providing many tips, links and insights to help you feel prepared and ready to do your best!
Who are we looking for?
We are looking for people that embody the Delivery Hero Values in the following ways:
- Passionate Crafts People: who take pride in what they do, understand what it means to build, maintain, and develop high-quality software, and are passionate about solving problems for our users (customers, vendors, riders, stakeholders, and team members) – “we always aim higher”.
- Solution-oriented People: that are pragmatic; strive to simplify complex situations, code, and systems/processes; and understand short and long term trade-offs – “we deliver solutions”.
- Effective Collaborators: who understand the importance of co-creation and strive to ensure healthy communication with customers, stakeholders, and team members – they are compassionate and keen to optimize a team around collaboration – “we are heroes because we care”.
In summary, if you are passionate about architecture, engineering excellence, delivering solutions and collaborating with various people, then you should definitely apply to Delivery Hero.
What is the Interview Process?
The interview process usually consists of the following steps:
- Initial call with a recruiter (30min)
- Technical interview (1hr)
- System design interview (1hr) – for senior and above roles
- Hiring manager interview (1hr)
- Final bar raiser interview (1hr)
Depending on the role you applied to and location, the process may differ.
The technical and system design interviews will usually be with a Senior, Staff or Principal Engineer from the team you applied to. The hiring manager interview will be with your future supervisor (Engineering Manager or Director). The final bar raiser interview is performed by a senior engineer/manager from a different part of the organization to ensure that people are hired according to the same standards and criteria across Delivery Hero.
We aim to perform all the interviews within a 2-3 week period via video call.
A Pair Programming Approach
We strive to create programming challenges that are more like pair-programming exercises than high-pressure examinations. First advice, do not rush into coding the solution. Rather, identify the problem and communicate what you would do to solve the problem. As you communicate your thought processes both the direction in which you are taking to solve the problem but also if/when you get stuck* the interviewer will be better able to collaborate with you and offer suggestions or help where appropriate. We’ve all been on the other side of the interview process and understand the stress that comes with performing under pressure and will do all we can to create an environment for you to show off your talents and skills!
* If you forget the syntax to something or just have a momentary brain block speak up, we care more about the solution and the understanding of the problem than syntax.
Tips for Live Coding
First of all, it’s important to point out that we know that simple coding tests are not perfect. They cannot 100% accurately predict how you would work on a huge codebase within an international cross-functional team, developing a complex feature for millions of daily users. Nevertheless, they have been proven again and again to be helpful in assessing technical competence, communication and problem-solving skills – all things that are quite relevant to being a good engineer.
Interviewers want to enjoy discussing and solving an interesting engineering problem together. To do so, please consider the following hints:
- coderpad.io will be used to code together. You could try it here prior in order to become familiar with the IDE.
- Use the programming language you feel most comfortable in! We want to test your problem-solving and fundamental computer science skills (theory, algorithms, complexity, data structures, etc.) and not check frameworks or language specific knowledge. A rare exception might be if the position specifically requires a certain skill.
- Talk to the interviewer about what you are doing throughout the live coding, and share your thought process. Take your time to think and feel free to ask questions. If you need to be quiet to think, that’s also fine – just let the interviewer know. Listening to other interviews might help you as well: interviewing.io/recordings
- Get things done! In the end, we can only evaluate the code you write. If you can think of multiple solutions, discuss the preferred approaches with the interviewer, if not just start with a straightforward simple solution and explore how to improve it afterwards.
- Avoid Trial-and-Error coding. During the development, you should not execute your code ongoingly, but rather wait until you think it’s good to run it. And if there are bugs, that’s not a problem at all but a good chance to show your debugging skills.
- Practice! Even experienced senior engineers can get a little rusty at quickly coding an algorithm and solving a small math problem, as this is not what you or the engineers at Delivery Hero do on a daily basis. Therefore we recommend spending some time on sites like careercup.com, projecteuler.net, hackerrank.com or topcoder.com to get yourself comfortable with solving problems under time constraints. To practice daily you can subscribe to the newsletter dailycodingproblem.com. If you prefer a good book, check out Cracking the Coding Interview.
- Complexity of algorithms might come up. So quickly read up again what O(nlogn) means.
- And last but not least “You are not your code!“. Even if the process might not be successful this time, you will hopefully have met great people and learned something. In any case, we will always treat you fairly and with the highest respect, hoping that we can work together in the future.
Tips for System Design Interviews
In the system design interview, you are given a real-world problem scenario and asked to build a design that solves it. This could be related to building a payment platform, designing a recommendation system or developing a stream processor, among others.
Build a design that scales, with maintainability, reliability, performance and costs in mind. Use your knowledge of key engineering principles and make sure your design includes some explicit points such as systems architecture, data models, algorithms, distributed computing, etc. Pay attention to any defined/potential constraints. Do not shy away from making trade-offs and decisions based on these factors. Overall, the goal of the system design interview is to show your tech expertise and problem-solving skills as well as people skills.
Here are some tips for preparing for the system design interview:
- Make sure you have a good understanding of the problem statement before diving into designing a solution. Ask questions, go through use cases to fully understand the problem and clarify functional and non-functional requirements.
- Break the problem down into smaller components, and propose a high-level design that outlines these components and the interaction between them. Do back-of-the-envelope calculations to validate if your design fits the scale curve. Ask questions about your design, and get buy-in. This will allow you to pull the interviewer into the problem space, work together and eventually demonstrate your ability to work collaboratively.
- Consider trade-offs and be prepared to make decisions between different design options. Explain the pros/cons of each decision and your reasoning based on the requirements.
- Once you have a high-level design, go deeper into the details of how each component should work. In some cases, it’s more important to dive into what data structure or algorithm should be used, whereas in others the focus might be on performance or reliability characteristics. Throughout the deep dive you may need to reiterate the design, don’t be afraid of doing it.
- It’s important to communicate in a structured way and effectively. Explain your thought process, make your assumptions clear, and be open to any feedback and suggestions.
- Stay up-to-date with the latest technologies and trends in the industry. This will help you make informed decisions and come up with innovative solutions.
- Practice! It’s key to success in any technical interview. Look for system design questions and practice solving them on a whiteboard. If you prefer a good book, check System Design Interview or System Design Interview: Volume 2. You can also check out the Byte Byte Go Newsletter for insights and tips.
If you made it until here you should already have all the information necessary for a successful interview process. If you want to know more about our Delivery Hero culture, we highly recommend checking out the following links:
- Delivery Hero Reliability Manifesto
- Delivery Hero Architecture Reviews
- Welcome to the Hero Hub: everything you need to know before moving to Berlin
Would you like to become a Hero? We have good news for you, join our Talent Community to stay up to date with what’s going on at Delivery Hero and receive customised job alerts!