480 likes | 636 Views
Cracking the Coding Interview. Advice and Strategies for Software Engineering and PM Interviews. Gayle Laakmann McDowell Founder / CEO, CareerCup.com Author of The Google Resume and Cracking the Coding Interview. My Background. Software Engineer @ Google, Microsoft & Apple
E N D
Cracking the Coding Interview Advice and Strategies for Software Engineering and PM Interviews Gayle Laakmann McDowell Founder / CEO, CareerCup.com Author of The Google Resume and Cracking the Coding Interview McDowell | CareerCup.com | Palantir Oct 2012
My Background • Software Engineer @ Google, Microsoft & Apple • 3 Years on Google Hiring Committee • Interviewed 150+ candidates • Founder of CareerCup.com • Author • Cracking the Coding Interview • The Google Resume McDowell | CareerCup.com
Slides Posted Online posted at: www.technologywoman.com Click “Speaking Engagements” McDowell | CareerCup.com
Interview Process McDowell | CareerCup.com
Big Company Evaluation (Devs) Testing aptitude, not knowledge McDowell | CareerCup.com
Start-Ups (Devs) • “Hit the ground running” • Do you know “their” technologies? • Entrepreneurial • Have you started things? • How much direction do you need? • Personality • Will you fit with the team? but… it varies! McDowell | CareerCup.com
PMs (Microsoft) & APMs (Google) • Communication Skills • User-Focused Thinking • Passion for Technology • Analytical Skills • Technical Skills (position dependent) McDowell | CareerCup.com
How You Are Judged How did you do RELATIVE to other candidates on the SAME question? It’s not about how quickly you solved the problem… … it’s about how quickly you solved it relative to other candidates. McDowell | CareerCup.com
Resumes & Application Process McDowell | CareerCup.com
How to Get an Interview • Build something! • Make a kick-ass resume Got a weekend free? It’s really not that hard. McDowell | CareerCup.com
How We Review Resumes • Pull resume out of giant stack • Spot-check: company names, positions, projects, schools. • Skim bullets for coding / impact “Glanced at,” not read. 15 – 30 seconds Reject Interview • Go to next resume & whine about how many more you have left. McDowell | CareerCup.com
How CS Resume Should Look Observe: No Objective! Objectives / summaries are almost always useless. One Page Only! Unless > 10 years exp. A Real Resume Format with organized columns Short (1 – 2 line bullets) Focus on Accomplishments not responsibilities GPAif at least 3.0 max (in-major, overall) 3 – 4 Projects Courses & independent Finished or unfinished List of Technical Skills Short! Cut the “fluff.”
Behavioral Questions McDowell | CareerCup.com
Goals of Your Answer • Answer the question. • Deliver a goodanswer. • Communicate well. • Nugget First • S.A.R.: Situation, Action, Result McDowell | CareerCup.com
Preparing for Behavioral Qs • Create Preparation Grid for Projects + Behavioral Grid [for PM & less tech. roles] McDowell | CareerCup.com
Technical SkillsInterview Prep McDowell | CareerCup.com
How to study • Study the basics • Complex algorithms generally unnecessary. • Practice solving questions • Don’t memorize! • See: CtCI & CareerCup.com • Push yourself! • Write code on paper McDowell | CareerCup.com
Data Structures • How to implement • When to use (pros / cons) McDowell | CareerCup.com
Algorithms • Implementation • Space vs. Time Complexity McDowell | CareerCup.com
Concepts • Not just a concept – know how to code! McDowell | CareerCup.com
Technical SkillsMastering the Interview McDowell | CareerCup.com
Types of “Serious” Questions • Product Design Questions • Estimation Questions • Software Engineering Questions • Coding & Algorithms • Object Oriented Design • Scalability McDowell | CareerCup.com
Product Design Questions How would you design an calculator for the blind? Design an elevator for a building. Pick a Google product. How would you improve it?
Product Design Questions: Why? • Communication & Structured Thinking • Ability to understand the user • Creativity • Business instincts / skills
Product Design Qs: Approach • Ask questions to resolve ambiguity • Understand the user • Structure the problem • Solve piece by piece
Estimation Questions How many tennis balls can fit in an SUV? How much money does Gmail make from ads every year? How much do New Yorkers spend on electricity each year?
Estimation Qs: Why? • Problem Solving • Basic Quantitative Skills
Estimation Qs: How to Approach • Ask questions to resolve ambiguity • Don’t make assumptions (yet) • Outline / Structure Your Approach • Break down the components • Assume numbers when necessary • State assumptions explicitly • Round numbers to make your math easier • Sanity Check • Do your numbers make sense?
Technical Questions • Ask Questions! • Questions are more ambiguous than they appear • Talk out loud • Show us how you think • Think critically • Does your algorithm really work? What’s the space and time complexity? • Code slowly and methodically • It’s not a race • Test your code • And make CAREFUL fixes. If you’ve heard a question before, admit it. McDowell | CareerCup.com
What does a “good coder” do? • Be methodical. Don’t try to rush. • Reasonably Bug Free • Thorough testing (and careful fixing) • Check for error conditions • Clean coding • Use other functions • Good use of data structures (define own if useful) • Concise and readable McDowell | CareerCup.com
Types of Interview Questions “Design a Parking Lot” “Reverse a Linked List” “Design a Web Crawler” McDowell | CareerCup.com
Types of Interview Questions McDowell | CareerCup.com
Algorithm Qs: Pattern Matching Q: Write code to reverse the order of words in a sentence. “dogs are cute” “cute are dogs” Similar to: reverse characters in a string. “dogs are cute” “etuc era sgod” A: Reverse full string, then reverse each word. McDowell | CareerCup.com
Algorithm Qs: Simplify & Generalize Q: Design algorithm to figure out if you can build a ransom note (array of strings) from a magazine (array of strings). Simplify: what if we used characters instead of strings? Build array of character frequencies. Generalize: how we can extend answer to words? A: Build hashtable from word to frequency. McDowell | CareerCup.com
Algorithm Qs: Base Case & Build Q: Design algorithm to print subsets of set. {a, b, c} {}, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c} S({}) {} S({a}) {}, {a} S({a, b}) {}, {a}, {b}, {a, b} S({a, b, c}) ? A: Build S(n) by cloning S(n-1) and adding n to the cloned sets. McDowell | CareerCup.com
Algorithm Qs: Data Structure Brainstorm Q: There are 10^10 possible phone #s. Explain how you could efficiently implement assignSpecificNum(num)and assignAnyAvailableNum(). Array (sorted)? Too slow to remove num. Linked list? Too slow to find specific num. Hash table? Can’t iterate through free nums. Tree? Ah-ha! A: Store free #s in BST. Remove when taken. McDowell | CareerCup.com
How To Solve Algorithm Questions Compare to similar problems. Solve first for a simplified / tweaked problem. Solve for n = 1, and build solution for n = 2. Try to apply data structure to solve problem. McDowell | CareerCup.com
Object Oriented Design Handle Ambiguity What about the question is ambiguous? Design the Core Objects What are the main objects in the system? Analyze Relationships How are the objects related to each other? Investigate Actions What are the main operations? McDowell | CareerCup.com
Object Oriented Design Handle Ambiguity Is it a single restaurant, or part of a chain? Design the Core Objects Guest, Party, Table, Server, Host, … Analyze Relationships Server and Host are both Employees… Investigate Actions A Party is seated at a Table by a Host… How would you design the data structures and objects for a restaurant? McDowell | CareerCup.com
System Design Handle Ambiguity What about the question is ambiguous? Make Believe Pretend there wasn’t so much data & solve Get Real Go back to the real problem. What breaks? Solve Problems Solve the issues you just found. McDowell | CareerCup.com
System Design Given millions of documents, find all documents which contain a list of words. Handle Ambiguity Do the words need to be in a specific order? Make Believe Assume everything can fit on one machine. Get Real Must split up data across machines. Solve Problems Divide hash table by file or by keyword? McDowell | CareerCup.com
Whew! All Done! <Gulp> This is a lot of stuff. Do I need to get everything right? McDowell | CareerCup.com
Evaluation is RELATIVE, not absolute. <Gulp> This is a lot of stuff. Do I need to get everything right? It’s not about how quickly you solved the problem… </Gulp> … it’s about how quickly you solved it relative to other candidates. McDowell | CareerCup.com
So RELAX! Interviews are supposed to be hard! Everyone makes mistakes. Everyone! McDowell | CareerCup.com
Final Thoughts McDowell | CareerCup.com
After Your Interview • Follow-up with your recruiter • No response != rejection • You have no idea how well/poorly you did. • Seriously. I know you think you do. But you don’t. • Lots of randomness. • So if you fail, get up and try again. McDowell | CareerCup.com
Other Resources • CareerCup.com • Interview Videos • iPhone App • Resume Review • Mock Interviews Sold Today Signed! {ask to add your name too} 5 stars! today today $15 $25 • Or, follow me online at… • twitter.com/gayle • facebook.com/gayle • technologywoman.com • gayle@careercup.com McDowell | CareerCup.com