谷歌前端Pittsburgh上门挂经

Status: Self-employed
Position: Front-end Software Engineer at Google
Location: Pittsburgh, PA
Date: October 21, 2019

foo.bar [spring 2018]
Completed 8 problems, stopped on Level 4 iirc. It was fun just figuring out these tough problems; I didn’t have much exposure to puzzles like this prior. For one problem I realized I could use a graph to solve it, but I was only very vaguely familiar with graphs… I just cited & copied source for doing all the graph construction/operations (lol)
Responded to ‘yes’ for allowing a recruiter to reach out.

Phone screen [July 2018]
Python. Awkward call w/ heavy accent. I had zero familiarity w/ DS/algos, so I didn’t recognize much terminology he used in discussion. Rejected.

I reached back out to recruiter [July 2019]
Phone screen [Aug 2019]
Interview for Generalist. Python. Didn’t quite complete problem, but was on right track. Essentially described a trie solution, but without knowing it was a trie at the time ¯_(ツ)_/¯

Phone screen [Aug 2019]
I was then given a chance to interview for Front-end position. Javascript. Struggled with first question - stated I was uncertain and would have to test irl. Got next 3 questions without trouble. Was comfortable by 4th question and did a great job of verbalizing requirements, approach, and follow-up considerations. Passed!

Was connected to Pittsburgh recruiter. He informed of process; it would be 3 algorithm coding interviews, 1 front-end interview, 1 behavioral interview. With a lunch in the middle. I was explicitly told to ignore the ‘large scale design’ portion of the study guide as I wouldn’t have that. He said it was preferred to do the front-end interview in Javascript, but they can accomodate Python for that. I specifically requested to use Javascript for that question (I assumed it would give them better signal for a front-end role).

At this time I realized you really have to know DS/alg to pass the interviews. I opted to study for a few months before scheduling my onsite. I also dedicated a portion of that time to reviewing front-end specific stuff (trying to memorize crap I would Google irl).

Onsite [Oct 21 2019]

Interview 1 [coding] Interviewer greeted me in the lobby and gave me a brief tour on the way to the interview room. Discussed the type of work various teams there do. Did some coding problems, questions on run-time complexity, optimization, hash tables.

Interview 2 [coding]
Array-based question. A little tricky, but not very hard (in retrospect). I talked a while, discussing possible approaches. The interviewer suggested I should write code because limited time. I didn’t feel I had a workable solution in mind yet, but I just started writing code based on the last possible approach I verbalized… which didn’t pan out. I got flustered with only a few minutes left and decided it was a loss.

Inquired about his work etc while we waited for someone to come take me to lunch. I still didn’t have nerve to reconsider the problem, but I asked him what approach was optimal/expected. I knew I would be going over that problem later and it’d be nice to know what the solution was. He refused to give further insight because he uses that question often and the students at the local university like to share code. (In other words he doesn’t trust me to keep it to myself…) We continued to talk all the way until next interviewer showed up (~45 mins later – my lunch date never showed)

Interview 3 [coding/lunch]
Array-based questions. I verbalized solution, then coded. Rinse, repeat a few times. He was satisfied. Then he took me to the lunch room to quickly grab a bite. Good guy.

Interview 4 [system design?]
Started off very slow. Interviewer curtly presented a situation and sketched it out on board. Then just kind of stared at me. I felt like I had to pry just simple things from her, like what is my goal? What am I writing? At the time I thought maybe she just wasn’t good at interviewing…

Eventually she gave me a limited api and specific goal. I coded it up within those constraints pretty well, with just 1 datastructure that was suboptimal. I noted it as such, saying I would revisit it if I had time to select a better DS. She gave me that opportunity at the end but I froze up. Very simple matter of using a doubly linked list or OrderedDict instead of a queue, to allow O(1) removals… hindsight is 20/20.

Later I realized this was likely a System Design question and I should have been more interrogative and pointed out things like the API is suboptimal for the stated goal, etc, and I could have suggested design improvements… but I hadn’t studied System Design questions and was expecting to simply code up optimal solution to given requirements…

Interview 5 [coding]
A few softballs and a variant of https://leetcode.com/discuss/interview-question/340230 along with questions about space/time complexity.

Recruiter contacted me next day apologizing about missing lunch and also asking to schedule the behavioral over the phone since that was somehow skipped.

Phone behavioral [Oct 24 2019]
I prepped notes on past experiences. Did OK I guess? It was likely easier to do this over the phone then onsite, as I’m not that great at memorizing or recollecting stuff on the spot… (One of the reasons I like writing software lol)

Informed of rejection on Oct 29. No feedback except I need work on system design/algorithm design.

Overall:
It was my first time doing an onsite interview anywhere ever. I also haven’t worked face-to-face with other developers pretty much ever, and of course… it’s Google. So it was a pretty amazing experience for me, I was kind of ‘star struck’ with it all. Definitely a useful experience for me.

For some reason there were a lot of hiccups throughout the interview process on their end. Maybe it was just a fluke but I hope not many other people have to deal with that. I can see how it would turn off a developer who had other offers to consider.

  • No lunch
  • System design question when told would not get a system design question
  • No front-end interview, no javascript
  • No behavioral interview

Despite those flaws all the people I dealt with were friendly and I enjoyed the experience. I wish they provided useful feedback after investing all the time to go through their process. The wife and I were sad I didn’t make it… but 8/10 would deal with it again. I mean c’mon, it’s Google :slight_smile: