CRACKING THE CODING
INTERVIEW
Nitish Upreti
Feedback Please !
( I am a Data Junkie… ) www.meet.ps
For the love of Computer Science
…
Building Amazing Products
Working with the best of
People …
Have an Impact !
Head start in Building your career …
Money & Free Food ?
Start Your own Company ?
Working for the Top
Technology Companies.
(Computer Science-Engineering majors are most pampered and well paid…)
Easy : Just clear the coding interview ?
Some of us are scared !
How does the interview work?
What do they judge me on?
Do’s / Don’ts
Are these interviews fair?
Can you judge someone in few hours or a day?
Think of Interviews as acing SATs /
GREs …
( Whether they are any good is debatable!)
GAME PLAN
1.
Study all my subjects well.
:
2.
Finish all Assignments/Projects.
3.
Get an awesome GPA.
There is more to it …
Would you practice for a Sprint by running marathons each day?
Take Away….
Preparations Matter!
“Sweat now so you don't bleed later.
”
Lets get cracking!
Before the Interview…
How to get interviews at the first place?
• Career fairs.
• Referrals from friends and seniors. (Almost guarantees an interview)
• Be active on LinkedIn.
• Visit Hackathons.
• Start competing on HackerRank / TopCoder.
• Email cto_first_name / ceo_first_name @startup
Quick Preliminaries
• Perfect your resume
(No spelling mistakes / grammar errors)
ACM provides help!
• Prepare Behavioral Questions
Judging You On :
What you learned?
Most Challenging Problems ?
Most Interesting Problem ?
Hardest Bug ?
Enjoyed Most ?
Conflict with Teammates ?
So I got the call
How does the Interview Process work ?
( At least for the Popular Ones …. )
Interview Process
• Starts with an Email Conversation.
• Scheduling day/time for Phone or Campus screening
• Internships : Usually 2 telephonic rounds.
• Full time : 5-7 interviews
• PSU Microsoft experience is an exception when it comes to interviews. (Why?)
• You are notified in a couple of weeks.
• Details are in the Book!
How should I prepare ?
White Board Coding ….
(Without the cozy compiler : Marathon and
Sprint metaphor again!)
What should I prepare?
Almost Comprehensive List
…
• Elementary DS :
– Arrays, Stacks & Queues
– Linked Lists
– Trees ( Binary Trees, Binary Search Trees)
– Hash Tables
• Asymptotic Analysis
• Sorting with their Runtimes.
• Recursion !
• String Problems
• Good to know : TRIE and Priority Queue (
BinaryHeap)
Advanced
• Divide and Conquer Algorithms.
• Greedy Algorithms
• Dynamic Programming
• Graph Algorithms
• Some Design Problems
During the Interview …
Key things to keep in mind
• All questions are language independent.
• Start Talking ( Interviewers nudge you towards the right direction )
• Think before you start / Don’t rush.
• Propose a variety of solutions idea before settling on coding a particular idea.
• Sound Enthusiastic !
• Ask questions in the end : How do you work?
What do you work on?
Make Or Break it !
• Think about Corner cases.
• Test your code once your done.
• Be Space / Time Efficient.
( Distinguishes a Good Vs Bad Interview)
Lets dissect a real interview question !
Given a set of integers, is there a subset of size k whose sum is zero?
Array = { 3, 9, 1 , 6 , 0, 2 }
Sum = 8
I am STUMPED !
Let us start talking ….
Brute Force Anyone ?
Find all the possible sums and if the given sum is one of them, we have a solution!
Brute Force could be a good start.
Don’t code it yet !
Runtime Analysis ?
O ( N 2 )
Can we do better?
At Google’s scale there will be
Billion Numbers !
Sorting + Binary Search ?
O (N log N) + O (log N)
How about a Hash Table
Solution?
First Passes :
Create a Map (HashMap)
Array = { 3, 9, 1 , 6 , 0, 2 }
Hash = { (3,T) (9,T) (1,T) (6,T)
(0,T)(2,T) }
Scan through the keys & look for remainder.
Corner Case : Duplicate Elements !
Array = { 3, 9, 1 , 6 , 0, 4 }
Hash = { (3,T) (9,T) (1,T) (6,T)
(0,T)(4,T) }
Solution : Store Count !
Time : O ( N )
Space : O ( N )
MUST READ Books …
Before I Finish …
GSoC 2014 Is On!
Feedback / Questions ?