Amazon | SDE New Grad | Virtual Onsite | Seattle | Feb 2021 [Reject]
Anonymous User
1721

Status: New grad, BS Computer Science major @ a CUNY college
Location: New York
Interview date: Febuary

This post will only focus on the virtual onsite interview experience. I applied for this position online and completed 3 Online Assessments way back in 2020. However, they only got back to me in 2021 due to additional roles open.

The virtual onsite has 3 rounds. Each round is 45 mins. 15mins behavioral and 30 mins for the technical portion. For the behavioral part, the interivewers are really looking for specific examples. They also look for keywords (from 14 leadership principles). I suggest you prepare as many stories as possible. Make sure you follow the STAR methods as well.

I. Behavioral
A few bq questions I can remember are:

  1. Tell me about the time you went above and beyond for a customer's requirement?
  2. Tell me about a time you have a conflict with your teammate?
  3. Tell me about a time you work in a team/group?
  4. Tell me about a time faced difficult task at work and how you came up with a solution.
    There was way more, but there are a few that came off on top of my head.

II. Technical
Round1:
Given a list of cities numbered 0 to N. And a list of roads connecting these cities as M pairs (1,4), (4,7), (2,3) and so on. A country needs to build airports to connect all the regions. How many airports are needed?

I matched this problem quickly (5seconds). I told him that I think this problem is looking for the number of connected components. He agreed. I then proposed him BFS/DFS approach as follow.

build a graph
for each node from 0 to N
	I do BFS or DFS (to mark all connected verticies)
	increase the counter
return the counter.

He said that makes sense. But he asked me if there was any way I could optimize it. Originally, I tried to avoid mentioning Union Find, but since he seems to look for a more optimal solution. I said I could use UnionFind with path compression implementation. He was then very interested and asked me to implement it (even though he seems to be unfamilar with it). I was kinda worried because I had only about 17mins to complete everything. I went ahead and implemented the UnionFind approach.

Thankfully, I implemnted everything nicely. I'm very confident with my implementation honestly. There was just one problem. This interviewer was just not familar with UnionFind at all. I had to keep explaining to him all the time. If there was any reason why I failed, this might be the reason honestly. If anyone knows a better approach (not using union find), please share with me. I'm really glueless even after the interview.

Round2: It was basically this problem: https://leetcode.com/problems/word-break-ii/
The interviewer tried to be creative to change here and there the problem. But he ended up confusing himself a little bit. I personally, struggle to figure out the recurrence formular in the first 8 mins. But once I figure it out. I coded it super fast using DFS + memo. We walked thru two examples and it seemed that my code work. We discussed the time complexity and he seemed to be happy.

Round3: This round I was very confident that I did well. It was a OOD round. I will just share my question here.

Given a json dataPayload, example:                                                                                               
    {Id: 1, userId: xyz, timestamp: 123, amount: 50, paymentInstrumentId: AMX/VIS/MAS}                                           
                                                                                                                                 
And given the following classes/APIs:                                                                                            
    FraudIdentifier: isFraud(dataPayload): T/F                                                                                   
                                                                                                                                 
    VisaPaymentProvider, AmexPaymentProvider, MasterCardPaymentProvider: transact(amount): {isSuccess: T/F failureReason: String}
                                                                                                                                 
    FraudReport: report(dataPayload): void                                                                                       
                                                                                                                                 
Implement a transaction manager that processes payments payloads with the following requirements:                                
    If the dataPayload is fraudulent then report and show a failure, otherwise transact and show success or failure   

The interviewer was very professional, patient and calm. I like this guy a lot.

Overall, I learned a lot. It was a very good experience (of course not the rejection part). I still think it was one of the best performances I have given out of all my interivews. I got the rejection later after 4 business days. It was disappointing but as usual companies don't usually give out feedback.

Good luck everyone. Cheers!

Comments (7)