GayleL.McDowell | Founder/ CEO
gayle in/gaylemcdgayle
Cracking the
Coding Interview
CareerCup
gayle in/gaylemcdgayleGayle Laakmann McDowell 2
Hi! I’m Gayle LaakmannMcDowell
Author Interview Coach Interview Consulting
<dev> </dev>
(CS) (MBA)
Evaluation
What it’s all about
01
Gayle Laakmann McDowell 4gayle in/gaylemcdgayle
Why?
Analytical skills
How you think
Make tradeoffs
Pushthrough hard
problems
Communication
Strong CS fundamentals
gayle in/gaylemcdgayle 5
z
Gayle Laakmann McDowell
What
is NOT
expected
To know the answers
To solve immediately
To code perfectly
(It’snice.Itjustdoesn’t
happen*.)
*Okayfine.Ithappenedonce,in2000+hiringpackets.
gayle in/gaylemcdgayle 6
z
Gayle Laakmann McDowell
What
IS
expected
Be excitedabout hard problems
Drive!
ïź Keep trying when stuck
ïź More than just “correct”
Pay attention to me!
Write real code
Showmehowyouthink!
Preparation
Getting ready
02
gayle in/gaylemcdgayleGayle Laakmann McDowell 8
Essential Knowledge
Data Structures Algorithms Concepts
ArrayLists Merge Sort BigO Time
Hash Tables QuickSort BigO Space
Trees(+Tries) &Graphs Breadth-FirstSearch Recursion
LinkedLists Depth-FirstSearch Memoization/ Dynamic
Programming
Stacks/ Queues BinarySearch
Heaps
gayle in/gaylemcdgayleGayle Laakmann McDowell 9
Preparation
MASTER Big O
ImplementDS/Algorithms
Practicewith interview questions
Code on paper/whiteboard
Mock interviews
PUSHYOURSELF!
gayle in/gaylemcdgayle 10
z
Gayle Laakmann McDowell
How
To
Approach
CrackingTheCodingInterview.com“Resources”
Doing It
7 Steps to Solve
03
gayle in/gaylemcdgayle 12Gayle Laakmann McDowell
step
Listen(for clues &details)
gayle in/gaylemcdgayle 13Gayle Laakmann McDowell
step
Draw an Example
Big Enough
General Purpose
+
gayle in/gaylemcdgayle 14Gayle Laakmann McDowell
step
Brute Force / Naive
Stupid&terribleisokay!
gayle in/gaylemcdgayle 15Gayle Laakmann McDowell
step
Optimize
Walk through brute
force
Look for optimizations
gayle in/gaylemcdgayle 16Gayle Laakmann McDowell
step
Walk Through
Know the variables
andwhen they change
gayle in/gaylemcdgayle 17Gayle Laakmann McDowell
step
Write Beautiful Code
gayle in/gaylemcdgayle 18Gayle Laakmann McDowell
step
Write Beautiful Code
RealCode
with
GoodStyle
and
UpfrontModularization
gayle in/gaylemcdgayleGayle Laakmann McDowell 19
Modularization
Gayle Laakmann McDowell 20gayle in/gaylemcdgayle
Modularize(Upfront!)
I’ve learned
nothing.
gayle in/gaylemcdgayle 21Gayle Laakmann McDowell
step
Testing
FIRST Analyze
ïź What’s it doing? Why?
ïź Anything that looks weird?
ïź Errorhot spots
THEN use test cases
ïź Small test cases
ïź Edge cases
ïź Biggertest cases
BUT

ïź Test code, notalgorithm
ïź Think as you test
ïź Think before you fix
gayle in/gaylemcdgayle 22
z
Gayle Laakmann McDowell
How
To
Approach
CrackingTheCodingInterview.com“Resources”
Solving &
Optimizing
4 Optimization/Solving Techniques
04
gayle in/gaylemcdgayle 24Gayle Laakmann McDowell
step
Optimize
Walk through brute
force
Look for optimizations
Gayle Laakmann McDowell 25gayle in/gaylemcdgayle
Techniquesto Develop Algorithms
BUD
Space and Time
Do It Yourself
Recursion
Gayle Laakmann McDowell 26gayle in/gaylemcdgayle
(A) Look for BUD
Bottlenecks
Unnecessary work
Duplicated work
Gayle Laakmann McDowell 27gayle in/gaylemcdgayle
What’s the bottleneck?
 Ex: countingthe intersection
[1, 12, 15, 19, 20, 21]
[2, 15, 17, 19, 21, 25, 27]
 Bottleneck:searching
B
Gayle Laakmann McDowell 28gayle in/gaylemcdgayle
What’s unnecessary?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
 Unnecessary: looking for d
U
Gayle Laakmann McDowell 29gayle in/gaylemcdgayle
What’s unnecessary?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
 Unnecessary: looking for d
U
Gayle Laakmann McDowell 30gayle in/gaylemcdgayle
What’s duplicated?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
 Duplicated: c, d pairs
D
Gayle Laakmann McDowell 31gayle in/gaylemcdgayle
What’s duplicated?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
 Duplicated: c, d pairs
D
c d c3 + d3

 
 

4 31 29855
4 32 32832
4 33 36001

 
 

5 59 205504
5 60 216125
5 61 227106

 
 

Gayle Laakmann McDowell 32gayle in/gaylemcdgayle
What’s duplicated?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
 Duplicated: c, d pairs
D
c3 + d3 (c, d)

 

29855 (4, 31)
32832 (4, 32),(18, 30)
36001 (4, 33)

 

205504 (5, 59)
216125 (5, 60),(45, 50)
227106 (5, 61)

 

Gayle Laakmann McDowell 33gayle in/gaylemcdgayle
What’s duplicated?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
D
Gayle Laakmann McDowell 34gayle in/gaylemcdgayle
What’s duplicated?
 Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000
D
Gayle Laakmann McDowell 35gayle in/gaylemcdgayle
(B)Space/TimeTradeoffs
Hashtables & other datastructures
Precomputing
Gayle Laakmann McDowell 36gayle in/gaylemcdgayle
Space/Time Tradeoffs  Precomputing
 Find rectangle at origin w biggest sum
6 5 -9 2
-2 -5 -2 7
3 -2 10 13
-8 -3 1 -2
 Brute force: compute all rectanglesand sums
Gayle Laakmann McDowell 37gayle in/gaylemcdgayle
Space/Time Tradeoffs  Precomputing
 Find rectangle at origin w biggest sum
6 5 -9 2
-2 -5 -2 7
3 -2 10 13
-8 -3 1 -2
Gayle Laakmann McDowell 38gayle in/gaylemcdgayle
Space/Time Tradeoffs  Precomputing
 Find rectangle with biggest sum
6 5 -9 2
-2 -5 -2 7
3 -2 10 13
-8 -3 1 -2
-+ + 10=
Gayle Laakmann McDowell 39gayle in/gaylemcdgayle
Space/Time Tradeoffs  Precomputing
 Find rectangle with biggest sum
6 5 -9 2
-2 -5 -2 7
3 -2 10 13
-8 -3 1 -2
-+ + 13=
Gayle Laakmann McDowell 40gayle in/gaylemcdgayle
(C)Do it yourself
Findpermutationsof swithinb
gayle in/gaylemcdgayleGayle Laakmann McDowell 41
find abbc in
babcabbacaabcbabcacbb
Gayle Laakmann McDowell 42gayle in/gaylemcdgayle
(C)Do it yourself
Findpermutationsof swithinb
ïź s = abbc
ïź b = babcabbacaabcbabcacbb
Findthem!
ïź 
 now how didyou actuallydoit?
Gayle Laakmann McDowell 43gayle in/gaylemcdgayle
(D)Recursion
 Use, but don’t cling to, recursion
“instinct”
 Trybottom-up
 “Backtracking”
 Draw call-tree
ïź Derive runtime
ïź Find repeated subproblems
 Subsets of a set
ïź {} {}
ïź {a}{},{a}
ïź {a,b} {},{a},{b},{a,b}
ïź {a,b, c} 

 Subsets of {S1
Sn-1} +Sn to each
Gayle Laakmann McDowell 44gayle in/gaylemcdgayle
Techniquesto Develop Algorithms
BUD
Space and Time
Do It Yourself
Recursion
gayle in/gaylemcdgayle 45
z
Gayle Laakmann McDowell
How
To
Approach
CrackingTheCodingInterview.com“Resources”
gayle in/gaylemcdgayleGayle Laakmann McDowell 46
Other Resources
Gayle.com
CareerCup.com
CrackingThe
CodingInterview.com
Or, follow me online
‱ facebook.com/gayle
‱ twitter.com/gayle
‱ gayle.com
‱ gayle@gayle.com
‱ quora.com
Gayle Laakmann McDowell 47gayle in/gaylemcdgayle
What Now?
Book signing, photos, etc. [withme!]
Mock interviews [withAWS!]
Code challenge [online!]
ïźhr.gs/mockathon

Cracking the Coding interview (Abbreviated) - aug 2016

  • 1.
    GayleL.McDowell | Founder/CEO gayle in/gaylemcdgayle Cracking the Coding Interview CareerCup
  • 2.
    gayle in/gaylemcdgayleGayle LaakmannMcDowell 2 Hi! I’m Gayle LaakmannMcDowell Author Interview Coach Interview Consulting <dev> </dev> (CS) (MBA)
  • 3.
  • 4.
    Gayle Laakmann McDowell4gayle in/gaylemcdgayle Why? Analytical skills How you think Make tradeoffs Pushthrough hard problems Communication Strong CS fundamentals
  • 5.
    gayle in/gaylemcdgayle 5 z GayleLaakmann McDowell What is NOT expected To know the answers To solve immediately To code perfectly (It’snice.Itjustdoesn’t happen*.) *Okayfine.Ithappenedonce,in2000+hiringpackets.
  • 6.
    gayle in/gaylemcdgayle 6 z GayleLaakmann McDowell What IS expected Be excitedabout hard problems Drive! ïź Keep trying when stuck ïź More than just “correct” Pay attention to me! Write real code Showmehowyouthink!
  • 7.
  • 8.
    gayle in/gaylemcdgayleGayle LaakmannMcDowell 8 Essential Knowledge Data Structures Algorithms Concepts ArrayLists Merge Sort BigO Time Hash Tables QuickSort BigO Space Trees(+Tries) &Graphs Breadth-FirstSearch Recursion LinkedLists Depth-FirstSearch Memoization/ Dynamic Programming Stacks/ Queues BinarySearch Heaps
  • 9.
    gayle in/gaylemcdgayleGayle LaakmannMcDowell 9 Preparation MASTER Big O ImplementDS/Algorithms Practicewith interview questions Code on paper/whiteboard Mock interviews PUSHYOURSELF!
  • 10.
    gayle in/gaylemcdgayle 10 z GayleLaakmann McDowell How To Approach CrackingTheCodingInterview.com“Resources”
  • 11.
    Doing It 7 Stepsto Solve 03
  • 12.
    gayle in/gaylemcdgayle 12GayleLaakmann McDowell step Listen(for clues &details)
  • 13.
    gayle in/gaylemcdgayle 13GayleLaakmann McDowell step Draw an Example Big Enough General Purpose +
  • 14.
    gayle in/gaylemcdgayle 14GayleLaakmann McDowell step Brute Force / Naive Stupid&terribleisokay!
  • 15.
    gayle in/gaylemcdgayle 15GayleLaakmann McDowell step Optimize Walk through brute force Look for optimizations
  • 16.
    gayle in/gaylemcdgayle 16GayleLaakmann McDowell step Walk Through Know the variables andwhen they change
  • 17.
    gayle in/gaylemcdgayle 17GayleLaakmann McDowell step Write Beautiful Code
  • 18.
    gayle in/gaylemcdgayle 18GayleLaakmann McDowell step Write Beautiful Code RealCode with GoodStyle and UpfrontModularization
  • 19.
    gayle in/gaylemcdgayleGayle LaakmannMcDowell 19 Modularization
  • 20.
    Gayle Laakmann McDowell20gayle in/gaylemcdgayle Modularize(Upfront!) I’ve learned nothing.
  • 21.
    gayle in/gaylemcdgayle 21GayleLaakmann McDowell step Testing FIRST Analyze ïź What’s it doing? Why? ïź Anything that looks weird? ïź Errorhot spots THEN use test cases ïź Small test cases ïź Edge cases ïź Biggertest cases BUT
 ïź Test code, notalgorithm ïź Think as you test ïź Think before you fix
  • 22.
    gayle in/gaylemcdgayle 22 z GayleLaakmann McDowell How To Approach CrackingTheCodingInterview.com“Resources”
  • 23.
  • 24.
    gayle in/gaylemcdgayle 24GayleLaakmann McDowell step Optimize Walk through brute force Look for optimizations
  • 25.
    Gayle Laakmann McDowell25gayle in/gaylemcdgayle Techniquesto Develop Algorithms BUD Space and Time Do It Yourself Recursion
  • 26.
    Gayle Laakmann McDowell26gayle in/gaylemcdgayle (A) Look for BUD Bottlenecks Unnecessary work Duplicated work
  • 27.
    Gayle Laakmann McDowell27gayle in/gaylemcdgayle What’s the bottleneck?  Ex: countingthe intersection [1, 12, 15, 19, 20, 21] [2, 15, 17, 19, 21, 25, 27]  Bottleneck:searching B
  • 28.
    Gayle Laakmann McDowell28gayle in/gaylemcdgayle What’s unnecessary?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000  Unnecessary: looking for d U
  • 29.
    Gayle Laakmann McDowell29gayle in/gaylemcdgayle What’s unnecessary?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000  Unnecessary: looking for d U
  • 30.
    Gayle Laakmann McDowell30gayle in/gaylemcdgayle What’s duplicated?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000  Duplicated: c, d pairs D
  • 31.
    Gayle Laakmann McDowell31gayle in/gaylemcdgayle What’s duplicated?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000  Duplicated: c, d pairs D c d c3 + d3 
 
 
 4 31 29855 4 32 32832 4 33 36001 
 
 
 5 59 205504 5 60 216125 5 61 227106 
 
 

  • 32.
    Gayle Laakmann McDowell32gayle in/gaylemcdgayle What’s duplicated?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000  Duplicated: c, d pairs D c3 + d3 (c, d) 
 
 29855 (4, 31) 32832 (4, 32),(18, 30) 36001 (4, 33) 
 
 205504 (5, 59) 216125 (5, 60),(45, 50) 227106 (5, 61) 
 

  • 33.
    Gayle Laakmann McDowell33gayle in/gaylemcdgayle What’s duplicated?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000 D
  • 34.
    Gayle Laakmann McDowell34gayle in/gaylemcdgayle What’s duplicated?  Ex: a3 + b3 = c3 + d3 (1 <=a,b, c, d<= 1000 D
  • 35.
    Gayle Laakmann McDowell35gayle in/gaylemcdgayle (B)Space/TimeTradeoffs Hashtables & other datastructures Precomputing
  • 36.
    Gayle Laakmann McDowell36gayle in/gaylemcdgayle Space/Time Tradeoffs  Precomputing  Find rectangle at origin w biggest sum 6 5 -9 2 -2 -5 -2 7 3 -2 10 13 -8 -3 1 -2  Brute force: compute all rectanglesand sums
  • 37.
    Gayle Laakmann McDowell37gayle in/gaylemcdgayle Space/Time Tradeoffs  Precomputing  Find rectangle at origin w biggest sum 6 5 -9 2 -2 -5 -2 7 3 -2 10 13 -8 -3 1 -2
  • 38.
    Gayle Laakmann McDowell38gayle in/gaylemcdgayle Space/Time Tradeoffs  Precomputing  Find rectangle with biggest sum 6 5 -9 2 -2 -5 -2 7 3 -2 10 13 -8 -3 1 -2 -+ + 10=
  • 39.
    Gayle Laakmann McDowell39gayle in/gaylemcdgayle Space/Time Tradeoffs  Precomputing  Find rectangle with biggest sum 6 5 -9 2 -2 -5 -2 7 3 -2 10 13 -8 -3 1 -2 -+ + 13=
  • 40.
    Gayle Laakmann McDowell40gayle in/gaylemcdgayle (C)Do it yourself Findpermutationsof swithinb
  • 41.
    gayle in/gaylemcdgayleGayle LaakmannMcDowell 41 find abbc in babcabbacaabcbabcacbb
  • 42.
    Gayle Laakmann McDowell42gayle in/gaylemcdgayle (C)Do it yourself Findpermutationsof swithinb ïź s = abbc ïź b = babcabbacaabcbabcacbb Findthem! ïź 
 now how didyou actuallydoit?
  • 43.
    Gayle Laakmann McDowell43gayle in/gaylemcdgayle (D)Recursion  Use, but don’t cling to, recursion “instinct”  Trybottom-up  “Backtracking”  Draw call-tree ïź Derive runtime ïź Find repeated subproblems  Subsets of a set ïź {} {} ïź {a}{},{a} ïź {a,b} {},{a},{b},{a,b} ïź {a,b, c} 
  Subsets of {S1
Sn-1} +Sn to each
  • 44.
    Gayle Laakmann McDowell44gayle in/gaylemcdgayle Techniquesto Develop Algorithms BUD Space and Time Do It Yourself Recursion
  • 45.
    gayle in/gaylemcdgayle 45 z GayleLaakmann McDowell How To Approach CrackingTheCodingInterview.com“Resources”
  • 46.
    gayle in/gaylemcdgayleGayle LaakmannMcDowell 46 Other Resources Gayle.com CareerCup.com CrackingThe CodingInterview.com Or, follow me online ‱ facebook.com/gayle ‱ twitter.com/gayle ‱ gayle.com ‱ gayle@gayle.com ‱ quora.com
  • 47.
    Gayle Laakmann McDowell47gayle in/gaylemcdgayle What Now? Book signing, photos, etc. [withme!] Mock interviews [withAWS!] Code challenge [online!] ïźhr.gs/mockathon