First off, happy Chinese New Years everyone, hope this year of the rabbit can bring some good food and spirits for those that are celebrating.
For me however, I had an interview with Amazon, and a good amount of snow and coldness (-10 C) here in Toronto; no celebrating since I live alone.
This would be my second interview with Amazon, it was at my campus instead of a phone interview this time. Unlike the first time, I prepared well, reviewed all my data structures (Trees, Graphs, Linked lists, Arrays, hash tables, stacks, queues, heaps) and algorithms (mergesort, quicksort, breadth first, depth first, in order, design patterns, singleton, factory, recursion, divide and conquer, dynamic programming), as well as large systems design (distributed systems, scalability and load balancing). The interviewer, instead of giving me several small questions, just threw a big technical question at me: code the placePiece method in a game of Reversi. The thing is not that I wasn’t able to do it – it just took a long time. The algorithm is to place the piece with given x and y coordinates in the matrix, check all 8 directions for a piece with a different color: if there is a piece with different color, pass in the direction and the piece, loop through it pushing all the nodes onto a stack/queue, and then if the same color piece is reached, pop all the nodes and color them the same color. O(n) complexity.
Thing is, I had to code this in about 30 minutes and wasn’t able to finish on time. He asked me to code using Java instead of pseudo code (which would have been faster). I don’t think it was fair; why give me one long algorithm question when he could ask me several smaller questions and learn more about my object oriented and programming skills. All this shows is how much I’m able to code in a period of time.
Anyways, I’m a bit annoyed because I prepared so much for this interview and only got one question asked of me. I know a lot of people wished me good luck this time – I personally believe luck is a combination of preparation and opportunity. The really sad thing is, I did prepare and I did make use of all my opportunities. I should have done well, except I wasn’t expecting him to ask one big question. And I don’t think I could have improved on my time unless I specifically knew what question he was going to ask. I don’t know what I did wrong besides running out of time. I was about 75% done the code, I kept asking him for clarity, I gave him feedback on my thoughts as I coded, I explained how my background working with distributed systems at the government was a good fit for Amazon, I asked the recruiter good questions, I even wore an Amazon T-shirt to the interview! And I couldn’t advance past the first round.
Some part of me thinks that life purposely makes things hard for me. Looking back, there’s very few situations in which things actually went the way I wanted to. I had three goals this year: to do well in school and graduate, pay off my debt, and find an IT job in the U.S, and it’s almost as if life is telling me that the third and hardest goal shouldn’t be achieved early. It’s making me work really hard for it. Even my second goal has issues. To pay off my debt, I need to get my money out of the stock market, and get my scammed money back from my Mastercard. The Dow is over 12,000. My stocks went the opposite direction; so much for that one. As for the second one, here’s the story. I wanted to build a web application back in June 2010, and this merchant from a forum I visited asked to do it for $2200. I foolishly trusted him and gave him my money. Couple months later, he said he would do it in one week, and it still hasn’t been done so I asked for my money back. He didn’t give it back. I initiated a charge back through my credit card company. Then the merchant tells me that the chargeback has been done and shows me some Paypal screenshots to let me know the money was out of his account and would be in mine a couple days, then told me he needed an extra $1100 from me because I had charge backed some services he did provide, like hosting my site. I believed him and gave him another $1100. My Mastercard company later told me the merchant had fought back and provided documents as a rebuttal to my charge back. Since I basically lost all my money at this point, I fought back again with proof I sent him the payments for things he did provide me. Mastercard tells me it would be months before they could make a decision. Great, basically that $2200 is gone, at least its in limbo for a couple months.
Nevertheless, despite these setbacks, I will keep trying. I’m the kind of person who doesn’t give up easily, as I realize things often do not go my way. I still believe that if I keep trying, then maybe somewhere things will start to bend my direction. Who knows, I believe its always better to weigh the decision of trying and not trying. If you try and the worst case scenario is that you get rejected, then it’s the same as if you didn’t try; thus its always better to try. And I’ve always wanted to aim high rather than low; if you compare yourself to low people or think of the alternative to not achieving high, then the consequences I think are too scary for me. So life is difficult; that’s fine. I welcome that. With each failure, it only serves to strengthen my determination. I’ve never lowered my standards before, I’ve always wanted to aim near the top (but not the absolute top; 中庸之道) , and if I can’t get it, then I will keep trying until I do.