Interviewed
A collection of problems (and solutions to them) I found during tech interviews
General tips
- Know how to calculate complexity (time and space) of everything you do
- Ask as many questions as needed
- Speak out what you are thinking about
- EVERYTHING is about tradeoffs: brute force might be ok in small sets... Know when the brute force complexity will surpass a better approach (e.g. sorting might cost you something, but a sorted input might allow a faster algorithm)
- How to talk about yourself in an interview
Cool Links & Resources
- Hacking a Google Interview Course @ MIT
- Become a better programmer with programming challenges
- Tech Interview Tips by Google Recruiters
- Candidate Coaching by Google
- Eternally Confuzzled: explanations on data structures and algorithms
- MIT Lectures on CS
- TopCoder's Tutorial on Sorting
- TopCoder's Math for Programmers
- TopCoder's How to Find a Solution
- Binary Indexed Tree
- How should I prepare system design questions for Google/Facebook Interview?
- Joel on Software: The Guerrilla Guide to Interviewing (version 3.0)
- Failing at Google Interviews
- VisuAlgo: visualising data structures and algorithms through animation
- David Galles' Data Structures and Algorithms visualizations
- Ken Fox's Garbage Collection Methods explanations/visualizations
- Five Essential Phone Screen Questions
- Hired In Thech: Preparation plans (free & paid) for interviews
- Tech Interviews Cheat Sheet
- Big O Cheat Sheet
- Interview preparation, by kdn251
- Algorithms/Data Structures in Python, by Keon Kim
- Massive list of Data Structures for interviews
- "Get that job at Google" by Steve Yegge
- Awesome Interview Questions
- Cracking the coding interview
- Google's course on Tech Writing
- CS Dojo's "5 Problem Solving Tips for Cracking Coding Interview Questions"
Interesting Tech Articles
- Facebook: Building Mobile-First Infrastructure for Messenger
- The two-eggs problem
- Why Are Facebook, Digg, And Twitter So Hard To Scale?: Pull on Demand vs Push on Change approaches
- You Can’t Sacrifice Partition Tolerance
- 20 controversial programming opinions
- Leaky Abstractions
- Notes on Distributed Systems for Young Bloods
- Distributed Systems Class @ Columbia University
- How to shuffle songs @ Spotify
- TAO: Facebook’s Distributed Data Store for the Social Graph: Talk by Nathan Bronson
- Fundamentals of Data Compression, an introduction by Bertolami
- Finding the k-th element in a (unsorted) list
- Top 10 algorithms in Interview Questions
- The introduction to Reactive Programming you've been missing
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
- Continuous Delivery Maturity Model
- Donne Martin's Interactive Coding Challenges and System Design Primer
- John Washam's "Coding Interview University"
Interesting data structures
Sites to train programming skills
Questions to ask interviewers
Most interviewers leave some time at some point to let you ask questions. This is both to give you a chance to interview them and for them to asses a bit more how curious/well prepared/thoughtful you are. I really enjoy this section of an interview being on either side of the table. Here are some of my favorite questions (some of them are pretty common, some of them are ones I've developed over the years):
- What do you like the most about working here?
- What do you like the least about working here?
- What can I expect to be doing on day 1, 15, 60, 90, 120?
- How does a project go from idea (where do ideas come from) to successfully being used in production? (Different people will concentrate on different aspects, so this gives you a chance to drill down in anything you might be interested: brainstorming, code reviews, QA environments, CI, CD, testing in production, A/B experiments, etc.)
- If you had a magic wand, what would you change about how your team works?
- What do successful people work here?
- How does incident management look like?