Recruiter reached out to me via LinkedIn. 1 brief conversation and 2 technical phone screens later, I was brought onsite. The candidate gets to dictate how long/short the process needs to take; in my case, I decided to let it span over a period of 1.5 months. Phone screen questions were relatively straightforward:
PhoneScreen1:
1. Add 2 large numbers represented as linked lists and return the resulting linked list
2. Check if a binary tree is a valid BST
PhoneScreen2:
1. Implement a caching layer for a web application
2. Talk about your favorite unix utility (i spoke about grep, where it shines, and what its limitations are)
Onsite Interview:
Round1: Implement a scalable service that counts the frequency of words present in tweets.
Round2: Talk about an exciting personal cs project. You are given a 2D integer matrix and the "contours" of a space inside that matrix. Count the sum of all cells inside that space within O(1) time using some clever pre-processing.
Round3: Join the siblings of a binary tree that does NOT have any parent pointers.
Round4: Design a scalable architecture that broadcasts tweets from can account for heavy-hitters (celebrities) and normal users with fewer followers. Implement merge sort for a singly linked list.
Round5: I don't remember the question clearly, but it was along the lines of an array with several elements and needing to create a high-value "chain" by connecting an element with other adjacent elements that are at least 1 hop away from each other. For example: consider an array like [12,5,14,15,8,10]. We can form an allowed chain by combining 12, 14, 8 (total weight is 34). But the best chain to be formed here is 12, 15, 10 (total weight is 37).