Have DS interviews gotten harder in the past few years?
Jul 13, 2021
127 Comments
I’m a DS at Facebook and last interviewed in the industry about 3 years back, at which time I had a breeze interviewing and got multiple offers.
Now I’m interviewing again to see whats out there and am being rejected for roles more than I expected, usually in the technical rounds. I’ve been surprised how specific and unrealistic the questions are, Python and SQL questions that are convoluted - the level of intensity in the questions seems unnecessary to me. Am I the problem? Or are interviews getting much harder than the actual job?
comments
So here's what needs to happen.
1. You have to get better at SQL rounds. I come from quant and research background where there's really no need to use SQL. Everyone has research datasets from carefully designed studies and you just use R or python. I finally got to a point where i could crack the SQL rounds at FAANG or unicorn startups but it took me about 3 months of daily practice, because i don't use SQL every day. I practiced using SQL DB questions on Leetcode, Hackerrank, Codesignal, and Stratascratch. I solved all database problems on Leetcode which is about 175. If you solve around 200 problems within four months or less, you can easily pass this portion. Practice one hour a day, even on weekends no exceptions. On days when you need to take it easy, 15-30 min, on days when you have more time, 2 hours.
2. Now that's the SQL portion. Then, there's Python algorithms similar to what a SWE would do, but think writing custom K nearest neighbors functions. You can practice these on Leetcode, but i also recommend buying an Interview Query membership. Similar level of practice needed here. I would also recommend practicing Python pandas by doing the same SQL data analysis or manipulation questions but execute these in python. In addition, if the position description mentions ETL, dig up code where you wrote one and be ready to talk about a pipeline. If you've never written one, look it up and write one. It's literally just taking a bunch of data from one place and putting it in another using production ready code. People need to take the sticks out of their asses on this one; this isn't rocket science and you're not curing cancer by writing ETL pipelines.
3. You need to review material from most stats and probability courses you took, especially calculus based probability. Spend about a month going through this material.
4. Once you do that, usually there's either an end-to-end analysis take-home assignment of some sort and/or a live coding round where you actually talk through SQL queries or python with a person watching literally everything you type. This is different from doing a timed SQL test on Hacckerrank or Codesignal and they care more about how you 'think', which can be annoying and ambiguous.
Practice take-home test end to end analyses by using Kaggle, Interview Query, and medium data Science. Common analyses they ask for include: A/B test, logistic regression, random forest, multilevel modeling/glm. I recommend setting up report templates in Jypter notebook or rmarkdown for these common analyses and set up a section for data cleaning and merging, that way, you can just plug and chug using the CSV files they give you. This is important to be prepared for because the top companies want these done in 2-5 hours and you have to be able to finish and quality report quickly. The second tier companies will give you 24 hours to a couple days, sometimes a week to turn around an analysis, especially if they want a formal presentation.
5. Then you have the softer skills, the behavioral stuff, product sense questions, and cultural fit and why you want to work there etc. You talk about your background and how it fits exactly into what they are looking for even if it doesn't. Force them to believe it lol. You may also be asked random niche stats questions in the on-site or hiring manager round that you likely won't know the answer to unless you review old course material. If you're fresh out of undergrad or grad, this shouldn't be hard but for working professionals it is. I literally hung up on a hiring manager for asking me to go into excessive detail about hierarchical regression for a business case that was not in front of my face, so i only had the information she explained to me. I'm a hands on person and like to see what I'm working on, so i found this annoying. After about four minutes of dealing with her bad vibe, i hung up and said nothing else. There are a lot of stats methods out there and only so much time so this is luck of the draw unfortunately. In the onsite you will likely be talking about whatever take-home assignment or presentation you did in one of the many interviews.
On top of all of this, DS is so different from company to company that whatever they have you do can be drastically different for each place, but following this will at least prepare you up until the onsite. I am now able to get to onsites but it took me four, almost five months to get an onsite at a tier 1 tech company. I have now been rejected from three on-sites but have three more booked for the next three weeks, with 9 other intro calls lined up this week and next.
You can get there too, but if you want to cover all bases, definitely follow the general advice in this list - there are other tips and tricks too out there (but don't hang up on a hiring manager 😅).
Disclaimer: this advice does not include the other things you may want to consider when job hunting, once you get the offer, like WLB and team dynamics / politics. Unfortunately, even after all of the work and suffering you have to go through to get an offer, it still could be a bad fit and you might have a shitty team with horrible coworkers that you secretly wish would just drop dead.
I thought that getting the offers would make me feel a sigh of relief. But, some of the offers made me feel worse because one of the companies told me that they were actually looking for a junior data analyst and essentially offered me less than what we had originally agreed upon and another company told me they were looking for a senior ds but only offered to pay me the equivalent of a junior ds (it was a significant pay cut from my previous role). There was a lot of back and forth and a lot of negotiating before I could find teams with a reasonable offer.
All this to say, don’t feel discourage! I know that it is a lot of work, especially since the ds roles and responsibilities are not standardized across any industry / company, but with enough practice…you will start to get the offers! Hopefully, they all come around the same time so that you can use those to negotiate a better offer for yourself!
Best of luck! 😃
Saying that a ds needs to build and explain an ML model just shows how clueless you are.
In some companies DS is like MLE, in others DS is hardcore modeling and in some it’s a product analyst SQL role.
OR
You’re a True Data Scientist doing actual data science and in which case congrats