2. About Me?
• Greg Roderick @ Infusion
• Practice Manager, Web
• Waterloo Grad, CompEng 2005
• Co-op at Infusion
• Dev -> Team Lead -> Manager
• American Idol, Indigo
• Tech Interviewer
3. Who Are We?
We’re entrepreneurs for enterprise.
• Boutique Consulting
• New Technologies and Frameworks
• Design & Development
There are 640 Infusionites in
the world today.
7. We’re serious about co-ops and New Grads
• 75% of our executive team is made up of UW Alumni
• 60% of our co-ops join Infusion full time
• 2014 co-ops/grads in Toronto, NYC, Houston, Raleigh, London and Krakow
• In the last 12 months, 5 co-ops and new grads won awards for their work.
• We run an intense month-long technical Bootcamp for our New Grads
8.
9. The Interview Obstacle Course…
• RecruiterFilter Resumes
• RecruiterPhone Screen
• Developer
Phone Tech
Interview
• Snr Dev / Architect
In Person
Tech
• Hiring ManagerFinal
50x
1x
10.
11. MY MISSION:
DECIDE IN 1hr IF YOU ARE A HIRE
Interviewing is hard….more voodoo than science
So what *am* I looking for?
Put yourself in my shoes…
The 3 real questions…
Smart?
Gets Things Done?
Fit the team ?
13. 1st Goal:
Don’t #InterviewFail
• Don’t be late (10 mins early is ideal)
• Don’t be rude to the receptionist
• Fishy handshake
• Don't Lie, don't try to fake it
• Don't rant or get frustrated
• Suits optional – but don’t underdress
• Hygiene: nails, shave, nose hair
14.
15. 2nd Goal: #StandOut
• Be Yourself
• Be Confident
• Smile + Body Language
• Be Passionate
• Get Excited
• Stay Calm
• Keep it SIMPLE
• Keep it SHORT
16. The Format – 60 mins
• Introductions: 5 mins
• CS Fundamentals: 20 mins
• Tech Specific : 10 mins
• Algorithm(s): 15 mins
• Questions? 10 mins
17. The Introductions
“Tell me about yourself?”
“Tell me about your last job?”
“What’s your fav class this term?”
“What languages are you strong in?”
My Goals:
• First impressions + attitude
• Get you talking: communication
• Break the ice: help you relax
18. Sell Yourself (#StandOut)
Paint the picture of who you are
• Relevant skills, experience, interests
• Unique abilities, outside of school/work, hobbies
• Side projects, Open Source, Blogs, reading…
Confident, Positive, Articulate, Smart
• Firm handshake, smile – be yourself
• Goals? What kind of job are you looking for?
• Highlight positives from prior roles;
Practice Your Elevator Pitch
• Keep it to 1 minute or less – short, simple
• Highlight 2-3 recent jobs, not all of them
• Have 3 main points; tie them together
19. • OOP Fundamentals
• Data Structures /Memory Management
• Multithreading / Concurrent Programming
• Coding Best Practices
• Databases
My Goals:
• Measure experience, aptitude
• Assess breadth and depth – grill, find gaps
• Do you get it vs memorizing definitions
• “Why” / “How does” vs What Is questions
• Can you give me an example?
• How have you applied this in a project?
• What happens if…
CS Fundamentals
20. Tips:
Prepare for interviews like studying for exams
• Create a list of topics to review
• Be prepared to talk to anything on your resume
• Read up! Pull out your textbooks or go online
• Focus on understanding (vs memorizing)
If you don’t know something…
• Be honest…then make an educated guess
• It’s ok to ask for a hint or how something works
• Jot down ‘misses’…look up and learn
Provide an examples, not just definitions
• Show you understand / have used it
• Cite built-in examples from major frameworks
• Don’t go overboard (keep it short, simple)
24. Algorithms & Problem Solving
• The “hard” part of the interview….
• Measuring Aptitude:
• Applying what you know
• Solving “new” problems.
• “Hands On” vs Theory: Whiteboarding, writing code
• Thought Process & Reasoning
• Communication
25. Problem Solving & Puzzles
• How many golf balls fit in a bus?
• How many times do a clock’s hands overlap?
• 8 balls, same size, 7 same weight. Find heavy
ball using a balance and only 2 weighings
Tips:
• “Right” matters less than thought process
• Talk your way through the problem
• Break it down. State/clarify assumptions
• Draw/write it out: visualize your logic
(Draw clock, hands on it, “move” the hands…)
26. FizzBuzz & Data Structures
• “Reverse a linked list”, “Find if linked list has cycle.”
• “Find the biggest number in an array”,
• “Find which characters repeat in a string”
Tips:
• Problems not “hard”; goal to filter weak candidates
• Know your data structures and their properties
• Study samples on internet – you may see exact Q
• BUT “knowing the answer” isn’t the point, you need
to be able to explain
• Get started; how quickly you can solve matters
27. ACM-Style Problems
“I have an array of Apple stock prices from yesterday;
with the index is the time in minutes from the open
and the value is the price at that time. In one buy
and one sell, find the maximum profit.”
Tips:
• Make sure you understand the problem; “replay” it
• State assumptions, think about corner cases
• TALK through a base case; get *a* working solution
• Write out pseudo code/comments
• What is the runtime? Understand Big O notation
• Optimize: look at loops, look at data structures
• Think hashtables; very useful for fast access storage
• STUDY! Practice these kinds of problems
28. Do you have any questions for me?
• Is this the company for you? Choose between offers?
• This is your best chance to really understand this company
• Your interviewer is a window to the people at the company
• Great questions = great way to convey your attitude
Tips:
-Always take advantage of this opportunity
-Know what factors you’re looking for in a job/company
-OK to write & bring prepared questions
-Skip “administrative” questions; (ask the recruiter)
-Show you’ve done your homework
-Communicate excitement vs “what’s in it for me?”
-Connect on a personal level
29. Some suggestions…
• “What was your experience like as a new joiner to Infusion? What was the
biggest pleasant surprise? The biggest challenge?”
• “What have your recent interns/new grads worked on...have they come
back? If not, why not?”
• “What advice would you give to someone starting in this role?”
• “What is your favourite part of working here?”
• “What would a typical day or week be like in this role?”
30. Instead of….
• “What is the dress code?”
• “Do you send devs to conferences?”
• “Who are you customers?”
• “What is the pay?”
• “Did I get the job?”
Try…
• “Everyone seems friendly and energetic – can
you tell me more about the culture?”
• “How do you support continual learning for your
employees, especially new grads?”
• “I was really impressed with <case study>. What
have been some of your favourite projects?”
• “What do you see as the near term challenges
and long term opportunities of this role?”
• “Do you have any feedback on how today went?”
“Rock the Technical Interview”
Talk by Greg Roderick @ Infusion for the University of Waterloo
January 2015
(for anyone that doesn’t get it…this is ‘Levitated Mass’, a “floating” 340 ton boulder, 21.5ft tall! http://en.wikipedia.org/wiki/Levitated_Mass)
My name is Greg (and that’s me at Waterloo, having just gotten my Iron Ring) and I’m the Practice Manager for Infusion’s Web Practice. I’ve been with Infusion for 10 years now – I graduated from Waterloo in 2005 from Comp Eng, and did my last co-op with Infusion in 2004 before coming back full time.
Infusion was a small 50 person company when I started; I spent my first few years as a developer before moving into a Team Lead role, and have been a manager for the last 4 years.
I’m one of Infusion’s senior technical Interviewers, and am particularly involved with our campus recruiting; I’ve interviewed hundreds of candidates over the years and want to share my experience to hopefully help you rock your next tech interview!
Infusion is a software consulting company – companies hire us to help them solve big, hard technical problems. We work with customers from Wall Street banks, to modelling agencies; museums to professional sports leagues. We do mobile apps, retail experiences, immersive web experiences and everything in between – generally with the newest technologies and frameworks. We even have a digital agency that ensures our applications are beautiful, well designed and usable.
In my 10 years at Infusion, we’ve grown from a small 50 person startup with two offices, to almost 650 employees with 10 offices around the world.
We helped Natural Food Market Group redesign an engaging marche style family eatery in Toronto’s biggest mall, with everything from kids games, to custom ordering kiosks, to digital signage – and even a hologram virtual hostess!
https://www.youtube.com/watch?v=K8CDSvAIKEQ
We also do exciting work on the Web – we worked with Shaw on the Vikings web portal, including an interactive timeline and a Vikings warrior face-off game (http://www.history.ca/vikings/)
We’re serious about Co-ops and New Grads – just some interesting facts about our campus programs and experiences
This session is all about interviews and how to navigate the process. Every company has a different interview process…but most feel a bit like this – many steps, each feeding into the next, but with a chance to fail at each….and to get hired you need to make it through every step.
Most companies have a process something like this….anywhere from 3 to 10 steps, from resume to in person interviews.
Tech Interviews are usually 1 hour, with the first typically over the phone before being brought in person for more. This is our focus for today – the tech interview.
*CLICK* It’s common to filter 50 resumes OR MORE to find the 1 ultimate fit that gets hire…
***NOTE: FOR COOPS, ITS NOT UNCOMMON FOR COMPANIES TO HAVE ONE SINGLE IN PERSON INTERVIEW ***
Your first few tech interviews will feel a bit like this; an interrogation with the odds stacked against you.
When you don’t know what to expect, and when you’re not prepared – in some ways, that’s what the interview becomes.
This session is all about how YOU can Rock the Tech Interview…to give you a leg up, show you how YOU can succeed, get through the obstacle course, and be “chosen”. How you can be *ready* so your next interview feels like a conversation, not an interrogation.
The first step is understanding how your interviewer thinks….
Interviewing is HARD. Trying to get a clear picture of someone in an hour and decide if they’re the kind of person you want to hire is no easy task….ultimately it’s as much voodoo guesswork as it is science. So put yourself in MY shoes – if you only have an hour with someone, how do you spend it? What are you trying to figure out?
Ultimately there’s 3 main questions I’m asking: are they smart? Will they get things done? Will they fit in my team?
This chart shows the scientific conclusions from my analysis of the hundreds of interviews I’ve conducted.
People fall into 3 categories:
Just…plain….BAD – the kind of bad that FizzBuzz was created to filter out.
Absolutely incredible…technical geniuses, with dynamic personalities, who save kittens in their free time
Everyone else…good, but….not definite Yes’es.
The amazing thing is that you can usually recognize within 5 minutes the BAD’s and the Incredibles…
The goal of the interview is to figure out *CLICK* if you’re one of these…
The first thing I’m looking for are reasons to NOT hire you….
Everything from punctuality to attire to the way you treat the people you talk to tell me something about you….make sure you don’t commit any of these yellow flags.
So what *am* I looking for? At Infusion we measure 3 things in interviews: Attitude, Aptitude and Experience.
What do these mean?
Attitude: Initiative, desire to learn, ability to work with others, and how you handle adversity.
Aptitude: How *smart* you are, ability to learn new skills, can you *apply* what you know
Experience: *What* you know today; what specific skills and technologies currently in your tool belt
Which of these is the most important? Obviously having all 3 is ideal – but if we have to compromise on one, which is it?
Attitude and Experience, but no Aptitude: Awesome FORTRAN developer who is SUPER KEEN to learn Angular…but no matter how hard they try, they just don’t get it. This person is so nice and well intentioned, you WANT them to be successful…but ultimately they just can’t adapt.
Aptitude and Experience, but no Attitude: Friggin genius – they know Angular, they COULD learn ANYTHING…but “DON’T YOU KNOW WHO I AM? How *DARE* you tell me how to design this feature.” They may be smart, but man they’re a pain to work with and ultimately bring down everyone around them
Attitude and Aptitude, but no Experience? Smart, hardworking and keen…they might not know how to do it today, but show them once and point them in the right direction and they’ll figure it out, and be a joy to work with along the way.
Whether you like to admit it or not, you’re grown adults now; and in a lot of ways you now are who you are going to be…there’s still parts of you and your skills that are malleable; but your attitude, and your aptitude, they’re pretty much fixed. Experience though…experience you can grow; it just requires TIME, opportunity and mentorship.
How do we measure ATTITUDE? We want to see people that are comfortable in their own skin and will fit into our team. First off, be YOURSELF, don’t try to be someone that you think the interviewer is looking for – if I hire you because of an act you put on for your interview, neither of us will be happy long term….that said, some tips to help make the real YOU shine….
Most one hour interviews will follow an interview roughly like this….
I almost always start with a softball pitch like “Tell me about yourself?” or “How’s your school term going so far?”. I care, really, I do…but more than that I’m trying to break the ice, to help you relax and get settled, and to GET YOU TALKING. How you respond tells me a lot about you – it forms my first impressions and starts telling me about your attitude. It also starts to give me ideas on how to shape the interview, topics to cover and things to follow up on…
If I’m going to let you talk for a bit, this is you chance to SELL YOURSELF! What do you want me to know…how do you want me to see you? Virtually every interview you do will include a question like this, so take the time to polish and rehearse your answer so you make the most of it!
Remember – this tells me a lot about your attitude; you’d be surprised how many candidates get sidetracked ranting about how terrible their last boss was, or how bad their prof is in a class this term. Focus on the positives, what sets you apart and makes you YOU. Interesting hobbies and activities outside of school are totally fair game, especially if they are coding related.
We’re going to spend 20-30 minutes covering a breadth of CS Fundamentals – some of this is definitions, but mostly validating how good of a handle you have on a range of topics. This is all about measuring EXPERIENCE, along with a dose of aptitude.
Remember, experience is “if you KNOW it (because you’ve done it)” and Aptitude is“you can apply what you know to something new”
We’re assess breadth and depth – finding gaps. Seeing if you get it, vs if you can memorize a bunch of definitions. Can you APPLY the concepts?
We may ask “what is polymorphism” – but we’ll mostly ask “Why” and “How” questions, ask for examples or how you’ve used something…
There’s a LOT of ground to cover - and its not as if you’re not already busy enough with school. Still, preparing yourself to rock your interview is worth making time for – luckily for you, you’ve hopefully got a good system and lots of practice studying for exams. I’d suggest treating studying for your tech interview in the exact same way; create (and prioritize) a list of topics, and get reading – use your textbooks, or there’s a vast number of resources online.
Tips:
Treat preparing for an interview a bit like studying for an exam;
Create a list of topics to review
Read up! Pull out your textbooks or go online
For each major topic, make sure you understand it (vs memorized) and know how/why it works
The internet is *full* of example topics and questions
If you don’t know something
be honest…then make an educated guess
Once or twice in the interview, it’s ok to ask the interviewer for a hint or how something works (good attitude indicators)
Jot down the items you ‘missed’…most likely you’ll be asked these again in your next interview, so go home and read up
If you can, provide an example/how something would be applied
Balance “keep it short, keep it simple” with “show me you understand” – include examples where it makes sense
“An interface is a contract of the behaviours that must be defined by implementing classes. It only includes method prototypes (no variables), and all methods are implicitly public. I could have an IVehicle interface that would define “StartEngine” and “StopEngine” methods; Car, Truck and Boat could all implement IVehicle.
Especially for new grads we’re looking for a strong understanding of the basics (vs whether you understand how to do something very specific in Angular).
We’re not going to run through all of these in detail, but I wanted to share roughly the potential topic space that we cover in Infusion interviews. This should give you a framework to brush up / study against…
We’ve talked about some of the things we do to measure attitude and experience; the main way we measure Aptitude is through algorithms and problem solving. Every company and every interview will be different – but expect to have to WRITE CODE, WHITEBOARD, EXPLAIN YOUR THOUGHT PROCESS.
We’ll usually 15-20 minutes in this section, and ask ask ~2 questions.
Questions usually fall into one of three categories: Puzzles and Brain Teasers, Data Structure / Simple Algorithm questions, and “ACM-style” algorithms…we’ll look at each.
Call these puzzles, riddles or brain teasers…These are some of the most legendary questions - you’ve probably heard horror stories about people trying to work their way through questions like these. They generally have NOTHING to do with computer science or code, and are mostly about logic and problem solving.
“Right” matters less than your thought process here – often times there isn’t even a right answer – so make sure you’re helping the interviewer SEE your thought process. Listen carefully to the question to make sure you understand the question, then talk your way through the problem – what are you thinking? Break it down and state assumptions, and don’t be afraid to draw/write out you logic;
“Ok, let’s assume a bus is what, 50 feet long, 8 feet tall and 10 feet wide? Let’s start by assuming it’s a regular rectangle, and ignore the stairwell, the curvature at the top, and the space occupied by the seats, so the volume would be length x width x height. Now let’s think about golf balls, and how many golf balls we can fit in a cubic foot, then multiply that by the volume….”
If you don’t know the term “FizzBuzz”, it’s a trivial coding task based on a children’s game (http://en.wikipedia.org/wiki/Fizz_buzz). Whether it’s a FizzBuzz question of something similar, these questions are not meant to be rocket science, but rather to show you can APPLY concepts. I’ve framed “problem solving” questions as what interviewers ask at the *end* of the interview, but sometimes this specific kind of question gets asked right near the front…it’s a way to very quickly get you writing code and to sanity check what level of candidate you are or to filter out weak candidates.
Your goal is to make sure you don’t get filtered! Brushing up on these kinds of questions can help make sure you are fresh, can answer quickly and with confidence; the goal is NOT to memorize a bunch of answers but rather to have ‘seen’ the kind of question and have an idea on a response….you’d be surprised for example when asked how to check if a linked list has a cycle, how many candidates say “you use two pointers” but have NO idea how it would actually work.
This kind of question is especially common for in person interviews, as it can be hard to explain complex questions/answers over the phone….
What I’m really looking for is your thought process, your ability to “get” the question, and start mapping it into an algorithm/technical approach. If you need a minute to think things through, take it…but similar with the other types of questions, I want to see you start talking your way through things – so I can see your thought process. What I care about first is that you get *a* working answer – so don’t fixate on trying to get the PERFECT answer first. Once you’ve got an idea on approach, sketch it out and validate if it will work; then write out proper code.
How GOOD your solution is is the next question – runtime and resource utilization are the biggest factors.
There are 2 goals in an interview – for the interviewer to assess if you are a fit for the company; just as importantly, for you to assess if the company is a fit for YOU. Most interviewers will save ~10 minutes for you to ask THEM questions…this is your chance to turn the tables, and to really find out what this company is like. If you’re really good, you’ll have multiple potential offers from different companies – how do you choose between them?
Start by thinking about what’s really important to you in a job? Are you really excited about a certain kind of project/technology, or more excited by who you’ll be working with? What kind of work environment do you do best in – what factors influence that? Are you super excited about travel? Do you like/need to be given clear direction, or do you want to freedom to drive your own decisions? The kinds of questions you ask will also tell the interviewer more about the kind of person you are and your attitude/fit.
Always…ALWAYS take advantage of the chance to ask questions – you’d be surprised by how many candidates don’t…it tells me a lot about their attitude and how invested they really are in this role/Infusion. Be smart about the time you have with your interviewer – save administrative questions to ask the recruiter…use this as a chance to connect personally with the interviewer and get a real, honest read on the things that matter to you…
A few suggested questions – have 5 or so prepared questions, even though you may only ask 3; the interviewer will likely have already answered some of your prepared questions along the way. Follow up, engage…make it a conversation.
A few “ok” standard questions, and better alternatives. The alternatives engage the interviewer, drive better conversation, and better reflect your maturity and investment in the company.
Check out these online resources for practice algorithm and problem solving questions