(image modified from Carsten Kessler on Flickr, CC-BY-2.0)
Every day engineers at Lyft are hard at work building products that are affecting the way millions of people are getting around their cities. Constantly working through challenges of scale, optimizing our network of passengers and drivers, and making complicated products intuitive and easy to understand for our users, at Lyft we’re always looking for great additions to our growing engineering team. If you’re interested in helping us build the future of transportation, we’d love to talk more. Through our interview process we aim to share a little bit more about Lyft, how our teams work, and give you a chance to show off some of your skills. Engineering interviews generally take place over the course of two phases, starting with an initial phone screen before transitioning into a day of on-site interviews. To ensure that you’re comfortable with this process and know what to expect, we’ve outlined our interview process in more depth here.
After reviewing your resume, you’ll be paired with a recruiter who will be your guide through the interview process at Lyft. To get you two acquainted, we’ll start with a short 30 minute conversation that will help your recruiter get to know you and make sure we’re setting you up to talk to people that can speak to the things you’re most interested. In order to keep you fully informed on what’s happening throughout the process, your recruiter will be your primary contact for questions about what’s coming next, and will ensure that the pace works well for you. Additionally, if there’s anything that’ll make you feel at ease — or if you need any accommodations — your recruiter will be available to ensure that you have everything you need from start to finish.
Your Technical Phone Screens
Our interviewers will begin with some “getting to know you” questions. For example, we’ll ask about previous positions, what gets you excited, and what you are looking for in your next position. We hope you’ll be comfortable enough with your interviewer to highlight your proudest moments in projects or work you’ve done. Our interviewers will then transition the conversation to a shared Coderpad (a shared workspace that supports over 20 different languages; you should work with your most fluent choice). You’re even able to run and debug your code right in the browser.
After getting the prompt for the exercise, we encourage you to talk through how you’re thinking about approaching the problem. Our interviewers will be able to give you some feedback, and then you’re free to go to work like you normally would. Are you a “print debugger?” Do you prefer to write tests and work backwards? Sketch out some psuedo-code? Show us how you work. If anything is unclear, don’t be afraid to ask questions. Your interviewer will be there to guide you, work through any issues with you, and can handle any queries you might have. When you’re getting close to finishing, walk through your code with the interviewer one last time. Your interviewer might have some clarifying questions, or might help you find a couple bugs; work until you’re both satisfied with the solution. Finally, the interviewer will save some time at the end for you to get any of your questions about Lyft answered. Definitely zero in on anything you’d find interesting, especially since we will use that information to potentially align you with future interviewers who can go deeper on areas you find fascinating.
Your On-Site Interview
If you make it through the phone screen, congratulations! We’re very proud of our office and can’t wait to share it with you. We’ll even treat you to lunch! During this part of the process, we’ll get a better understanding of your skills through a series of in-person interviews. These are not meant to be grueling interrogations, regurgitation of memorized concepts, or puzzles with a trick solution. We want to see how you think and how you solve problems. We’re more interested in how you overcome mistakes rather than if you make them. We want to give you the opportunity to be yourself and demonstrate your best skills. Within that framework, you’re likely to encounter three different types of interviews.
Problem Solving/Data Structures/Algorithms: In these interviews, we pair you with an interviewer who will present a problem, and you’ll come up with an algorithm or function to solve it. We’re looking for you to be able to bounce ideas around about different approaches, discuss trade-offs, and work through edge cases. Your interviewer will be there to help out and give some feedback on ideas you might have. Traditionally we’ve performed these with a whiteboard, but you’re also welcome to break out your laptop — or ask that one be provided — if you tend to think better in an IDE with the ability to see real input and output.
Architecture and Design: We spend a good amount of time talking to each other about how to build our systems and model our data. There are many ways to solve these problems and they all have different strengths and weaknesses. We’re hoping to get a snapshot of the way you think about these problems and communicate decisions. You’ll work with your interviewer to potentially:
- design a way for your systems to communicate
- propose an API
- model out some database tables
- or perform other tasks where you’ll be sketching out a solution involving many interconnected parts
This is an opportunity to go deeper into your experience. How have you seen things fail? What scaling issues are you anticipating? Where are you making sacrifices in order to make gains elsewhere? Being able to articulate trade-offs is incredibly valuable when working in Lyft’s ever-changing market.
Laptop Assignment: As much as possible, we want our interview process to get you into environments approximating a normal work day. In that vein, one of our newer additions is the laptop programming exercise. For these challenges, our interviewers will present you with a problem statement, and we’re looking for you to put together a small module that takes in an input file and produces output to a different file. At 90 minutes, it’s slightly longer than our other interviews. You’ll start off by talking through your ideas with your interviewer. Once you settle on your design, you’re free to hit the keyboard and work like you would normally, including access to Google and any third-party libraries you think are helpful. Do you prefer listening to your favorite music? Maybe you prefer small talk and jokes while you work? Or do you prefer to work in a quiet room? We’ll cater to an environment that enables you to perform your best. After you’re finished, submit it via a provided private link and we’ll have it graded by two of our engineers. For the graders, correctness is most important but they’ll also be looking at code quality, performance, and test coverage.
Leave Excited: We’re hoping that at the end of the day you’ll be as excited about Lyft as we are. Over the course of the day you’re going to meet a variety of people from multiple teams with many different journeys to and through Lyft. We want to share our stories with you and ensure that you’re getting all your questions answered. So much so that we leave a 30-minute closing conversation with one of our engineering managers dedicated to any questions or feedback you have.
Some General Tips
A couple of notes about our process:
Choose Your Tools: We’re not attached to whiteboards. At the same time, we understand many candidates do their interview preparation with them in mind. Let your interviewer know the toolset for which you’re most comfortable. If you’ve got your presentation skills down and feel best with a whiteboard marker in your hand, then we’ll have fresh ones ready. On the other hand, if you operate best in your favorite IDE with syntax highlighting and shortcuts then go ahead and bring your laptop — or ask your recruiter about having one provided for your interviews.
Take Time to Think: One morning, I tried to tie my shoes while brushing my teeth; it didn’t work. One of the most common pieces of advice we see in technical interviews is to “let the interviewer know what you’re thinking.” It’s a great piece of advice but at times can scramble your brain, similar to brushing your teeth while tying your shoes. Remember that talking and thinking are two activities that may not be best done simultaneously, so don’t be afraid to step back and say “hold on I want to think about X for a second.” When you’ve had a second to catch up, share your thoughts with the interviewer and then keep moving.
Build on Previous Ideas: It’s entirely possible you’re going to get stuck at various points during the interview. This is common in our day-to-day work as well. Bounce ideas off your interviewer, try an alternative, or go back and see if there’s something simpler you can solve. Many candidates work through a couple different solutions before finding one that makes them happy, so don’t get too worried if it’s not perfect on your first try. We hit roadblocks pretty often — navigating them is the exciting part.
Be Yourself: Throughout your series of interviews there will be opportunities where we’re not looking for a single specific answer but for you to share how you arrive at your destination. By sharing your experiences, how you’re coming to your decisions, and what you’ve learned so far, we learn a lot about what you can add to the team. The best products are built by diverse teams, but that only works when people can be their authentic selves.
After the Interview
We should be able to get back to you after a couple of days. Regardless of how the day went, we’d love to hear more from you, and definitely reach out to your recruiter if you have additional questions. We’re happy to put you in touch with any of your interviewers or other people who’ll help make the next steps easier for you. Feedback is always appreciated regardless of the outcome; we’re always looking to make our interview process better.
Are You as Excited as We Are?
Head over to our careers page and check out some of the job listings. If you’d like more preparation, consider attending our free technical interview prep event at LyftHQ this Thursday, August 17th led by Cracking the Code Interview’s Gayle Laakmann McDowell. Hope to see you around soon!