I’m going to assume here that the role you are interviewing for requires background and skills in areas within the broad domain of Science, Technology, Engineering, Math/Stats (STEM) and that your interviewers are themselves fairly technical people. Under this assumption, it’s safe to say that your interviewers won’t be spending much time on personality-evaluation questions or even on questions regarding career-goals. STEM folks tend to get down to the business of technical questions fairly quickly! Your interviewer is likely to come well-prepared – with a copy of your resume and armed with a large set of technical questions. This “Going to War” mindset of the interviewer tends to be more acute when interviewing junior candidates.
So how do you put up a good fight? Reading books on technical interviews and solving a lot of puzzles before the interview is somewhat useful as it puts you in the right frame of mind and eliminates any cobwebs from your head. But the most important thing is to understand what type of questions will be asked and the motivation behind each type of question. Surprise is the most dangerous element in a battle, so let’s help you anticipate better! Here are the categories of questions you will typically encounter.
A) Wordy “Out-of-the-box thinking” puzzles: These questions are not technical, but some interviewers seem to characterise them as technical because of the “trick” element or the “out-of-the-box thinking” you need to employ to answer these questions. The questions can range from the bizarre “What is the significance of the term ‘Dead Beef’ ” to the clever “Why are manholes round?”. The problem with these questions is that they are often vague and people from different backgrounds can interpret the questions differently. Some interviewers ask these questions just to have some fun. Some others take the response as an indicator of IQ. Some others use these questions to evaluate personality and communication.
My observation has been that the well-reputed technical teams at the best companies tend to avoid, or at least limit, these questions (personality/communication skills can be evaluated independent of these questions). Make sure you are very clear on what problem you are supposed to solve. And try not to laugh loudly if the question is too bizarre! If too many questions from this category show up, you should be concerned if the group is indeed technical.
B) Discrete Math Puzzles: This category refers to discrete math puzzles requiring high-school level, or sometimes freshman-year background. These questions test your general ability in STEM and in discrete math in particular. You should expect a few questions of this type with almost all technical teams. Whenever there is a mismatch between the background of the interviewer and the interviewee, there is a high probability of this type of question showing up. Here’s an example puzzle: “How many ways can you climb a set of 10 stairs if at every step you can climb up 1 stair or 2 stairs?”. Candidates who enjoy doing puzzles or who have had years of practice with these puzzles have a clear advantage here. If you are not one of those people, you should get some practice with these puzzles for a few days preceding your interviews.
If you haven’t done much discrete math in a while, you should also review some of the key discrete-math concepts that appear often in these puzzles, eg: Binomial Theorem, Pigeon-Hole principle, Unique Prime Factorization, Bayes Theorem etc. If the majority of your questions are in this category, the role might not be well-defined or the interviewers were not well-prepared. Highly technical teams tend to limit these questions to about 1 question per interview and will typically phrase these questions in precise mathematical terms rather than a play with words.
C) Fundamental Domain Problems: These are questions narrowed down to the general domain of the job (eg: Programming or Linear Algebra or Thermodynamics). So they are somewhere between the broad umbrella of STEM and the narrow area of expertise required for the job (eg: Python programming or Stochastic Calculus). These questions require subject-expertise at the Sophomore-Junior level. These questions are fairly fundamental but will require you to be strong in the general domain of the job.
Here’s an example for a job involving programming: “Write an efficient algorithm to enumerate all subsets of a set of integers (no subset should be repeated)”. If you have been focused on a narrow area for a long time (say Java programming), you should prepare for these questions by reviewing some of the books you used in your Sophomore and Junior year courses (for tech jobs, Data Structures and Algorithms is a favorite topic in this category).
These questions are critical in any job that emphasizes the general caliber of a candidate more than narrow skills. In such jobs, you want good problem solvers with a solid undergraduate foundation who can pick up the requisite skills pretty quickly. Be very thorough with the details as the interviewer will typically expect you to get to the final solution. eg: you’ll be expected to work out a definite integral all the way to the final answer on the whiteboard, or you’ll be expected to write a program on a laptop and make sure that it’s working correctly. Being precise is important because interviewers will often report back just your final answer (a single number or the output of your code) during post-interview discussions.
D) Advanced Skill Questions: These are questions that evaluate your expertise in the narrow area (or areas) relevant to the job. Examples would be – Expertise in Parabolic Partial Differential Equations, or expertise in Support Vector Machines (an area within Machine Learning), or expertise in Scala programming. These require background at the senior level and more typically at the graduate-school level. Note that if you have a Ph.D., you will be asked fairly advanced questions in topics pertaining to your Ph.D. thesis (even if the job doesn’t require those specific skills).
The purpose of this category of questions is to evaluate how good you are in your claimed area (or areas) of expertise. I emphasise the word “claimed” because this is where a lot of candidates trip up – candidates tend to oversell their skills and rate themselves a lot higher that their true ability. The best groups at good firms will have people with expertise in a wide range of areas and so you can’t fake your way through.
It’s important to note here that often you are not expected to “solve the problem”. These questions often tend to be open-ended and geared towards a discussion rather than a final solution. The interviewer will typically want to know how you would approach the problem and what kind of techniques you have experience with. Interviewers will often also look for communication and presentation skills via this category of questions.
Good luck with your interviews!
Discuss on Hacker news