Did the code screen on HackerRank. Passed and the recruiter tried to get me to do a phone screen afterwards. I said I was really busy and he waived it for me.
Onsite:
I never even got to draw anything. Since we have to have accuracy, we need to use SQL for its consistency. For wide availability, use synchronous write on a replica set. To guarantee correctness, shard the database on the item id, use consistent hashing to find the right shard, lock the row, update it, then release the lock.
Then the interviewer just jumped into the LPs. I never drew a thing.
Interviewer was nice.
Given an API with 2 methods getFriends(person: str) and getPurchases(person: str), find all the items purchased by your friends, but not by you. Return the list with the most popular items in the front and the least popular items in the back.
This interviewer seemed a bit nervous, but was overall a nice guy.
Follow up: If your friend buys duplicate items, it should not increase the overall item count. Modify the code so that one friend buying an item 5000 times is considered the same as the friend buying it one time.
Follow up: Now you want to do this for your friends' friends and their friends too!
(Write a BFS)
4 LPs, he just typed what I said.
Write a word recommendation system that gives a list of recommendations given a specific input.
I said "prefix tree" and the interviewer said "yeah, just go ahead..." :)
2 LPs, very in-depth follow-up questions.
This was by far my favorite interviewer.
(1) Minimum number of coins to make change for a certain amount and (2) given a phone number, return all the T9 text combinations for that number.
2 LPs.
Make sure your LPs portray you as someone who has led projects, worked across teams, worked with business, had high impact, and has next-level experience (if you want L5, try to have some L6-level examples too!)