A guide to understanding the coding interview process at top tech companies like Google, Facebook or a unicorn startup like Uber.
Checkout our Bootcamps to help in coding, Data structures and algorithms, behavior and situational interview
http://programminginterviewprep.com/
2. Who are we?
Software Engineers with a passion for programming, problem
solving and the community
ProgrammingInterviewPrep.com
3. What is an interview (and what it is
not..)?
An interaction to determine candidate’s problem solving ability
● Given a problem, how does candidate approach it
○ Structured approach - Decomposing, patterns, sub-problems, simplifying etc..
● Clean and modular code
● Working code, potentially bug free
● How well ideas are communicated
ProgrammingInterviewPrep.com
4. The process
Talk to
Recruiter
On-site
Phone
Interview
Coding
Test
Hiring
Committee
1. Practice tools
- Leetcode
- InterviewBit
- Geeksforgeeks
2. Efficient vs complete code
3. Document a better approach
if you cannot code it
4. Readable, well commented
code
1. Coding test on a shared
document
2. Communication of ideas
important
3. Be sure to discuss your
solution before you start
coding
Several rounds, ~45 minutes
- 5 minutes : Resume
- 35 minutes : Whiteboarding
- 5 mins : Questions
Design questions and hiring
manager interview.
ProgrammingInterviewPrep.com
5. Approaching a programming problem
Start with an Example
Communicate
Brute Force
Optimizations
Trade-offs
Write code
Test your code
1. Solve using pen and
paper
1. Solve a simplified
version of problem
1. Datastructures
1. Algorithms
1. Design patterns
- sliding window
- Array out of bounds
- Null/None values
- Hashmap keys present?
- Recursion base case
- Start after you are clear
on solution
- Clean code
- Modular code
- Start with high level
logic
ProgrammingInterviewPrep.com
6. Approaching a problem - example
Given an array of Integers, check if there are duplicates.
[1,3,6,9,22,6,3] True
[1,3,6,9,22,8,4] False
ProgrammingInterviewPrep.com
7. Approaching a problem - example
(continued)
for(int i=0; i<array.length; i++) {
for(int j =i+1; j<array.length; j++) {
if (array[i] == array[j])
return true;
}
}
return false;
Brute-force
ProgrammingInterviewPrep.com
8. Approaching a problem - example
(continued)
Hash
Tables
Stacks
Queues
Heaps
Sort
Arrays.sort(array);
for (int i =0; i<array.length ; i++) {
if (array[i] == array[i+1]) {
return true;
}
}
return false;
Sort Hash
Tables
ProgrammingInterviewPrep.com
9. Can you spot a bug in the code?
Approaching a problem - example
(continued)
Arrays.sort(array);
for (int i =0; i<array.length ; i++) {
if (array[i] == array[i+1]) {
return true;
}
}
return false;
ProgrammingInterviewPrep.com
10. Types of questions
● Knowledge based questions
● Programming language questions
● Core computer science concept questions
● Data Structures
Arrays
Hash
Tables
Stacks
And
Queues
Linked
Lists
Trees
and
Graphs
Heaps
ProgrammingInterviewPrep.com
12. Good habits that will stack odds in
your favor
● Solve problems passively while doing chores like walking your dog
● Find a buddy
● Whiteboard practice! (but don’t neglect to execute your code)
● If stuck during interview, communicate what you are thinking
● Don’t start interviewing with your dream company; go bottom up
● Negotiating power: Your power is the # of competing job offers
ProgrammingInterviewPrep.com
13. Offerings
● Bootcamps
○ Covers the crux of programming interviews
■ Time complexity
■ Data structures
■ Algorithms (Advanced Recursion, Dynamic Programming, Graphs etc.)
■ System Design / OOP
○ Common interview patterns for efficient solutions
○ Interview prep techniques to write efficient and error free code under time pressure.
○ Behavior and situational Interview Prep
○ Resume and LinkedIn Inputs
○ Mock interview
○ 2 Weekend ( 4 hrs. each day)
ProgrammingInterviewPrep.com
14. Another coding question..
- Max Subarray Problem
[−2, 1, −3, 4, −1, 2, 1, −5, 4] ⇒ 6
ProgrammingInterviewPrep.com