Intuit Interview Experience
interview
This post is to share my interview experience with Intuit for a Senior Software Engineer position in Bangalore(May 2019). I was initially contacted by a recruiting agency who co-ordinated the interview process.
Round 1 - HackerRank
The interview was conducted on a weekday at the Intuit office in Ecospace Tech Park. There were 20-30 other candidates, so I think it must have been a planned hiring drive.
The first round was a 2-hour HackerRank test, and I was given the option to use my own laptop. There were 3 questions in total:
1. A simple problem involving planting trees on a 2D grid
- Can’t remember the exact question, sorry about that
. This was the easiest of all.
2. Find if the given words exist in a 2D grid
- You can find it on Leetcode
3. Given a graph, find the minimum number of edges
- You can find it on GeeksforGeeks
I had seen these questions before, so I was able to solve all of them within the allocated time. However, there were a couple of failing test cases but I couldn’t do much about them since HackerRank didn’t show what the failed test cases were - It looked to me that my solution should have solved all cases, and I couldn’t identify the problem after revising the code many times. It didn’t matter though, as the recruiter told me that I am through to the next rounds.
Round 2 - Coding + System Design
The next round was a F2F with a Staff Engineer, and was focused on coding and system design.
Design a (weird) queue manager that manages 2 Queues internally. One is a normal queue, and the other is a Priority
Queue. The queue manager should implement a poll() method, which does the following:
The first 2 calls to the method poll/remove elements from the PQ, and the third call polls from the normal queue
once - This patten repeats for all subsequent calls
I implemented this with a simple counter (count
), and initialize it to 0
. For every peek()
call to the
QueueManager, check the value of count
- If it’s 0
or 1
, use the priority queue, else if it’s 2
, use the
regular queue. Increment count
after every call, and reset it 0
after the 3rd call.
She then asked me to enhance it for concurrent access, which I did by using the synchronized
block to make certain
parts of the method thread-safe. She asked a couple of questions about synchronized
methods and blocks, and that
was it. She left the room multiple times during the interview and that put me off a bit.
We moved on to the next question, which was to Design a Json Parser
. This question did not go as well as I had hoped.
It took me some time to scope out the requirements of the parser. I also haven’t written parsers before, and had lots of
questions/doubts about how to handle different datatypes (numbers, strings) and how to handle composite types like
objects and arrays (which wasn’t clarified by the interviewer). I was trying to think out loud, but I wasn’t
able to come up a satisfactory solution because I wasn’t clear on some basic things I mentioned earlier. I then
wrote an algorithm for building a JsonTree from a string, and a DFS for traversing the nodes of the JsonTree and
serializing them to a string. There were a lot of obvious flaws in both and we had to wrap up since we were out
out time.
After the round, I got a feedback from the recruiter that I didn’t do well on the 2nd question, and that I should be clearer in coding and explaining my solution. In my opinion, designing a JSON parser is pretty complicated - I think I did whatever I could in 30 minutes and would’ve done better, if the interviewer clarified some of my questions better.
Round-3 - Coding + Data structures
The second F2F round was with a Senior developer, and he asked the following question on BST, after the usual
introductions. He was really friendly, and I could see that he was genuinely trying to answer my questions and help
me during the interview.
Given a BST and value k, find the number of nodes less whose value is less than k
I walked him through the logic and wrote the code, once he was satisfied the logic would handle all cases. We then
jumped on to a more java-specific question:
Given two threads that print odd and even numbers, synchronize them to print numbers sequentially
This is a very common question, and I was already asked a variation of this in my interview with Dunzo earlier. I could answer it without much trouble and was able
to fix a minor issue the interviewer pointed out.
After these rounds, the recruiter mentioned that he will collect feedback from all recruiters and contact me in a couple of days, and that I should be prepared for few more rounds of interviews if the feedback is positive.
Final Thoughts
I never heard back from the recruiter after this, in spite of me trying to reach out to him multiple times over phone and email. Of all the companies I interviewed around this time, Intuit was the only company that ghosted me - Definitely not the ending I hoped for. One of the reasons I decided to interview with Intuit was the amazing culture many online reviews were raving about - To be honest, my interview experience made me doubt all that (sour grapes, perhaps? 😛). But life goes on!