Phone Interview Prep:
Here are a couple tips for your interview :
Feel free to look at the CoderPad link prior to your interview to familiarize yourself with the environment.
Keep in mind, your interviewers are looking for clean code, code structure, and communication, other than working
solutions. Test for edge cases, or create tests for your code - it's definitely suggested! Also, talk through your solutions! If
something in your code isn't right, talk about why it isn't right, etc.
Good online resources:
Topcoder.com, projecteuler.net
Good books to study:
The Algorithm Design Manual by Steven Skiena
Cracking the Coding Interview by Gayle McDowell
--------------------------------------------------------------------------------------------------------------------------------
General Prep:
We believe in collaboration and sharing ideas. Most importantly, you'll need more information from the interviewer to analyze
and answer the question to its fullest extent.
● It’s OK to question your interviewer.
● When asked to provide a solution, first define and frame the problem as you see it.
● If you don't understand the question, ask for help or clarification.
● If you need to assume something, make sure to verbally check it’s a correct assumption. Describe how you want to
tackle solving each part of the question.
● Always let your interviewer know what you are thinking as he/she will be as interested in your process of thought as
your solution.
Also, if you're stuck, they may provide hints if they know what you're doing. Remember to listen
and don't miss a hint if your interviewer is trying to assist you!
Interviewers will be looking at the approach to questions as much as the answer:
● Does the candidate listen carefully and comprehend the question?
● Are the correct questions asked before proceeding? (important!)
● Is brute force used to solve a problem? (not good!)
● Are things assumed without first checking? (not good!)
● Are hints heard and heeded?
● Is the candidate slow to comprehend / solve problems? (not good!)
● Does the candidate enjoy finding multiple solutions before choosing the best one?
● Are new ideas and methods of tackling a problem sought?
● Is the candidate inventive and flexible in their solutions and open to new ideas?
● Can questioning move up to more complex problem solving?
--------------------------------------------------------------------------------------------------------------------------------
Frontend Preparation:
What to expect
At Uber, we put a strong emphasis on Javascript for our front-end engineers. While we do some interviewing
around HTML and CSS, we spend a good chunk of time focusing on vanilla JS. In house, we use React, Sass,
Browserify, etc. However, for our interviews we try to remain agnostic of frameworks, although you can use it in
your problem solving if you want. We love candidates who show strong commitment and passion, as well as
those who are team players. We want people to be excited about working at Uber, not just because of the
company, but because they enjoy the product, or have ideas on how to make us better. We want our team to
feel like owners of the business, and allow engineers to have that kind of impact whenever possible.
Interview Structure
● Technical Phone Interviews
○ 1 - 2 technical phone screens (45-60 minutes each). This will be a shared coding session where
you will be speaking with an interviewer, and programming a coding problem using CodePen
● Onsite Interview Sections
○ Architecture - We hire engineers who have a solid understanding of modern web application
architecture, data flow, and client-server interactions. You’ll have to design a project we’ll give to
you on a whiteboard. Making your thought process visible is key; the representations you will
use to lay out the different entities and their possible interactions matter, as well as things being
in the right place in your architecture. Some new constraints may be added during the interview
to test the flexibility of your architecture or uncover some weak points introduced in it.
Sample Question: Design Google Docs
○ Coding - We hire engineers who are passionate about the act of coding. In this interview, you’ll
be given a problem to solve using Javascript, CSS, and HTML. You’ll have your laptop (or we
can supply one) so you can use the dev environment you are most comfortable with.
We value getting to a working solution, how you got there, the speed at which you got there,
and your command of browser debugging tools. Make sure you talk through your plan of attack
with the interviewer. And again, don’t be afraid to clarify the requirements with your interviewer.
Oh yes, we don’t invent all algorithms by ourselves. This is not to test how well you memorize
them either, so feel free to leverage online resources during the session, but make sure you
understand what you are incorporating into your final solution.
○ Hiring Manager - Conversation with a manager on an engineering team. Sometimes includes
any of the above: coding, problem solving, architecture. Usually spend time talking about your
experience, teamwork, past projects, etc. He or she will dive a bit deeper into your background
and experience, asking various questions like: what's the most significant project you've worked
on, what are some learnings from that project, tell me about a time when…, etc.
○ Uber Culture/Bar Raiser - Ensure you would be a good fit for Uber, and Uber is a good fit for
you. This interview focuses on problem solving, passion for Uber, and your entrepreneurial
spirit. It's a good chance to ensure we are consistent with hiring top performers across the
company. The interviewer could be a manager or engineer. The questions can range from
questions about your background, a design question related to problems their team works on, or
a combination. The interviewer typically has been with the company for a while or has had a
large impact so far, so feel free to ask them great questions about Uber.
○ Within every section regardless of focus you will likely be asked to write some code, so bring
your laptop. Please make sure your development environment is prepared to write some
Javascript (Node or in browser), and other languages of your choice.
Resources to Prepare
● Be able to implement functions from the Lodash library and polyfill ES6 functions. (forEach, reduce,
map)
● Have strong understanding of Javascript language features (asynchronous programming, functional
programming, etc)
● HTML and CSS fundamentals
● Have a strong understanding of algorithms, data structures, how and when to apply them
● H5BP coding questions - https://github.com/h5bp/Front-end-Developer-Interview-Questions
● Sourcing.io FE questions - http://blog.sourcing.io/interview-questions
● ttps://github.com/gaylemcd/ctci
Cracking the coding interview (full stack) - h
● Interview questions for FE - http://www.thatjsdude.com/interview/index.html
● Khan4019 compiled frontend questions - h ttps://github.com/khan4019/front-end-Interview-Questions
● LeetCode Algorithms question (less frontend, but still good practice) -
https://leetcode.com/problemset/algorithms/
--------------------------------------------------------------------------------------------------------------------------------
Backend Preparation:
What to expect
At Uber backend engineers have to tackle a wide variety of problems and situations as we continue to innovate
and develop products. We expect engineers to be proficient in algorithms, problem solving, and designing
scalable fault-tolerant architectures. This includes being an expert at your programming language of choice
(even engineering managers have to be awesome coders). Effective communication is a vital attribute in any
engineer as you and your team move in the fast paced development environment at Uber, and as such is
something we look for in an engineer.
Interview Structure
● Technical Phone Interviews
○ 1 - 2 technical phone screens (45-60 minutes each). This will be a shared coding session where
you will be speaking with an interviewer (or interviewers), and tackle a coding problem using a
collaborative coding environment.
● Onsite Interview Sections
○ Architecture - Design a product from a systems perspective given requirements (think
interactions between different services/components/databases). Be prepared to have a
conversation about distributed systems, architectural decisions and tradeoffs. This usually
involves an open-ended conversation that includes diagrams and whiteboarding.
○ Coding - In this interview you should go from a problem and a blank screen to a working
program. These questions involve knowledge of data structures, and algorithms. This section
isn’t whiteboard coding, we want to see how you can function in an actual programming
environment.
○ Software Design - Design an application using OOP principles that can scale and handle
potential changes. This problem might also involve solving some problems involving data
structures and algorithms but with a less heavy emphasis on actual code than the Coding and
Debugging interview. We want to know if you can create a program from scratch with a solid
design.
○ Hiring Manager - Conversation with a manager on an engineering team. Sometimes includes
any of the above: coding, problem solving, architecture. Usually spend time talking about your
experience, teamwork, past projects, etc. He or she will dive a bit deeper into your background
and experience, asking various questions like: what's the most significant project you've worked
on, what are some learnings from that project, tell me about a time when…, etc.
○ Uber Culture/Bar Raiser - Ensure you would be a good fit for Uber, and Uber is a good fit for
you. This interview focuses on problem solving, passion for Uber, and your entrepreneurial
spirit. It's a good chance to ensure we are consistent with hiring top performers across the
company. The interviewer could be a manager or engineer. The questions can range from
questions about your background, a design question related to problems their team works on, or
a combination. The interviewer typically has been with the company for a while or has had a
large impact so far, so feel free to ask them great questions about Uber.
Resources to Prepare
● Brush up on some common algorithms and data structures
● If you were the lead engineer of a startup, how would you design their backend? Know basic
architecture topology and caching techniques
● Know OOP principles and design patterns
● Check out Glassdoor for interview questions
● ttps://github.com/gaylemcd/ctci
Cracking the coding interview (full stack) - h
● CareerCup - http://www.careercup.com/page
● LeetCode Algorithms question -
https://leetcode.com/problemset/algorithms/
Coding practice:
http://www.careercup.com/page?sort=comments
http://qa.geeksforgeeks.org/activity
https://www.interviewcake.com/
Uber engineering blog:
http://eng.uber.com/