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!


See Also