Round 1: DSA
Questions: Two questions, both variations of Regular Expression Matching. Code needs to compile and run and should pass the given test cases.
Candidate's Approach
- Finished the code in time with an optimal solution.
- Took some time to think through the solution but was able to write faster.
- 7 out of 8 test cases passed.
Interviewer's Feedback
Interviewer was satisfied with the candidate's performance.
Round 2: DSA and Low Level Design
Questions: Implement a thread-safe Key-Value (KV) store without using any inbuilt library with the following APIs: put, get, delete. Discussed a few use cases of the KV store and about the hash function.
Candidate's Approach
- Came up with a solution using separate chaining.
- Implemented the solution within the given time, and the code was working as expected.
- Made the KV store thread-safe by implementing a reader-writer class.
Interviewer's Feedback
This round went pretty well, and the candidate received a strong hire recommendation.
Round 3: Hiring Manager
Questions:
- Discussed multithreading, debugging, and coding.
- The interviewer provided a code for a circular buffer and asked the candidate to find mistakes in it.
- The candidate pointed out threading issues and discussed various approaches to overwriting the buffer.
- The interviewer then asked the candidate to implement a document search problem, requiring a prefix search on a list of documents.
Candidate's Approach
- Discussed the inverted dictionary approach and settled on the Trie approach.
- Implemented the Trie but encountered a small bug that prevented the code from running.
Interviewer's Feedback
The round extended to 2 hours, which was seen as a positive sign. However, the candidate was ultimately rejected without specific feedback.