Round 1 - Logical Reasoning OA
Questions: Basic Math questions and image pattern recognition questions.
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 2 - Code Signal OA
Questions:
Key Value Store implementation which can have 2 keys. There were 4 levels. It’s somewhat similar to the Timemap question on Leetcode but you will have 2 keys here.
Timemap Question on Leetcode
Example:
key1, sub_key1, timestamp = val1 key1, sub_key2, timestamp = val2
Questions were like:
- return all values of key1
- return latest value for key1, sub_key1
- return value for key1, sub_key1 at a given timestamp
- delete key
- delete subkey
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 3 - Foundational Interview
Questions: General Behavioral Round questions.
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 4 - Tech Execution Interview
Questions:
Level 1:
Write an alternate iterator for a list of lists. Similar to ZigZag Iterator on Leetcode but you can have not just 2 but 'n' lists within the list;
ZigZag Iterator on Leetcode
Example:
lists = [[0, 1, 2], [], [3, 4], [5]] output should be 0, 3, 5, 1, 4, 2
Level 2:
Write a range iterator. Should support negative step as well.
Example:
start = 0 end = 10 step = 2 output should be [0, 2, 4, 6, 8, 10]
Level 3:
Write a basic list iterator.
Example:
list = [0, 1, 2, 3, 4, 5] output should be 0, 1, 2, 3, 4, 5
Level 4:
Modify the class written in level 1 to take a list of iterator objects instead of lists and print the numbers in alternate fashion. The iterators list can contain both range iterator and list iterator.
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 5 - Domain Interview
Questions:
You will be given a list of transactions. You need to write a generic search API to filter on a combination of specific fields and values.
Example:
transactions = [ {id: 1, time: 1, userId: 1, amount: 10}, {id: 2, time: 2, userId: 3, amount: 10}, {id: 3, time: 3, userId: 4, amount: 11}, {id: 4, time: 4, userId: 2, amount: 12}, ]
Filters should support operations like "=", ">", "<" etc. The question is open-ended. You need to decide how the input should look like.
Follow up:
- Explain pagination and why we need it?
- What are some of the techniques used for pagination?
- How do you choose a cursor id column when using cursor-based pagination?
- Enhance your code to support cursor-based pagination.
Candidate's Approach
No approach provided.
Interviewer's Feedback
The interviewers were really nice. They were helping me whenever I got stuck. The recruiter too was good. He frequently gave me updates and feedback.