Around the 20th of October 2015, I sent an application for an internship via http://amazondc.com/. That website is specifically for the Amazon development centre in Edinburgh. The development centre in Edinburgh appears to consist of around a dozen teams working mostly on projects that are crucial to the business, but self-contained enough that the time difference to Seattle (~8 hours) is not an issue.
The application process was extremely easy. The website invited me to enter my name and contact email, and to submit a pdf CV. There was an optional field to enter a covering letter, but I decided not to as I felt it wouldn't add anything that wasn't already said in my CV. And that was it! No re-entering of my grades, or work history, no questions asking me why I felt I was right for the position. The application process was actually refreshing compared to some other companies.
Code Test Stage
A couple of days later (on October 23rd) I received an email inviting me to take a timed code test on Codility. I was given 2 questions (challenges) to complete in 60 minutes, which I was told to complete within the next 7 days. The code submitted was expected to be well written, and well tested (though some may say that one implies the other). I was free to make use of any external sources I wished (including internet), although if I did use any I was to cite them. I was free to write code in any language I was comfortable with, although I knew that the main language used at the office was Java, and I was comfortable with Java so I chose that. Any standard library code was fine to use.
Overall the code test was very reasonable. The Codility interface was very nice, and there were some practise tests I could use to get used to the layout. The questions were twists on standard algorithmic questions. The preparation I had done on HackerRank, and using Cracking The Coding Interview was invaluable. I can't remember the exact questions I was given in my test (they were randomised as others I have spoken to received different questions), but the example Codility test was very similar (I'm paraphrasing the following question):
Write a function that given an array of integers will return an index where the sum of all the numbers on the left of the index is equal to sum of all the numbers to the right. The function should execute in O(n) time, and O(n) space. If such an index does not exist, return -1.
My code test went well, the first problem I managed to get O(n) time complexity, and O(1) space (when they asked for O(n) time and (n) space minimum. The second question I managed to get the space complexity right, but I couldn't get the O(n) time complexity. I believe my solution was O(nlogn) at the time of submission. I wrote a couple comments about the section I knew was causing the extra time complexity, and basically said 'If I could solve this subproblem in O(1) instead of O(logn) I would have the correct complexity. I also wrote a couple of ideas about how to implement that, but all of them would take longer to implement.
On the 4th of November, I received an email inviting me to attend an interview session at the office in Edinburgh. I'll be writing about what happened during my interview in the next post. So be sure to check it out in around a week. Thanks for reading!
Enjoyed my post? Sign up to the newsletter to receive a small email when I post. No spam, I promise.