My experience interviewing with google.

Thu, 01 Dec 2016 16:50:27 -0500

So I recently had an interview with google, and unfortunately I didn't get the job, but I'm gonna talk a little bit about my experience with the whole process, how I felt going through with it and what I learnt from it.

Now to make it clear, while I did not sign an NDA, I did agree to not disclose any interview problem, so at most I'll mention what the problem was vaguely about. Regardless I won't focus on the problems themselves but on the buildup to me taking the interview and my state of mind when taking the interview.

I'm here to just tell my story and hopefully anyone who reads from this can learn something from this

How I got my interview

We'll start a year ago when I first applied to google, I wasn't really planning on applying but someone really close to me wanted to apply even though we both knew we probably wouldn't get a call back, this was for an internship (I am still going to school). We both applied and never got any callback, and we figured that was the end of it. Fast forward at the start of the semester, I get an email from google.

It was an email asking for my updated resume, cause they felt that even though I didn't make the cut for the internship, maybe if I had done more things I'd be good for a full time position. So I sent my resume along with my school transcripts and after a few days I got another email.

I got another email saying they liked my resume, and that they would like to schedule a simple phone screen where they could talk to me and get to know me, and tell me how the application process was gonna work. So we schedule the interview for a day and that was when it hit me...

"Holy shit, I am not ready for an interview at all, I have not done any algorithms or data structures in 2 years".

I don't think I'm a bad programmer to be honest, but interviews in high end companies require you to know how to write code that scales. Which is the one thing that you actually don't get much practice off doing school work, or even working on small projects for small companies.

That means that so far, I've been good at solving problems in the most archaic way possible.

The phone screen

Then comes the phone screen and it's one of the most pleasant conversations I've had over the phone ever. The recruiters at google are the nicest people I've met, and they really know how to make you feel comfortable and take the nervousness out of you. The recruiter explained how the process was gonna be and left me a link with a few problems to solve in one week, with a second week grace period.

Needless to say, I was worried. I started studying as much as I can, fortunately I had some material to study from, since google gives you a document with a lot of resources, but one week was not enough for me... heck two weeks was not enough for me. I was barely brushing up on what I knew, but it turns out there were a lot of things I did not know at all as well.

Choking

The two weeks passed, and I was okay with the things I already knew, things like using stacks, queue, basic things with trees, I was decent for a simple problem, and if things weren't very complicated I could get through this. But in reality I was very aware that I wasn't ready for hard problems.

I first did the test problem that google let's you do to practice and it was very easy, and solved it in less than 30 minutes, that made me happy. I thought hey, maybe I can do this, and then I opened the real problems.

I had one hour to solve two problems; I solved that practice problem in like 15 minutes, so I figured things would be fine.

I read the first problem and it's not even that hard, it asks for no time complexity, in fact it specifies that they only care about having a right answer and not how efficient it is. I smile... and start coding immediately, rushing and not thinking the problem through. That was my first big mistake.

I finish the problem and run it, it's wrong... the moment that happened I lost it, I lost all composure and start panicking. I do not know why that happened, most of the time I'm composed no matter the time-line, no matter how hard the problem is, I think it's because the problem was easy that I felt like this. I attempt to hack through the right answer to no avail, and finally I decide to start doing the second problem regardless.

The second problem was hard, but I figured out how to solve it, I try to do things a little bit more calmly and eventually code up the solution, and it's wrong again.

Fuck... I thought I did this one right, but I still failed at it, I only have 20 minutes left and I messed up both problems. Granted this second problem was actually hard and challenging, and my mistake was small (but I couldn't figure out how to fix it). The real problem was the first problem, holy fuck that thing was a mess.

I start trying to figure out what the mistake could be for problem one, and I do find one error, and fix it, but the answer was still wrong. At this point the timer is at 5 minutes, and every minute that passes at that point the timer would flash red and make me panic even more.

Eventually the time ended and I did not fix my mistake. After calming down I realized how easy the problem was and how dumb my mistake was.

Second chance

I knew I probably failed so I stopped studying and thought: "okay I'll just try again next year or apply to other companies, but I can't let this happen again I have to be prepared next time" Finally I got that dreaded call, my recruiter told me I didn't make the cut, and it was no surprise to me.

My recruiter who again was super nice to me, I can't stress this enough, said that she wanted to recommend me for another position, because she liked my background and thought I had a chance. (I do not know how much of it was true or if it was just to get people hired cause that's her job, but I'd like to believe the first part)

So she put me in contact with another recruiter to schedule a phone interview, I got happy and immediately started studying way more. I scheduled the phone interview and set the date.

This time I was not gonna be unprepared, I was not gonna choke. So I studied, I did mock interviews with a friend (and they went well) and I practiced a lot. Finally interview day came; I was aware of what my weaknesses and my strengths were. I knew that a dynamic programming problem might spell the end of me, but other than that and combinatorial problems I was in a pretty decent shape.

The Interview

The interview came and unfortunately my headset wasn't working. So I had to take the interview with the phone on my hand. It wasn't a big deal, but the real problem was that the sound was really bad. I couldn't hear the interviewer half the time and he couldn't hear me the other half.

That sucked, but I wasn't nervous, he asked the question, I asked him to clarify some things about the problem. I thought of a few possible solutions, I figured what data structure would help me and I started solving the problem.

The approach I took was wrong, but he quickly made me realize that by asking a key question. The problem was that if that method was wrong my next best solution wasn't that efficient. The brute force solution was O(n^2), my second best solution (which in this case was the best solution that didn't have a key mistake) was O(nlogn) which was better but there had to be a O(n) solution.

At that moment I couldn't think of any solution, I didn't freeze and continued thinking though, I talked about my thought process but ultimately, I couldn't find a O(n) solution and I ended up solving it with my O(nlogn) method.

The aftermath

I was sad but not devastated like last time, the interview ended after I asked him a few questions about his job and about the jobs that I could potentially have at google. I knew I could have done better, but at the moment that was the best I had to offer.

I eventually solved the problem in O(n) later but I was not angry at not figuring it out at the interview, it was a thing I hadn't studied, so it wasn't me being dumb, it was just me outright not knowing the way to solve it that way period.

That's acceptable, in a work environment you can learn how to solve it that way and go ahead and do it, and I figured maybe that would be taken into consideration, since I at least solved it the second best way and had a decent thought process in the interview.

I waited for 3 weeks (I was told I would get an answer one or two weeks after my interview) and finally the call came. I didn't mind it took longer, I mean thanksgiving was in the middle of that wait, and if they had to actually think if they wanted me or not at least says to me that I wasn't completely horrible.

They told me the hiring committee decided not to go with me for the position and that, again the recruiter (this one was a different recruiter), was super nice to me. He told me not to worry too much, that a lot of googlers fail their first application, and that I should not be discouraged. I asked if June (when I graduate) was an appropriate time to apply again.

He said yes, I thanked him for his time and the great opportunity he gave me and we said goodbye. He sent me an email afterwards thanking me for my time, and giving me a link from google that has a bunch of resources to practice and develop your skills.

That was the end of my experience applying for google. It was challenging it was fun, studying was hard but worth it. Even if I didn't get the job I learned so much from this experience, and I know I'm a better programmer now than I was before. I plan on applying again when I graduate, and I plan to be ready by then. I will also apply to other companies, and see where I fit in best.