The interview process went as follows:
- I was initially contacted by a technical recruiter at Quantifind.
- Next, I had two initial phone screens (both data scientists). Both phone screens were exploratory (Q&A) and technical. I was asked about probability (model building, distributions), algorithms, and time series analysis methods (autoregressive models, residual analysis, outlier detection, robust statistics).
- I was then scheduled for an on-site.
=> The first interviewer was a data scientist. I was asked technical questions about my previous work (Markov models, time series analysis, Markov chain Monte Carlo, confidence interval generation, sampling techniques).
=> The next interview was an engineering interview. After Q&A about the company's technology stack, I was asked algorithm questions (the Skyline problem) and asked to whiteboard a solution.
=> The next interview was with a member of the client services team. After Q&A about how the company manages its relationships with clients, I was asked how I would explain various topics to non-technical audiences (an autoregressive model, how can a model be more accurate but less explanatory, why I would opt for a model with greater explanatory power over a model which is more accurate but less explanatory, and one analysis technique pulled from my resume (HMMs)).
=> The following interview was with another member of the client services team. More Q&A about how the company manages client relationships, how the company educates clients about the product, and the types of problems clients are looking to solve.
=> The next interviewer was a data scientist. He was a recent hire. We discussed on-boarding, how the data science team uses Scala for development and in production, and team structure. I was asked to explain and whiteboard various aspects of my previous work (change-point detection algorithms, stream statistics, similarity metrics (edit distance)).
=> The last interview was with the data scientist who performed the second phone screen. The interview was a Q&A about the role and any questions that arose during the interview process.
=> Lastly, the technical recruiter and I had a brief conversation about next steps.
- I was then given a programming project (finding anagrams in Wikipedia pages) and scheduled for a second on-site.
=> I met with the data scientist who performed the second phone screen to review the project and my solutions.
=> I met with a member of the client services team for further Q&A regarding company culture and client relations.
=> I received a product demo from a co-founder and discussed company history and vision.
=> I had a follow-up with the technical recruiter to discuss expectations and any further questions.
- I received an offer letter and was scheduled for an on-site for contract negotiations.
=> I met with the VP of Engineering to discuss the product, engineering culture, and negotiate contract terms.
=> I met with the data scientist who performed the second phone screen for any remaining Q&A.
=> I had a follow-up with the technical recruiter to discuss benefits and perks.
Everyone I met at Quantifind was awesome. I really enjoyed all my conversations and was given a great opportunity to understand the company and the product. The compensation package was competitive, and the role provided significant opportunity for growth, ownership, and advancement.
Note that, in the end, I chose to decline the offer because of the commute from where I live in SF to Menlo Park (3.25hrs roundtrip). Ultimately, my decision was a lifestyle decision based on my personal circumstances. Quite a few Quantifind engineers commute from SF, but the commute was not something I wanted.