In 2012, Harvard Business Review announced that Data Science will be the sexiest job of the 21st Century. Since then, the hype around data science has only grown. Recent reports have shown that demand for data scientists far exceeds the supply.
However, the reality is most of these jobs are for those who already have experience. Entry level data science jobs, on the other hand, are extremely competitive due to the supply/demand dynamics. Data scientists come from all kinds of backgrounds, ranging from social sciences to traditional computer science backgrounds. Many people also see data science as a chance to rebrand themselves which results in a huge influx of people looking to land their first role.
To make matters more complicated, unlike software development positions which have more standardized interview processes, data science interviews can have huge variations. This is partly because as an industry, there still isn’t an agreed upon definition of a data scientist. Airbnb recognized this and decided to split their data scientists into three paths: Algorithms, Inference and Analytics.
So before starting to search for a role, it’s important to determine what flavor of data science appeals to you. Based on your response to that, what you study and what questions you’ll be asked will vary. Despite the differences in the types, generally speaking, they’ll follow a similar interview loop although the particular questions asked may vary. In this article, we’ll explore what to expect at each step of the interview process, along with some tips and ways to prepare. If you’re looking for a list of data science questions that may come up in an interview, you should consider reading this and this.
The Coding Challenge
Coding challenges can range from a simple Fizzbuzz question to more complicated problems like building a time series forecasting model using messy data. These challenges will be timed (ranging anywhere from 30mins to one week) based on how complicated the questions are. Challenges can be hosted on sites such as HackerRank, CoderByte, and even internal company solutions.
More often than not, you’ll be provided with written test cases that will tell you if you’ve passed or failed a question. This will typically consider both correctness as well as complexity (i.e. how long did it take to run your code). If you’re not provided with tests, it’s a good idea to write your own. With data science coding challenges you may even encounter multiple-choice questions on statistics so make sure you ask your recruiter what exactly you’ll be tested on.
When you’re doing a coding challenge, it’s important to keep in mind that companies aren’t always looking for the ‘correct’ solution. They may also be looking for code readability, good design, or even a specific optimal solution. So don’t take it personally when even after passing all the test cases, you didn’t get to the next stage in the interview process.
- Practice questions on Leetcode which has both SQL and traditional data structures/algorithm questions
- Review Brilliant for math and statistics questions.
- SQL Zoo and Mode Analytics both offer various SQL exercises you can solve in your browser.
- Before you start coding, read through all the questions. This allows your unconscious mind to start working on problems in the background.
- Start with the hardest problem first, when you hit a snag, move to the simpler problem before returning to the harder one.
- Focus on passing all the test cases first, then worry about improving complexity and readability.
- If you’re done and have a few minutes left, go get a drink and try to clear your head. Read through your solutions one last time, then submit.
- It’s okay to not finish a coding challenge. Sometimes companies will create unreasonably tedious coding challenges with one-week time limits that require 5–10 hours to complete. Unless you’re desperate, you can always walk away and spend your time preparing for the next interview.
The HR Screen
HR screens will consist of behavioral questions, asking you to explain certain parts of your resume, why you wanted to apply to this company and examples of when you may have had to deal with a particular situation in the workplace. Occasionally you may be asked a couple of simple technical questions, perhaps a SQL or a basic computer science theory question. Afterward, you’ll be given a few minutes to ask questions of your own.
Keep in mind the person you’re speaking to is unlikely to be technical, so they may not have a deep understanding of the role or the technical side of the organization. With that in mind, try to keep your questions focused on the company, the person’s experience there, and logistical questions like how the interview loop typically runs. If you have specific questions they can’t answer, you can always ask the recruiter to forward your questions to someone who can answer them.
Remember, interviews are a two-way street so it would be in your best interest to identify any red flags before committing more time to the interviewing with this particular company.
- Read the role and company description.
- Lookup who your interview is going to be and try to find areas of rapport. Perhaps you both worked in a particular city or volunteer at similar nonprofits.
- Read over your resume before getting on the call.
- Come prepared with questions.
- Keep your resume in clear view.
- Find a quiet space to take the interview. If that’s not possible, reschedule the interview.
- Focus on building rapport in the first few minutes of the call. If the recruiter wants to spend the first few minutes talking about last nights basketball game, let them.
- Don’t bad mouth your current or past companies. Even if the place you worked at was terrible, it rarely will benefit you.
The Technical Call
At this stage of the interview process, you’ll have an opportunity to be interviewed by a technical member of the team. Calls such as these are typically conducted using platforms such as Coderpad, which includes a code editor along with a way to run your code. Occasionally you may be asked to write code in a Google doc. Thus you should be comfortable coding without any syntax highlighting or code completion. Language-wise, Python and SQL are typically the two that you’ll be asked to write in, however, this can differ based on the role and company.
Questions at this stage can range in complexity from a simple SQL question solved with a windows function to problems involving Dynamic Programming. Regardless of the difficulty, you should always ask clarifying questions before starting to code. Once you have a good understanding of the problem and expectations, start with a brute-force solution so that you have at least something to work with. However, make sure you tell your interviewer that you’re solving it first in a non-optimal way before thinking about optimization. After you have something working, start to optimize your solution and make your code more readable. Throughout the process, it’s helpful to verbalize your approach, since interviewers may occasionally help guide you in the right direction.
If you have a few minutes at the end of the interview, take advantage of the fact that you’re speaking to a technical member of the team. Ask them about coding standards and processes, how the team handles work, and what their day to day looks like.
- If the data science position you’re interviewing for is part of the engineering organization, make sure to read Cracking The Coding Interview and Elements of Programming Interviews since you may have a software engineer conducting the technical screen.
- Flashcards are typically the best way to review machine learning theory which may come up at this stage. You can either make your own or purchase this set for $12. The Machine Learning Cheatsheet is also a good resource to review.
- Look at Glassdoor to get some insight into the type of questions that may come up.
- Research who is going to interview you. A machine learning engineer with a Ph.D. will interview you differently than a data analyst.
- It’s okay to ask for help if you’re stuck.
- Practice mock technical calls with a friend or use a platform like interviewing.io.
- Don’t be afraid to ask for a minute or two to think about a problem before you start solving it. Once you do start, it’s important to walk your interviewer through your approach.
The Take Home Project
Take home’s have been rising in popularity within data science interview loops since they tend to be more closely tied with what you’ll be doing once you start working. They can either occur after the first HR screen prior to a technical screen or serve as a deliverable for your onsite. Companies may test you on your ability to work with ambiguity (e.g. Here’s a dataset, find some insights and pitch to business stakeholders) or focused on a more concrete deliverable (e.g. Here’s some data, build a classifier).
When possible, try to ask clarifying questions to make sure you know what they’re testing you on and who your audience will be. If the audience for your take home is business stakeholders, it’s not a good idea to fill your slides with technical jargon. Instead, focus on actionable insights and recommendations and leave the technical jargon for the appendix.
While all take homes may differ in their objectives, the common denominator is that you’ll be receiving data from the company. So regardless of what they’ve asked you to do, the first step will always be Exploratory Data Analysis. Luckily there are some automated EDA solutions, such as SpeedML. Primarily what you want to do here is investigate peculiarities in the data. More often than not, the company will have synthetically generated the data, leaving specific easter eggs for you to find (e.g. A power law distribution with customer revenue).
Once you finish your take-home, try to get some feedback from friends or mentors. Often if you’ve been working on a take-home for long enough you may start to miss the forest for the trees, so it’s always good to get feedback from someone who doesn’t have the context you do.
- Practice take-home challenges which you can either purchase from datamasked or by looking at the answers without the questions on this Github repo.
- Brush up on libraries and tools that may help with your work. For example SpeedML or Tableau for rapid data visualization.
- Some companies deliberately provide a take-home that requires you to email them to get additional information, so don’t be afraid to get in touch!
- A good take home can often offset any poor performance at an onsite. The rationale being that despite not knowing how to solve a particular interview problem you’ve demonstrated competency in solving problems that they may encounter on a daily basis. So if given the choice between doing more Leetcode problems or polishing your onsite presentation, it’s worthwhile to focus on the latter.
- Make sure to save every onsite challenge you do. You never know when you may need to reuse a component in future challenges.
- It’s okay to make assumptions as long as you state them. Information asymmetry is a given in these situations and it’s better to make an assumption than to continuously bombard your recruiter with questions.
An onsite will consist of a series of interviews throughout the day, including a lunch interview which is typically evaluating your ‘culture fit’.
It’s important to remember that any company that has gotten you to this stage wants to see you succeed. They’ve already spent a significant amount of money and time interviewing candidates to narrow it down to the onsite candidates, so have some confidence in your abilities!
Make sure to ask your recruiter for a list of people who will be interviewing you so that you have a chance to do some research beforehand. If you’re interviewing with a director, you should focus on preparing for higher level questions such as company strategy and culture. On the other hand, if you’re interviewing with a software engineer it’s likely that they’ll ask you to whiteboard a programming question. As mentioned before, the person’s background will influence the type of questions they’ll ask.
- Read as much as you can about the company. The company website, CrunchBase, Wikipedia, recent news articles, Blind, Glassdoor, all serve as great resources for information gathering.
- Do some mock interviews with a friend who can give you feedback on any verbal tics you may exhibit or holes in your answers. This is especially helpful if you have a take-home presentation that you’ll be giving at the on-site.
- Have stories prepared to common behavioural interview questions such as, ‘Tell me about yourself”, ‘Why this company?’, ‘Tell me about a time you had to deal with a difficult colleague”.
- If you have any software engineers on your onsite day, there’s a good chance you’ll need to brush up on your data structures and algorithms.
- Don’t be too serious. Most of these interviewers would rather be back at their desk working on their assigned projects. So try your best to make it a pleasant experience for your interviewer.
- Make sure to dress the part. If you’re interviewing at an east coast fortune 500, it’s likely you’ll need to dress much more conservatively than if you were interviewing with a startup on the west coast.
- Take advantage of bathroom and water breaks to recompose yourself.
- Ask questions you’re actually interested in. You’re interviewing the company just as much as they are interviewing you.
- Send a short thank you note to your recruiter and hiring manager after the onsite.
The Offer and Negotiation
Negotiating for many people may seem uncomfortable, especially for those without previous industry experience. However, the reality is that negotiating has almost no downside (as long as you’re polite about it) and lots of upside.
Typically companies will inform you that they’re planning on giving you an offer over the phone. At this point, it may be tempting to commit and accept the offer on the spot. Instead, you should convey your excitement about the offer, and ask that they give you some time to discuss it with your significant other or friend. You can also be up front and tell them you’re still in the interview loop with a couple of other companies and that you’ll get back to them shortly. Sometimes these offers come with deadlines, however, these are often quite arbitrary and can be pushed by a simple request on your part.
Your ability to negotiate ultimately rests on a variety of factors, but the biggest one is optionality. If you have two great offers in hand, it’s much easier to negotiate because you have the optionality to walk away.
When you’re negotiating, there are various levers you can pull. The three main ones are your base salary, stock options, and signing/relocation bonus. Every company has a different policy, which means some levers may be easier to pull than others. Generally speaking, signing/relocation is the easiest to negotiate, followed by stock options and then base salary. So if you’re in a weaker position, ask for a higher signing/relocation bonus. However, if you’re in a strong position it may be in your best interest to increase your base salary. The reason being that not only will it act as a higher multiplier when you get raises, but it will also have an effect on company benefits such as 401k matching, and employee stock purchase plans. That said each situation is different so make sure to reprioritize what you negotiate as necessary.
- One of the best resources on negotiation is an article written by Haseeb Qureshi that details how he went from boot camp grad to receiving offers from Google, Airbnb and many others.
- If you aren’t good at speaking on the fly, it may be advantageous to let calls from recruiters go to voicemail so you can compose yourself before you call them back. It’s highly unlikely that you’ll be getting a rejection call since those are typically done over email. This means that when you do call them back, you should mentally rehearse what you’ll say when they inform you that they want to give you an offer.
- Show genuine excitement for the company. Recruiters can sense when a candidate is only in it for the money, and they may be less likely to help you out in the negotiating process.
- Always leave things off on a good note! Even if you don’t accept an offer from a company, it’s important to be polite and candid with your recruiters. The tech industry can be a surprisingly small place and your reputation matters.
- Don’t reject other companies or stop interviewing until you have an actual offer in hand. Verbal offers have a history of being retracted so don’t celebrate until you have something in writing.
Remember, interviewing is a skill that can be learned, just like anything else. Hopefully, this article has given you some insight on what to expect in a data science interview loop.
The process also isn’t perfect and there will be times that you fail to impress an interviewer because you don’t possess some obscure piece of knowledge. However, with repeated persistence and adequate preparation, you’ll be able to land a data science job in no time!