- Published on
Amazon | SDE2 | Seattle | 2024 [Accepted]
- Author
- Shared Anonymously
Sharing my Amazon interview experience as a Master’s new grad with 4 YoE in software development outside of the US
May 23rd: Recruiter reached out via Linkedin
June 21st: Completed the OA
- 2 coding questions that can be solved with greedy algorithms
- work simulation that involved system design decisions
- work style assessment
June 24th: Recruiter informed that I passed the OA
July 24th: Virtual Onsite
-
2 LP questions before each techincal question
-
I did a lot of mock interviews with current Amazon employees which I think was very helpful. All interviewers were very satisfied with my stories.
-
System Design
-
design a platform for amazon employees to watch training videos, similar to design YouTube
-
I learn most of the system design principles from my past work experience. I just watched youtube videos to know the format and brushed up my knowledge.
-
Coding:
-
I started with BFS, figured out along the way that DFS was better but interviewer said to just keep doing BFS
-
Discussed how I would implement DFS but did not actually write the code
-
Couldn't figure out the exact time and space complexity but did talk through the general idea of what was happening in my algorithm and the interviewer seemed to be satisfied
-
Given a file containing hourly and monthly employee salary (wage, employee_id, manager_id) calculate the total compensation by manager id
-
Talked about how to access data, using hashmap to aggregate employee by manager_id, caching result, how it would fit in memory etc.
-
Interview asked follow up question about how I would implement this in production. I suggested using RDMBS with caching layer and batch job to update/aggregate the salary data.
-
Calculate K-most popular items in a stream. (event_id, item_id, timestamp)
-
At first, I thought it was similar to top-k-frequent-elements but the new data keeps coming so heap isn't very efficient. I did implement it with hashmap counter and heap at first but found a problem when item already in the heap is added and need to rebuild the heap. Ended up just using an array and sort on every new event.
-
Follow up question: what if we have a sliding window for events in the last X hours only. Didn't have time to implement the follow up question but talked about how I would use a queue to keep track of events in the current window.
-
Overall, I couldn't come up with an optimal solution but the interviewer was satisfied with how I talked through my reasoning and why I chose each data structure
-
Might be similar to LFU cache
July 29th: offer given