Hi all,
I recently interviewed for Hubspot for Senior Software Engineer role.
Application
I applied for this role via LinkedIn without any referral. I was contacted by the recruiter within a month of applying. The recruiter first scheduled a call with me to get to know more about my experience, to understand what I was looking for from this role, and to explain the whole interview process.
Online Assessment
For the online assessment, you receive a problem statement where you have to get data making a GET request from an API given to you, then transform the data, and then POST the response.
You can use any IDE for this purpose. You have 3 hours to solve this problem. I used Python to do this. For the data I was given, it was a list of emails with message, timestamp, sent by, sent to, etc details. I had to return the data as inbox view for a particular user. I had to send a list of the conversations the particular user was having with other users showing only the last message sent between the two users. The list was supposed to be ordered with the most recent message on top.
You can make as many requests to the POST API as you need. If your answer is correct, you will get 200 response from the API.
Once you're done, you can upload your code to the link provided.
Coding Round
For coding round, I was given one question:
For a given string, find the substring of given length K that has the highest occurence.
For the coding round, you can use your own IDE if you'd like. I would recommend using your own IDE and have the setup ready so that you are more familiar with everyone. The interviewers expect a fully working code no matter which language you pick. It is okay to use IntelliSense.
You are expected to tell the time and space complexity for the code.
In my case, I suggested to generate all substrings of length K and then storing them in a hashmap with count to keep a track of the substring that is seen most often. This is O(N) time and space complexity solution.
The interviewers were happy with this solution.
System Design Round 1
I was asked to design Netflix. These were the primary things my interviewer wanted me to focus on:
System Design Round 2
I was asked to design a weather widget app with the following requirements:
As part of our custom CMS, we have a module system where we can add new module types. Let's imagine we want to add a weather module. A customer can configure a module with a predetermined zip code (often called a postal code outside the US) and display a simple weather module that includes an icon representing the current conditions, the current temperature, a high, and a low.
Of course the service will need the actual weather data. In the US, the National Weather Service provides free, hourly dumps of weather data for ~2,000 locations around the country.
Design a system that meets these requirements:
The Weather Service API has the following endpoints:
GET nws.com/download - the API response is a .zip file containing XML files representing each zip code as the file name, e.g. 02412.xml
nws/download -> {[zip: {currTemp:1, high:2, low:3,currCond:CLOUDY...}]}
One interesting question I was asked after I had designed this system and answered all their questions pertaining to my design was how can I creatively reduce the cost of the system I designed?
You can use any whiteboarding tool to for this interview. I prefer using excalidraw.
Result
I cleared all the interviews and the next round is the behavioral round scheduled with the hiring manager.
Hope you find my experience helpful.
Thanks!