Computer Science interviews are a different breed from other interviews and, as such, require specialized skills and techniques. Cracking the Technical Interview will teach you how to prepare for technical interviews, what top companies like Google and Microsoft really look for, and how to tackle the toughest programming and algorithm problems. This talk will include stories from the speaker's extensive interviewing experience as well as a live "demo" of how to tackle a technical problem.
1. Cracking the Technical Interview Cracking the Technical Interview Gayle Laakmann Founder / CEO, CareerCup.com
2. My Background UPenn BSE / MSE ‘05 in CS Ex-Engineer at Google, Microsoft and Apple + Offers from Amazon, IBM and others 3 Years on Google Hiring Committee Interviewed 120+ candidates Previously taught 2 courses at UW (Now MBA Student at Wharton / UPenn)
3. CareerCup Founded 2005 Largest source for technical interview questions (3000+ FREE questions) Services: Book (E-Book and Paper) Video Mock interviews
6. Technical Interview Process Initial Screen (Phone / Campus) 4 - 5 on site interviews 10 min General 40 min Technical 10 min Closing
7. What do companies look for? Are you smart? Algorithmic skills Can you code? OOO, Cleanness, bug free (sort of), etc What are you like? Communication, friendliness, etc What have you done? Relevant experience, passion, etc
9. Resume Selection Project experience! Course work Open source Independent studies Master C++ or Java Skills Passion Work Ethic
10. Resume Advice: One Page. (Seriously.) 3 Sections: Education, Employment, Projects Pet Peeve: Save file with your name
11. Why do you want to work here? What was your favorite project? Interview prep – SOFT SKILLS
12. Research the company / team Prepare 10 – 15 questions: Genuine Questions How much time do you spend coding each day? Insightful QuestionsI noticed that Google uses Standard X. How do you solve problem Y? Passion Questions What are the opportunities to learn about scalability at Google? Soft Prep – The Company / Team
14. Strengths vs. Weaknesses Mediocre answer: “it was hard because I had to learn new languages / technologies” Not just answering Q’s – show who you are! Soft Prep – Yourself
15. How do you prep for coding questions? What do you prep? Interview prep – Tech SKILLS
22. The Interview: Chit Chat - Tips Be specific – not arrogant “Yeah, I did all the hard work for the team” “I implemented the file system, which was considered one of the hardest components.” Limited details (else too hard to follow) Ask good questions!
24. How do you tackle hard tech questions? Interview – tech SKILLS
25. General Advice for Technical Questions Talk out loud – show us how you think! Good interviews = hard questions Don’t be nervous if you can’t solve something! You’re not done until they say you’re done.
37. Algorithm Discovery Approaches Simplify / Generalize A ransom note can be formed by cutting words out of a magazine to form a new sentence. How would you figure out if a ransom note (string) can be formed from a given magazine (string)?
39. Algorithm Discovery Approaches Data Structures Brainstorm Numbers are randomly generated and sorted into an (expanding) array. How would you keep track of the median?
40. Find Problems with Your Algorithm What’s the space / time complexity? What if there’s lots of data? Does your design cause other issues? If there are other issues, did you make the right trade offs?
41. Pseudo Code & Code Pseudo code first – but tell your interviewer Use data structures generously What are the right ones? Define your own = shows good style Don’t crowd your coding Start in the upper left corner of board, not bottom
42. Testing Test your code! Extreme cases Check for user error Test general cases CAREFULLY FIX MISTAKES
43. What about non-algorithm problems? System Design Design for small system, then scale. Object Oriented Design What are the major objects? How do they interact? Trace It!
45. The Interview: Ending It Smile, be positive If you think you bombed, don’t worry Follow up with your recruiters (sometimes they forget)
46. The Offer It’s always negotiable Helps if you have competing offer Don’t lie – companies know what competitors offer Is it really what you want? Money, career options, etc
47. My Red Flags: People who… … wrote code and didn’t test it … found mistakes and would make random fixes … jammed things messily into an existing data structure … didn’t consider the impact of their algorithms … were scared to try
48. Take Aways – Getting Ready Get Project Experience Show project experience on resume S. A. R. (Situation Action Result) Prepare Project / Behavioral Grids
49. Technical Interview Prep Things to know (data structures, algorithms, concepts) Simple Know Implementation Complex Know Concepts Practice interview questions!
50. At The Interview Be nice Interviews are supposed to be hard Approaches Pattern matching Simplify / Generalize Base Case & Build Data Structure Brainstorm
51. Other Resources E-Book Video Paper Mock Interviews Slides posted at CareerCup.com/lectures 20% Discount Code: [removed from online posting – email support@careercup.com to get it] I have removed the discount code from online posting because, well, things are Google-able and the code is intended for penn students. Please email gayle@careercup.com from your UW email address to get the code.
Editor's Notes
What you want to know:How much time do you spend coding per day? In meetings?How does code get shipped?Insightful QuestionsI noticed that Google Talk uses the XMPP standard, and …Passion QuestionsI love learning about scalable systems. What are opportunities at Google?
Hashtables – super important!!!
Bit manipulation – super important!Recursion: how does recursion impact space and time?Practice converting from iterative into recursion