It all started back when I was still working at SAP. A few colleagues mentioned Amazon was opening up another office in Yaletown. I believe it was in January 2013 or so. I wasn’t very interested at first, but after hearing about it a couple times, I gave it some more thought and decided it wouldn’t hurt. I was going to leave SAP at the end of April, and if Amazon turned out to be a good fit, I just might go there. This was before I interviewed and got offers for Palo Alto, one other company, and the company I worked for from May to July.
There were a few listings on their website, so I applied to a “Web Development Engineer” posting for Vancouver as I felt it was the best match for my skills and experience. I wasn’t actively looking for a job at that point, so I didn’t think much of it and pretty soon, forgot I had even applied. Then, out of the blue, I was contacted by one of Amazon’s recruiters on May 24th 2013 for an interview on the 29th. I seriously considered declining it as I had just moved to my new job for a month, and was certainly not looking to leave (yet).
As many people know, I absolutely hate speaking on the phone. First of all, I’m more of a listener, and when I’m speaking with a stranger for the first time on the phone, that comes across as unenthusiastic or uninterested. Secondly, it forces me to context switch and break my mental train of thought. Whether or not it’s pre-scheduled does not matter; I’m forced to abruptly pause my work and move my attention to something else. As a freelancer, I have the option to cut myself off from virtually any environmental disruptions, and prefer to allocate small time blocks to update or communicate with people/clients. Third and most importantly, it’s synchronous communication. When I have to pick up the phone and speak to someone, not only am I making an expensive context switch, I have to be wary of tone, wording, and other things that cause the other party to misunderstand me. Aside from that, I’m unable to give any issues more in-depth and careful thought, which really defeats the whole purpose of discussing them. But in those recent months I had been looking to make a conscious effort to expose myself to more social/human interaction, so I decided I would give it a try. I had nothing to lose anyways; I was working on stuff I enjoyed and this phone call would have no effect on me other than cause a bit more nervousness.
Phone interview:
I took the morning off (and made it up later) to do the phone interview. When I picked up the phone the interviewer introduced himself as a Web Development Engineer from Seattle. Immediately I noticed the Indian accent and became nervous because I realized I already had trouble understanding him. He thanked me profusely for taking the interview (literally 5~6 thank yous), which was quite unexpected but also helped relieve some of my anxiety. Nevertheless, we proceeded with the interview. We went on collabedit and he tested my understanding of some of the key features of Javascript, the design and implementation of a type of web component, a bit about HTTP and servers, understanding and application of CSS, and an algorithmic implementation question.
The hiring team has really enjoyed speaking with you and we would like to schedule a time for you to come to Amazon for in-person interviews!
Although I was able to answer all the questions, I was second guessing myself because I felt that I must have misunderstood something between the foreign accent and the poor phone connection. I thought that was the end of it and wrote it off as a nice experience. Then on June 11th, I got an email from a different recruiter saying that they would like me to go in for on-site interviews. Weird, I thought — almost everyone who I knew that interviewed with Amazon went through 2 or more phone interviews before going on-site. I’m certainly not going to complain about having less hurdles to jump through. Upon reading the email more closely, I realize they want me to fly down to Seattle for the interviews. I was perplexed; I thought the position was in Vancouver? It was, they said. But they still wanted me to fly down.
Paid flight, travel, food, and lodging? Okay I guess I’ll take a vacation day and head down. Better not forget my passport! Oh, passport…let me take a quick look. My passport was about to expire in 3 days. I quickly let the recruiter know and started the passport renewal process. After a long 3 weeks, I finally got my new passport. We scheduled the on-site for Monday, July 8th, arriving Sunday around noon.
Sunday comes around and I’ve arrived in Seattle. I didn’t have time to prepare for any of these interviews because of my full-time job, my freelance work, and attending night school. I decided I would walk around and figure out how to walk to the building (they have 7 in the area), and just roam a bit. Returning to the hotel, I headed to sleep early so I would be well rested. Unfortunately, I got no sleep that night. Something about the nice hotel bed or the fact that I was not doing my usual late-night freelance work made me restless.
Interview #1:
My first interview was at 10:15am and a 20 minute walk from the hotel (note that Amazon pays for your interview transportation expenses, which includes your flight + taxi to the interview should you need it). I headed out at 9:35 and arrived 20 minutes early to check-in, sign the non-disclosure form (which means I will not be sharing interview questions in this post; just a broad overview), and sit there to calm my nerves. I wasn’t nervous so much about the prospect of getting an offer or not as much as I was about sitting in a small room with a stranger and writing code on a giant whiteboard. There was a sudden change of the first interviewer, so it took him some time to come get me. Immediately upon sitting down, I was presented with a problem that was an integral part of Amazon’s marketplace websites. It was an algorithmic problem that the team had run into and solved, and on the front-end. I wrote the algorithm in Javascript.
Interview #2:
The next interviewer came to pick me up and go to lunch. He introduced himself as a developer on the team, but was acting temporarily as the manager because the previous one left recently. I didn’t have a specific preference in mind, so he took me to a small local sandwich shop where I ordered chicken ciabatta and he paid with a company credit card. He asked if I was interviewing for a position in Seattle, and seemed confused why I was flown down to Seattle when the position was for Vancouver. I was asked a lot of questions about my previous technical experience, technical challenges I faced, asked me to elaborate on some of the more interesting architectural solutions I’ve implemented and discussed trade-offs between other solutions. We had a pretty good discussion, but responding to his questions left little time to finish lunch, so he gave me the last 10 minutes to eat while he answered a few of my questions.
Interview #3:
This interview did not involve writing code. The interviewer was the manager of a major team within Amazon. He gave me an algorithmic question (also very relevant to Amazon), and I came up with a solution fairly quickly, but he noticed I was still deep in thought. I explained that it was the best solution I could come up with, but I was wondering if there could be a better way to do it. We ran over some of the details together, discussed potential trade-offs in a different algorithm, and decided my solution could not be any more efficient. I was also asked a behavioral question specific to Amazon’s business and core values.
Interview #4:
For this interview I had two interviewers; one of them was shadowing as he was fairly new to the company. They tested my understanding how browsers handled various things in HTML/CSS, then gave me a screenshot of a new release about to be pushed live, and asked me to write the HTML/CSS for the whole page.
Interview #5:
Here I ran into my interviewer from the phone interview. He asked me to explain the differences between two implementations in Javascript, and use cases of each one. I also wrote HTML/CSS/JS for a webpage component, with a focus on modular code. He then tested my low level understanding of how browsers handled the DOM, and I had to implement that from scratch. I was pretty tired at this point, and had some problems understanding his accent, but I think I did okay.
Interview #6:
When I send you the offer on Wednesday…
The last interview was with the lead recruiter from Vancouver (apparently he flew from Vancouver to Seattle to interview me, a candidate that was in Vancouver and had to fly to Seattle for the interviews…). He asked if I was tired after such a long day, and then counted 7 interviews. I only remember 6, but he had the official list so I guess it’s 7. Maybe he was talking about interviewers. He mentioned I had received great feedback and that they were excited to move forward. He then spent the remaining 35~40 minutes drawing on the whiteboard the compensation details of the position, including the signing bonus(es), equity options, performance bonus, how I could choose between more options or cash for the bonus, the benefits of choosing one over the other, the base salary, etc. He said “when I send you the offer on Wednesday, you will see _______” on a couple occasions. Then he walked out with me and explained that the team in Vancouver was very diverse and full of cool people, how it was much like a startup, and that I would love it. He then said “once you accept the offer, we will fly you back down around 3 weeks later to do the training here, because the Vancouver offices are still quite small and we don’t have many hires that week”.
After not hearing back from him, I emailed him to follow up. I didn’t hear back so I emailed him another two times, with no response. It’s been months and he has yet to reply to me either with an offer, or a rejection letter. I guess it didn’t work out after all.
Aside from the lack of response from the lead recruiter and the weird logistics of sending me to Seattle to interview for a position in Vancouver and having all the interviewers puzzled, the interviews were pretty interesting. Each interview during the on-site tested a specific skill/topic required for one to be successful in the position, ensuring that there are no glaring gaps in knowledge. I would say it was one of the best interviews I’ve done for a front-end position in terms of getting a full picture of the candidate’s knowledge and experience.
Edit: I’ve received some questions regarding reimbursement; Amazon does provide reimbursement for travel and other expenses. You are assigned a daily budget for each category (food, transit, etc), and are asked to keep the receipts and send them in as long as they were for the purpose of interviewing (not for your personal leisure). They also paid for my hotel, but did not pay for damage deposit. Your situation may differ but it’s good to keep that in mind should you be asked to pay before getting your room.
I received a cheque covering all receipts I sent in (I forgot most of the food receipts) after about 6~8 weeks. Rental car wasn’t offered, but taxi receipts were reimbursed, up to the daily limit as well.
Join the discussion on HN: https://news.ycombinator.com/item?id=7040382