whatnot | Software Engineer | Interview Experience
Interview Date: Not specified
Result: Not specified
Difficulty: Not specified
Interview Process
The interview process consisted of three rounds.
First Round:
- Format: Online interview with Karat
- Duration: 15 minutes for resume review, followed by 45 minutes of coding.
- Coding Question: A problem from the Jianshu question bank related to access control card validation.
Second Round:
- Format: On-site interview
- Duration: 1 hour of coding.
- Coding Questions:
- Question 1: LeetCode 680.
- Question 2: Sending notifications. The task was to manage a list of notifications, where each notification contains a message and the day it was sent. Given a limit ( k ), the requirement was to ensure that no more than ( k ) different messages could be sent in one day. The solution involved using a map to track the last sent day of each message. Clarification of input and output was crucial due to the complexity of the problem.
- Follow-up: If the limit was not just one but ( k ), the candidate suggested using recursion to check and decrement ( k ).
- Follow-up 2: Adding a cooldown period if the limit was reached, requiring a wait before sending messages again. The candidate proposed using a value in the map to track the number of days passed. The interviewer hinted that a queue could also be a viable data structure.
Third Round:
- Format: Video interview
- Duration: 50 minutes of coding plus 25 minutes of product sense discussion.
- Coding Questions:
- Question 1: Check for unsafe words using a set to determine if any unsafe words are present.
- Question 2: Check for unsafe phrases, where the phrases consist of multiple words and must appear in their entirety in the text. The candidate proposed using a prefix tree with words as keys.
- Note: The candidate initially implemented the second question character by character instead of word by word, but adjusted after the interviewer’s guidance.
Technical Questions
- LeetCode 680 (String Manipulation)
- Sending Notifications (Data Structures)
- Check Unsafe Words (Set)
- Check Unsafe Phrases (Prefix Tree)
Tips & Insights
- Clarifying the problem requirements and expected outputs is essential, especially for complex questions.
- Familiarity with regular expressions can be beneficial for handling text processing tasks.
- When faced with follow-up questions, focus on explaining the thought process rather than writing complete code.