Disclaimer: My last interview was 8 years ago, I never searched for another job during this period, so I my interviewing skills are very rusty. I'm Software Engineer who has reccently taken the role of a Product Owner, but I'm looking to get back more into coding.
TL;DR: I went through 2 phone interviews, which were mostly composed of behavioral questions (which I did not prepare that well for) and a single technical question, which I didn't do well.
I have been working on the same company for most of my professional life, and reccently I decided I wanted to make a move. Problem is that I was really oblivious about the whole interview process (and how challenging it was), so once I realized how much work I had to do in order to be well prepared, my first interview was already scheduled for a SDE III position in Dublin. I've tried to write down some personal histories that would line up with Amazon Leadership principles and decided my time would be best spent (at first) with the CTCI book and some LeetCode, but I only had a little over a week before the first session.
My first phone interview was only composed of behavioral questions, such as:
I think I did decently enough on this one, and lo and behold, I got an email the next week telling me that I should schedule for a second phone interview, but this time it would be a technical one (System Design and Algorithms). I spent most of my time doing LeetCode (based on an Amazon questions list I found) and consuming some SDI materials (Grking the System Design Interview and a few youtube channels).
On the second phone interview, to my surprise, half of it was again behavioral questions, but this time around I feel I didn't do very well. I was taken by surprise by a question which I did not have a story prepared (thinking that I would have time to prepare more for behavioral questions for the third round). I did not want to repeat the same history from the first interview (which had similar premisses), so I ended up picking what I see now as a weak example to avoid being quiet for a long time.
On the last 30 minutes, I was asked to implement getOrder and addOrder methods (that was the only thing that was stated, as far as I remember) for an order management system.
I started by asking if this was an algorithm or system design question, to which he replied that it was an algorithm question. I chose Java as my language.
I then, naively, spent too much time asking other questions, thinking this would be well perceived (since this is such an open ended question, I thought my requirement assessment skills were being evaluated). I asked:
My second pitfall was not heeding the interviewer directions to the letter. As I was designing the entities, he kept saying (yeah, just keep it simple), and eventually he made clear he simply wanted to see some database implementation interface. I suggested we go with an SQL based solution so that we would have ACID properties. I then explained that we could have an Ibernate implementation, and that I would have an interface to deal with generic CRUDE db interfaces. As I didn't have much time left, I ended up implementing only a skeleton of the solution:
The next day, I received an email telling me they would not move forward with my application.
With that, I've come down to the following conclusion: I won't do any interviewing for a FAANG company before throughtly preparing, which may take from 6 months to a year. This is what I plan to do:
Having said that, is there any advice you would offer about my study plan? Is there something obvious that I might be missing, which would be important to achieve my goals?
On a side note, how would one go about acing the technical question? Just focus on the database interface, without spending much time on general questions? e.g.
...
PreparedStatement ps = conn.prepareStatement(...);
ps.setString(...);
ps.setString(...);
ps.executeUpdate();
ps.close();
...