rock the tech interview january 2015
TRANSCRIPT
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
Who Are We?
We’re entrepreneurs for enterprise.
• Boutique Consulting
• New Technologies and Frameworks
• Design & Development
There are 640 Infusionites in
the world today.
INFUSION GLOBAL OFFICES
TORONTO
BOSTON
NEW YORK
RALEIGHHOUSTON
SINGAPORE
LONDON
MALTA
WROCLAW
KRAKOW
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
The Interview Obstacle Course…
• RecruiterFilter Resumes
• RecruiterPhone Screen
• DeveloperPhone Tech Interview
• Snr Dev / ArchitectIn Person
Tech
• Hiring ManagerFinal
50x
1x
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 ?
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
2nd Goal: #StandOut
• Be Yourself
• Be Confident
• Smile + Body Language
• Be Passionate
• Get Excited
• Stay Calm
• Keep it SIMPLE
• Keep it SHORT
The Format – 60 mins
• Introductions: 5 mins
• CS Fundamentals: 20 mins
• Tech Specific : 10 mins
• Algorithm(s): 15 mins
• Questions? 10 mins
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
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
• 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
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)
Data Structures• Array[], ArrayList, List<T>
• HashMap/HashTable
• Linked Lists, Queues, Stacks
• Trees, Graphs
• Generics
OOP Fundamentals• “What is Object Oriented Programming?”
• Polymorphism
• Overload vs Override
• Abstract Classes
• Interfaces
• Access Modifiers
• Static, Final, Readonly
• Constructors & Destructors
Memory Management• Scopes
• Struct vs Class
• Pass By Value vs Pass By Reference
• Stack vs Heap
• Pointers & References
• Garbage Collector
• IDisposable / using scopes
Multithreading /Concurrent Programming• Threads vs Processes
• Async, wait, notify, sleep
• Context Switching
• Race conditions, deadlock
• Locks / Mutexes / Semaphores
Coding Best Practices• Exception Handling
• Logging
• Source Control
• Commenting
• Naming Conventions
• Testing
• Debugging
• Build Management
Databases• Schema Design / Normalization
• Select Statements
• Joins
• Aggregate Funcs / Group By
• Transactions / ACID
• Tables vs Views
• Stored Procedures
• ORMs
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
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…)
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
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
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
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?”
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?”
References & Resources
Algorithms & Problem Solving
https://codility.com/programmers
https://www.hackerrank.com
https://open.kattis.com
https://www.interviewcake.com
http://www.codewars.com