cracking the coding interview code chix - oct 2012

Post on 18-Oct-2014

1.840 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Cracking the Coding Interview

Advice and Strategies for Software Engineering and PM Interviews

McDowell | CareerCup.com | CodeChixOct 2012

Gayle Laakmann McDowellFounder / CEO, CareerCup.com

Author of The Google Resume and Cracking the Coding Interview

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

My Background

• Software Engineer @ GOOG, MS & Apple– 3 Years on Google Hiring Committee– Interviewed 150+ candidates

• Founder of CareerCup.com– 8000+ tech interview questions

• Author– Cracking the Coding Interview – The Google Resume

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Slides Posted Online

posted at:www.technologywoman.com

Click “Speaking Engagements”

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Process

Evaluation

Structure

Applying

Experience

Resume

Soft Skills

Preparation

Interview

Tech Skills

Preparation

Interview

Interview Process

McDowell | CareerCup.com

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

“Elite” Tech Companies

IntelligenceCodingSkills

PersonalityExperience

Testing aptitude, not knowledge

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Start-Ups

• Coding + Intelligence• “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

Technical SkillsBehavioralApplying

Process

How You Are Judged

How did you do RELATIVEto other candidates on

the SAME question?

… it’s about how quickly you solved it relative to

other candidates.

It’s not about how quickly you solved the problem…

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

PM Roles

• Communication Skills• User-Focused Thinking• Passion for Technology• Analytical Skills• Technical Skills (position dependent)

Resumes & Application Process

McDowell | CareerCup.com

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

How to Get an Interview

• Your “Pedigree”– Education– Work Experience– Projects– Github / Online Profile

• Make an awesome resume

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

How We Review Resumes

1. Pull resume out of giant stack2. Spot-check: company names,

positions, projects, schools.3. Skim bullets to see if you’ve

written real code.

InterviewReject

4. Go to next resume & whine about how many more you have left.

“Glanced at,” not

read.15 – 30 seconds

How CS Resume Should Look

Short (1 – 2 line bullets)

3 – 4 ProjectsCourses & independentFinished or unfinished

List of Technical Skills

Short! Cut the “fluff.”

GPA if at least 3.0max (in-major,

overall)

One Page Only!Unless > 10 years

exp.

A Real Resume Formatwith organized columns

Focus on Accomplishmentsnot responsibilities

Observe: No Objective!

Objectives / summaries are almost always

useless.

Behavioral Questions

McDowell | CareerCup.com

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Communication Goals

• Answer the question.• Deliver a *good* answer.• Communicate well.

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Preparing for Behavioral Qs

• Create Preparation Grid for ProjectsOS Project Amazon Intern.

Enjoyed

Hated

Most Challenging

Hardest Bug

+ Behavioral Grid [for PM & less tech. roles]

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Structure 1: Nugget First

• Lead with your “thesis” / nugget– Grabs the listener’s attention– Gives them context for where you’re going.

A: I’m most proud of the way I re-architected the …

Q: What accomplishment are you most proud of?

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Structure 2: S.A.R.

ituationctionesult

SAR

What was the issue?

What did you do about it?

What was the impact?

Technical SkillsInterview Prep

McDowell | CareerCup.com

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

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

Technical SkillsBehavioralApplying

Process

Data Structures

• How to implement• When to use (pros / cons)

Linked Lists Stacks Queues

Trees Tries Graphs

Vectors Heaps Hashtables

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Algorithms

• Implementation• Space vs. Time

ComplexityQuick Sort Merge Sort

Tree Insert / Find Binary Search

Breadth-First Search

Depth-First Search

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

Concepts

• Not just a concept – know how to code!

Threading System Design & Scalability

MemoryManagement

Recursion Probability + Combinatorics Bit Manipulation

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

How to Learn CS Fundamentals?

• Necessary for “elite” tech companies– Not necessarily otherwise (check interview

questions)

• MIT Open Courseware– Freshman / sophomore level DS & Algo

courses

• Books– CLRS (Algorithms)

• Online tutorials / classes (Coursera, etc)

Technical SkillsMastering the Interview

McDowell | CareerCup.com

McDowell | CareerCup.com

Technical

Estimation

Product Design

Types of “Serious” Questions

1. Product Design Questions 2. Estimation Questions3. Software Engineering Questions– Coding & Algorithms– Object Oriented Design– Scalability– Factual / Trivia / Language-Based

Technical

Estimation

Product Design

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?

Technical

Estimation

Product Design

Product Design Questions: Why?

• Communication & Structured Thinking• Ability to understand the user• Creativity• Business instincts / skills

Technical

Estimation

Product Design

Product Design Qs: Approach

1. Ask questions to resolve ambiguity2. Understand the user3. Structure the problem4. Solve piece by piece

Technical

Estimation

Product Design

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?

Technical

Estimation

Product Design

Estimation Qs: Why?

• Problem Solving

• Basic Quantitative Skills

Technical

Estimation

Product Design

Estimation Qs: How to Approach

1. Ask questions to resolve ambiguity– Don’t make assumptions (yet)

2. Outline / Structure Your Approach3. Break down the components– Assume numbers when necessary– State assumptions explicitly– Round numbers to make your math easier

4. Sanity Check– Do your numbers make sense?

McDowell | CareerCup.com

Technical

Estimation

Product Design

How to Solve Tough Problems

1. Ask Questions!– Questions are more ambiguous than they appear

2. Talk out loud– Show us how you think

3. Think critically– Does your algorithm really work? What’s the space

and time complexity?

4. Code slowly and methodically– It’s not a race

5. Test your code– And make CAREFUL fixes.

McDowell | CareerCup.com

Technical

Estimation

Product Design

What does a “good coder” do?

• Code in top-left of whiteboard• Pseudocode first (if necessary)• 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

Technical

Estimation

Product Design

Types of Interview Questions

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

McDowell | CareerCup.com

Technical

Estimation

Product Design

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.

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

McDowell | CareerCup.com

Technical

Estimation

Product Design

Algorithm Qs: Simplify & Generalize

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

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

Technical

Estimation

Product Design

Algorithm Qs: Base Case & Build

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

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

Technical

Estimation

Product Design

Algorithm Qs: Data Structure Brainstorm

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

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

Technical

Estimation

Product Design

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

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

Technical

Estimation

Product Design

Whew! All Done!

<Gulp> This is a lot of stuff. Do I need to get

everything right?

Coding & Algorithms

Pattern Matching

Simplify & Generalize

Base Case & Build

Data Structure Brainstorm

Object Oriented Design System Design

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

<Gulp> This is a lot of stuff. Do I need to get

everything right?

</Gulp>

Evaluation is RELATIVE, not absolute.

… it’s about how quickly you solved it relative to

other candidates.

It’s not about how quickly you solved the problem…

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

So RELAX!Interviews are supposed to be hard!

Everyone makes mistakes. Everyone!

Final Thoughts

McDowell | CareerCup.com

McDowell | CareerCup.com

Technical SkillsBehavioralApplying

Process

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

Technical SkillsBehavioralApplying

Process

Other ResourcesCareerCup.com• Interview Videos• iPhone App• Resume Review• Mock Interviews

Or, follow me online at…• twitter.com/gayle• facebook.com/gayle• technologywoman.com• gayle@careercup.com

5 stars!

top related