Interviews: How to Ace a Technical One

Created by Ian Connolly / Slides available on GitHub

Hi, I'm Ian

I'm 4th Year CS and ex-DUCSS chair

I've interned at the ESB, FieldAware, and Mozilla.

I'm joining Scribd in San Francisco in June 2015.

After my summer with Mozilla, I knew that I wanted to move back to SF.

I've done a lot of interviews, both formal and informal, over the past 3-4 months to try and do that.

Hopefully you find some of my experience useful!

Recruitment Process Outline

The Funnel

Acquisition -> HR/Recruiter Screen -> Phone Screen(s) -> On-Site -> Offer

Acquisition

How you enter a company's recruitment process.

Job ad, referral, website, direct contact, headhunt etc.

Referrals mean different things everywhere.

Make sure your CV doesn't fall into the blackhole!

HR/Recruiter Screen

Non-technical screen first.

Making sure the human on the phone is the one who applied.

In bigger companies, finding out what the applicant wants to do.

Making sure the company and applicant are a good fit.

Phone Screen(s)

30-90 mins with an engineer/hiring manager.

Generally over Skype & an online text editor.

100% technical.

Number depends on how much signal the company needs to decide to bring you on-site

Explain more later.

On-Site

3-5 ~1 hour interviews.

Almost all 'technical'.

At least one will be a culture fit interview (possibly over lunch).

Explain more later.

Offer

Congratulations! ☺

As a rule, negotiate.

Glassdoor, ask friends, family contacts etc.

Anatomy of a Phone Screen

Timeline

  • Hellos - 5%
  • Technical Questions - 80%
  • CV - 10%
  • Questions about company X - 5%

Hellos

Self-explanatory.

BE ON TIME. (They'll probably be late)

They probably won't use video due to legal issues, but be prepared in case they do.

Have both Chrome and Firefox, something they'll want to use will inevitably only work in one properly.

Technical Questions

Generally either 1 big problem, or 2-3 smaller problems.

Usually make thorough use of a couple of key algorithms & data structures (see later).

Code doesn't have to be perfect (unless there's an interpreter/compiler!), but ask your interviewer.

If you're applying to a specific team, the question will be related to what they do.

CV

They'll focus on past-experience, classes, personal projects.

The more you have, the easier this is.

Explain clearly, don't embellish, but don't be overly modest.

Try and show initiative & enthusiasm.

Questions for them

Try and have some, but don't force it.

If applying for a general graduate position or internship, ask what team they're on and what they do.

People like talking about themselves, give them the opportunity.

Don't waste their time.

Anatomy of an On-Site

Congratulations!

You've already beaten the vast majority of candidates.

If you're going abroad, enjoy the trip!

You've got a good CV, can talk to HR, and can pass a phone screen. This won't be your last on-site.

Timeline

  • 3-4 ~1 hour long technical interviews
  • Probably a culture fit interview-that's-totally-not-an-interview over lunch.
  • Possibly an additional interview with hiring manager/engineer exec/team lead.
  • If a (Facebook | Google | Microsoft etc.) graduate position, probably a tour of campus and an engineering talk.

Technical Interview

Roughly an hour long each. Each with a different interviewers.

Algorithms & Data Structures heavy focus, probably at least one on system architecture.

Probably on a white board.

We'll go through topics, questions, and tips & tricks later.

Lunch 'interview'

You'll probably have lunch with some or all of your interviewers.

This is most definitely an interview, even if they say otherwise or don't realise it.

Relax, try and be yourself.

Ask questions, try and get them to talk about themselves.

Don't insult anyone, make racy jokes etc.

They're trying to see if they want to spend 8-10 hours a day with you.

Interviews at Hubspot

Stephen Purcell

Interview Questions

Generally 1 big one (roughly an hour's work), or smaller ~25 minute problems.

We'll run through need-to-knows, problem topics, examples, and common mistakes

Concepts

  • Sorting (Selection, Insertion, Quick, Merge...)
  • Data Structures (Lists, Stacks, Queues, Maps...)
  • Graph Theory (Directions, Cycles, Weights...)
  • Trees (Binary, Binary Search Trees...)
  • Tree & Graph algorithms (Traversal, BFS, DFS)
  • Strings (Manipulation, Reversing, Comparing, Tokenising...)
  • Big-O

Some nice extras

  • String Comparison (Hamming distance, Levenshtein distance)
  • LSB Radix Sort
  • Heaps
  • Tries
  • Dijkstra's

Blow them away!

  • Dynamic Programming
  • Best-in-class NP-Hard/Complete Heuristics (Word segmentation, K-Means)
  • Self-balancing BSTs (Red/Black, AVL Tree)

Don't forget

If you're applying to a specific team, there will be domain-specific problems.

Front-end, iOS/Android etc.

General Principles

Know the language(s) you will interview in.

Stuff to look out for:

  • String mutability
  • String iteration
  • References/pointers
  • Types (especially numerics!)

I do all of my interviews in Python.

Generally, Java/C/C++ are recommended.

Pick the one you know best. Practice with that (as well as Java).

Easy/Phone Questions

  • Reverse a string (in-place)
  • Determine if a linked-list has a cycle.
  • Given a directory, find all files in all subdirectories that are the same
  • Serialise and deserialise a binary tree

Medium Questions

  • Given a binary tree, ensure that zero nodes are the ancestor of only other zero nodes (Sink-zero problem)
  • Given a sentence with no spaces, split into words (Word-segementation problem)
  • Return all subsets of a given set.

Hard Questions

  • Given a log of the last N searches, how would you implement Google search prediction?
  • There are 10,000 servers, each with a billion integers in memory, find the median.

Tips & Tricks

General tips

  • Solve the big problems before the small problems.
  • Narrow the problem space by asking questions.
  • Write test inputs and expected outputs before you start.
  • You can trade memory (with another data structure) for running time, and vice versa
  • If you're stuck, enumerate the data structures you know and try to apply them to the problem.

Phone tips

  • Have your CV in front of you.
  • Get up from the desk!
  • Be hydrated.
  • Do quick practice, katas, etc. before to be warmed-up.
  • Talking out loud while thinking is the hardest skill to master.

On-site tips

  • Don't write too big.
  • Step back from the whiteboard.
  • You are always being interviewed.
  • Don't forget biology: eat, sleep, drink, pee.

Remember:

  • Don't equate stuff you're good at with stuff you've just seen on your CV.
  • Everything on your CV is fair game.
  • Know why you want to work for the company you're interviewing with. They will ask.
  • Interviews are two-way, figure out if this is somewhere you'd like to work.
  • Always, always, leave a good impression.

Finally...

Don't worry if you bomb it.

Everyone does it at least once.

You will do a lot more interviews than you get offers.

Learn from your mistakes and prepare better.

What HubSpot Want

Stephen Purcell

Questions?