Freshbooks Interview Experience
This post is to share my interview experience with Freshbooks for a Senior Software Engineer position in Toronto(July 2019). I was initially contacted on LinkedIn by a Fresbooks technical recruiter who co-ordinated the interview process.
Round 0 - Cultural fit, with Engineers
The first round was with a couple of senior engineers and was focused on behavioral questions to evaluate culture fit . I was a bit surprised because this was the first company I interviewed where behavioral interviews happened before the technical rounds.
What is your ideal work environment?
What does culture mean to you?
Have you had any differences of opinions with team mates? If yes, how did you go about resolving it?
Who are the developers you looked up to? What are their qualities that made you look up to them?
Have you mentored anyone in your team?
What's the most important quality you look for, in a potential team-mate?
Round 2 - Culture fit, with Engineering Manager
The 2nd round was with an Engineering Manager, and focused on behavioral questions, and questions about my past experience and previous ambitions.
Tell me about yourself
Have you had any conflicts with your manager?
How did you go about resolving it?
What would people remember about you, in your previous workplace?
If given a chance, what would you change about your career so far?
Have your actions ever angered someone at work? How did that happen? How did you sort it out?
What do you consider to be your greatest achievement?
I got to know from the interviewer later that day, that the feedback was positive and the next step was a take-home test on Codility, to be completed in the next couple of days.
Round-3 - Codility
The Codility test had 3 questions in total:
SQL challenge - This was a really tough one, and needed multiple joins, UNION ALL, CASE WHEN, sub-queries
, aggregates and ordering. I wasn’t even close to solving this, and was hoping the other questions would get me over
Bug fixing - The 2nd question involved fixing a bug in a piece of working code (10-20 lines). It did not use any
complex constructs - The code had a few loops and conditionals and I just had to debug and fix how a couple of
variables were initialized/modified.
Crop the message - The 3rd task was to crop an input string based on certain constraints. This wasn’t very
complicated and involved loops and string functions.
After this test, the recruiter scheduled 2 more on-site interviews. Both were supposed to be more technical , compared to the culture-fit rounds I had during my first visit.
Round 4 - Projects + Object Oriented Design
This round was with a couple of senior engineers and focused on object oriented design and exploring some of the previous projects I worked on. The following were some of the questions asked:
Explain the most challenging project you had worked on recently
What was the most challenging aspect of the project?
What did you go for a relational database for this use case? Did you explore any document-based databases?
How did you version your APIs?
How did you handle production issues? What was the process around it?
How did you handle logging, alerting, monitoring?
Whiteboarding question - Design a parking lot - I asked them a lot of clarifying questions(does the parking lot has
multiple floors, what type of vehicles, etc). After scoping the requirements, I walked the interviewers through the
classes and interfaces I in my design and then answered their questions when certain requirements are tweaked.
Extend the above design for billing customers for parking - I followed the same process I did for the previous
question and added the new classes to the existing design for supporting this feature.
Round 5 - With Director of Engineering
The final round was with a Senior Director of Engineering and was mostly technical in nature. The following were some of the questions asked.
What kind of problems are you expecting to solve in your next job?
Tell me one thing that's not on your resume
How do you go about testing an application? (Unit + Functional + Integration + Perf + Load, etc)
Different types of load testing(load over time, stress, etc)
Reverse each row in a 2D array in less than O(m * n) time - I couldn’t solve it with the expected time complexity
, and was asked to figure out in the next couple of days. I tried suggesting a multi-threaded solution where each
thread reverses a row concurrently but that wasn’t accepted. I haven’t managed to figure out an algorithm that could
do this in <
O(m * n) - Please do comment in case you know of the solution.
I got an offer a few days after the last round, but ended up rejecting it in favour of the other offers I had. I really loved everyone I met at the company - They were all smart, humble and fun people whom I’d have love to work with. The office was pretty cool as well - Would recommend friends to give this company a shot, when they are looking out next time 😄