technical interviewing: a primer

45
Technical Interviewing: A Primer How to land that awesome job <3

Upload: rachel-sanders

Post on 22-Jul-2015

410 views

Category:

Technology


1 download

TRANSCRIPT

Technical Interviewing:

A PrimerHow to land that awesome job <3

About Me

So...what are we talking about?

shibboleth (n): a word or custom [that] can be used to differentiate members of ingroups from those

of outgroups.

Companies are more afraid of bad hires than missing a good hire.

The process reflects this.

The ProcessThe sausage is you.

The Four Stages of Tech Interviews

1. Non-technical screen ("are you in the ballpark")

2. Technical screen ("can you swing a bat")

3. Onsite Interview ("do you know the game")

4. Post-onsite interviews ("can you play with this team")

Recruiter phone screen

10-15 min phone call

Gauge your seniority, interests, skills, career direction

See if the team/company is a good fit

HR questions: can you work in the US, do you need a visa, etc, etc

Get a rough idea of salary and compensation

Caveats:

1. Recruiters are not your friend.

2. Be wary of independent recruiters.

3. Never disclose salary. Ever.

Tech phone screen

45-90 min phone call (1 hr is typical) with an engineer

Online collaborative coding (Collabedit/Coderpad)

Goal: weed out weak candidates

Onsite interview

All day (4-6 hours) in person

Typical: 3-4 modules of tech whiteboarding with one soft skills interview

But plenty of variation!

The PrepWashboard abs not required.

The Four Stages of Preparation

1. Pick a language, any language

2. Know your computer science fundamentals

3. Practice the mechanics (whiteboarding, lol)

4. Practice typical problems

The Four Five Stages of Preparation

1. Pick a language, any language

2. Know your computer science fundamentals

3. Practice the mechanics (whiteboarding, lol)

4. Practice typical problems

5. Get punched in the face

1. Know thy language

What to Know

You will be judged on your fluency. Know the syntax & idioms

Know the standard library

Know common tasks: file i/o, regex, strings, math

Be able to talk about the guts: sorting algos, time complexity, concurrency, etc

2. CS Fundamentals (and other things)

What to Study

Coursera Algorithms Part I & II: the 1st course and 1/3 of the second

Programming Interviews Exposed: More of same, plus concurrency

O'Reilly Cookbook for your language

Lynn Root's post on what to study

What to Study (Optional)

Real-world architectures

General approaches to scalability

Databases, SQL

Gotchas and edge cases (lookin at you, CSS/JS)

3. Buy a whiteboard.

No, seriously.

Practice the mechanics

You will be coding on a whiteboard. It sucks. Practice it in advance.

You will be coding on a plain text editor. It sucks. Practice it in advance.

Do practice problems on the whiteboard first, then check your answer on the computer

4. Practice, Practice, Practice

Practice problems

Elements of Programming Interviews

Cracking the Coding Interview

CareerCup, Glassdoor, Quora, Stack Overflow, Google

Code competition sites: TopCoder, HackerRank

Interview prep meetup groups

5. Get punched in the face

The InterviewI am dah lahw.

- Obligatory "Art of War" Quote

"If you know your enemies and know yourself, you will not be imperiled in a hundred battles... if you do not know

your enemies nor yourself, you will be imperiled in every single battle."

Know your enemy

Read their tech blog

Learn about their products (and their competition)

Do every interview problem on Glassdoor, Careercup and Quora that you can find.

No seriously, do all of them.

Ask the recruiter what to expect from the interview.

Know yourself

Interview first with a company you don't care about.

Know your stress triggers and how to manage them.

Managing stress and anxiety is a non trivial part of tech interviewing!

Be kind to yourself. Failing at an interview is not failure as a person. Learn and move on.

Rachel's patented* single simple formula

for all tech interviews, ever**

* not really** yes really

0. Intro yourself

Have a canned intro about yourself.

Talk about a project you're working on.

Show excitement & interest.

1. Make sure you're solving the right

problem.

Listen to the problem. Yes, this needs to be said.

Repeat it back. "Is that right?"

Think about what wasn't said. Ask questions.

"Here's how I'm thinking of approaching it. Is that ok?"

2. Talk it out

Do the entire interview as a stream of consciousness. They're judging you on your ability to think. Show it.

If you're confusing yourself, you're confusing the interviewer. Talk it out.

Periodically check in with the interviewer. "Do you want to correct anything here?"

Ask if you get lost or confused. They will likely give you hints.

3. Test it

Write test cases.

Be able to test your code on a whiteboard.

Check both working cases and edge cases.

Ask "Have I missed anything?"

4. Make it faster

Know what time complexity (Big O) your solution is.

Ask out loud: "Can I do better?"

Your interviewer may jump in with suggestions.

5. "Do you have questions for me?"

The answer to "do you have questions for me" is always yes.

You can ask just about anything. It's okay to ask tough questions.

Ask different people the same question. See if you get the same answer.

Julia Evans: Questions I'm Asking in Interviews

Additional Resources

Julia Grace's An Unconventional Guide for Getting a Software Engineering Job

Questions?

Attributions

Dennis Burger https://www.flickr.com/photos/dennisburger/5499489837