Who am I: Bachelor in CS, 10 years of experience in Brazilian companies.
Interview: May 2020
Leetcode: 108 questions in less than 2 months
I applied online and was contacted by a recruiter some weeks later. The first step was the Onsite Assessment, then a deeper phone conversation with the recruiter and, finally, the Onsite Interview.
Pretty much what is expected according to leetcode list of questions. I got 2 questions out of this list and I finished it with 1 failing test case that I was not able to solve.
It was consisted of 4 1-hour interviews, with a 1-hour break in the middle.
Round 1: Android system design
I was asked to draw a simple android application. I should draw some screens, define how would be the communication, define its behaviour and code some API contracts. As every Amazon Onsite Interview, I was asked LP questions as well.
Round 2: General Algorithms
I was asked some LP questions at the beginning, and after I was presented a general problem that would be classified as Medium on LC. I solved it iteratively in Java and the interviewer asked some follow up question about it. I was able to find a good solution (perhaps the optimal solution), as I explained how I was trading space for time. I used a huge map to allow the algorithm to run faster. The last question by the interviewer was if I liked my solution, and I definitively liked the solution I presented.
Round 3: Android Algorithms (Bar raiser)
After 1 hour break, I was asked a few LP questions at the beginning and moved to Android question. For the first challenge, the interviewer presented me some endpoints and asked me to create an application that would consume them and present to the user. I started creating kotlin code to consume the endpoints, use cases to make these requests and ViewModels that use these use cases. I was explaining a lot of stuff on Android as I was coding (not much structured, in a single file and it would definitively fail at compile time), and could not reach the interface code, as I was interrupted by the interviewer because he did understand my Android knowledge level.
After this first part, they gave me a general object-oriented question and the interviewer asked me to define the models and present a solution. I developed the solution in Java and it was not optimal, but I believe I explained well my choices and why I used them. I was asked some follow up questions and I was able to improve a little my solution.
Round 4: General Algorithms
This round was with the senior manager of the team and it seemed more interested in my LP answers, asking more follow up questions than the other interviewers. After 15-20 minutes of LP questions, he gave me a general algorithm problem. I was requested to model the objects and solve the problem. I tried to solve it and during the process, I made some mistakes that I was able to fix before finishing. When I was testing a sub-method, the interviewer suggested I had a bug in a part of my solution I haven't tested yet. I was able to solve it making the algorithm better. In the end, he was very friendly in answering my questions and even passed some minutes over the scheduled end time answering my questions.
I received an email asking for a time to receive a call 4 business days after my onsite interview, and I received a positive response on the 5th business day. In this call the recruiter said they liked me and gave me a preview of my compensation. 6 more business days (11 business days after my onsite interview) I received the final call with the details of my offer, the start date and everything else. I was asked when I would inform them of my decision, and I made it later on the same day.
Compensation: https://leetcode.com/discuss/compensation/683680/amazon-sde-2-toronto-canada