First Technical Interview (On-Site)

Here is part 2 post of my Western Digital interview experience.

I'll split this post into two parts, my preparation for the interview, and the interview itself.

Preparing for the Interview

Feel free to skip over this part if you just want to know how the interview went.

So I was able to pass the online and phone interview.  Awesome!  Next I was given instructions to go to their Irvine Campus for an onsite interview.

Here was my gameplan for the day:
(The interview was scheduled for 9:00am)
  1. Wake up at 7:30am
  2. Do my bathroom ritual
  3. Get a bowl of cereal
  4. Skim over some array/search/behavioral questions from my interview book
  5. Get dressed
  6. Leave apartment 8:20 (5 minute drive to campus)
  7. Arrive at campus around 8:30 (They mentioned be there 15 minutes prior to interview)
It is definitely good to psyche yourself up and plan out your morning the day before the interview.  Be sure to lay out the clothes you plan to take, the necessary items (keys, resumes, pen, etc) before hand.  I chose to wear a button up long sleeve shirt and slacks without a tie.  Keep in mind that you will be coding somewhere in your interview, so a jacket is a bit excessive to wear.  You still want to be comfortable enough to not be bothered by your attire, but at the same time feel confident that you dressed to impress.

Some problems that I ran into, getting ready took longer than I anticipated.  I was a bit anxious and decided to wash my hair to try and get rid of a bed head.  Also decided to make tea to take for the road.  Posing in front of the mirror to make sure nothing was on my shirt or anything (aka fashion model time).  All these things accumulated in me leaving a bit later, 8:30.  Not too bad, but definitely a good idea that I gave myself some extra time in addition to what I thought I needed.

I arrived at the campus a little bit before 8:40am.  They gave me directions to find "guest parking".  I probably spent 10 minutes attempting to find the specified area, even asking WD workers in the parking lot if they knew where the location was, but to no avail.  I settled for parking at the edge of the lot, hoping that I didn't take anyone's assigned location.  By that time it was 9am and I had to make quick pace to the front entrance.  I waited an additional 15 minutes before I met with the recruiter that I was in contact with and she led me to the interview room.

The Interview

Hopefully I didn't sign any NDA's, but I will respect their hiring process and try to be as vague as possible, while trying to be relevant to the readers (if there are any :o).  There was several rounds for the interview.  The first two rounds of the interview consisted of two engineering teams.  Each started off asking general questions about Object Oriented Programming and additional questions pertaining to upper-division classes that I noted on my resume.  There was also some questions about general technology - to see how much of a techy person I was (computers, technology trends etc).

Then they proceeded into the programming part of the interview.  Before they even began to ask the question, I asked if I could write on the white board behind me so that I could take down the requirements of the problem.  Of course they said that it was fine, and then began to tell me the problem.

Question 1 - Array/Search problem

Fairly straight forward question.  I asked questions about the input, and given what I was told, gave them a super simple solution with optimal time.  They were a bit surprised with my answer, and didn't anticipate that the solution was that simple (they simplified it a bit too much with the given input).

Correcting their assumptions about the input, they asked me to think about it again.  I wrote down another solution and they requested that I do a quick run-through of my code.  As I was going through my algorithm out loud to them, I noticed my mistake, a wrong reference to an array, and explained the error to them and how my new solution would fix the problem.

They did another follow-up question by asking about space-complexity, and what would be a way to solve it.  Again, I wrote down another algorithm and did a quick run through of the code.  As I finished, the interview mentioned that he actually had a different solution in mind, that had the same space complexity, but with better O-notation.  It was a math trick that relied on having a bit of knowledge in number theory.  No problem, I mentioned that I wasn't aware that you could do it that way, and I didn't fret that I wasn't able to get it his way.

Question 2 - Math operation

Thanks to HackerRank, I was familiar with the different math functions that Java has.  Code and test.

Question 3 - Random Number Generator

In this question I got a bit confused about what exactly they were asking for the question.  It took a decent conversation until  I was able to get what they wanted and code it up.  This problem was just asking the right questions/specifications and coding it up.

Algorithm Design question

This was probably the toughest part of the interview.  They said that I didn't have to write down any code or anything to answer the question, they just wanted to know how I thought.  This was my first mistake, because had I written down my thoughts, it would be have a lot more apparent to them and myself what I was thinking.  Either way we proceeded to talk about the requirements/specifications of the algorithm, effective data structures to hold the given data, and example run through of the algorithm for correctness.

Some tips for this - go through your list of data structures you know: arrays,linked lists, trees, queues, stacks, maps and think about what will fit the problem the best.  The interviews were more keen on how you thought about solving the problem, more so than you actually solving the problem. Think out loud!

The last round was with the hiring manager.  It was a follow up to my phone interview, and he asked me a lot of general technology questions and some small talk about the position and the company itself.

Concluding Thoughts

That was it, and the hiring manager led me out (not before I realized I left my wallet on the interview room chair, somewhat embarrassed and we walked back over to that room).  Later that day I received a call, in class, and after class was out, I called them back, hoping that I wasn't so bad as to deny on the first day -.-

To my surprise, my recruiter called me to let me know that they had already held a meeting with all of my interviewers and they had decided I was a fit for the company!  YESSSSSSSSSSSSSSSSSSSSSSSSSS.  I was shaking with excitement, and she said she would follow up with me in an email to explain the rest of the hiring process.

This was a huge achievement for myself.  It wasn't even a year that I thought that I wasn't confident in my coding ability, and figured I would try for a management position.  After working my butt off to improve my coding, I landed a pretty sweet gig for the summer.

Comments

Popular posts from this blog

Uncle Bob's Clean Architecture

C4 Model: Describing Software Architecture

Running RabbitMQ with Docker