Amazon
I interviewed at Amazon recently. It turns out they are using Ruby here and there. I submitted my resume late on a Sunday and was contacted Monday by someone at amazon recruiting. I was setup for my first phone interview that Wednesday. I was asked What I like about rails/ruby, what do I not like about ruby/rails. I was asked an oop question that I should of had the person repeat. The phone was not the best and some things were hard to understand. The question was what is the difference between encapsulation and inheritance. I knew this but they were not the terms that I heard. Also I think they used a different term for encapsulation. Still no good excuse I should of had them repeat the question. I was asked to find the duplicate number in an array. I started with the most inefficient way. Start at the first one and look at all elements behind for its self. They asked me the big O calculation of that. Which is n!. I really need to brush up on my bigO. Although I went to a fine college, bigO was not a major part of any course. I did more bigO stuff in high school then I did in college. I then suggested sorting the array and then looking for a duplicate. If you used .sort! this is a quick sort nlogn. I did say (nlogn) n. This showed how rusty I was. Then I was asked if there was a quicker way if memory was not an issue. Of course!, a hash map and look for a collision. I think I was asked about ruby mixins. Mmmm... I love mixins. Of course like good little interviewer I am I asked questions about the job, Seattle, and amazon. I was told about the best view in Seattle from them. I asked about the team and we talked about ruby. 1 day release cycles, short stories features, DBunit, selenium, and other fun. At the end I was assigned homework. I needed to model a deck in code( anything except python). I needed to shuffle and deal the deck. So I sat at chilli's and thought of cards. I do like cards, but they are not fun unless you use them for a game. I will upload my code in to my svn.
So I submitted my homework (twice) on Thursday and was contacted the next Monday for a second phone interview
The second interview was a lot different. There was only two questions. One about my code and one about a current problem they are having. I was asked about my code. It turns out that there was a use case that made my code break. I used arrays and the zip command then the * to pass in my arguments. Yes this was me trying to show off. I could have just done 2 for loops. So if I have a deck of 2 cards and 2 suits my generation would screw up. So we talked about my code for about 30 minutes. Then we talked about a promises stock issue. I am sure there is some name for the algorithm that I would need to use but I was never faces with a problem like this. I talked it out and came up with some sudo code then I blew holes in my sudo code. The interviewer assured me it was a hard problem and he just wanted to here me talk it out, which I did. After that we bs'ed about Seattle and ruby.
Sad to say my resume went back in to the "pool". I am told by people that used to work at amazon that it means they thought I was a good cookie just not for that job. Also I was told that a second interview for my background (state college and 1+ year of real work) was good. I left out some details and I wish I wrote down more but I was nervous. It was just good to talk with peers.