Swizec Teller - a geek with a hatswizec.com

Senior Mindset Book

Get promoted, earn a bigger salary, work for top companies

Senior Engineer Mindset cover
Learn more

    A Google phone interview

    Yesterday I had my (hopefully first rather than last) technical interview with Google UK.Short story: That stuff is fun! Longer story follows.

    Google London HQ

    Sometime in January one of Google's recruiters sent me an email; whether I'd be interested in talking with him. That my online profile looked interesting and so on ... at first I almost dismissed it as spam - surely they send these out by the hundreds every day?

    But hey, nothing to lose if I reply, right?

    After I changed the agreed date of our video chat a couple of times - even forgot to respond to an email for two weeks - we finally got together. That was just your run of the mill blahblah with an HR person. What kind of stuff I like, what Google is all about, the fact they have shiny new offices in London and are looking for people to fill them with and so on.

    Mind you, I don't know whether I actually want to work for Google. They're a huge company and working for them would fly right in the face of my principle to only work with startups! On the other hand, just being able to say I've worked at Google, even for a short while, would look incredibly well on my CV.

    But hey, no sense worrying about this stuff until they offer me a job. Fuck it, let's give the interviewing process a shot - looks like an interesting challenge anyway. Challenge accepted, I want to win.

    They agreed to give me a call a month later, when I'd be done with exams. Yes, Google is in fact that nice. No rush, whenever you have time, you don't want to even consider working before September? Fine with us. Please just let us talk to you kthxbai.

    Yesterday was a month later.

    The interview

    Funny thing is, Google goes to great length to put you at ease about the whole process. They're nice to you, send you friendly sounding email and at the same time everything looks so bureaucratized you can't help but feel ever so slightly nervous.

    There's even detailed instructions for making sure you can be called via GTalk!

    Google London HQ

    And the email says don't you dare type on your laptop, the interviewer will hear you! Of course the interviewer spent the entire conversation happily clickety-clacking away at his laptop ... it is in fact slightly annoying.

    Andrew was a cool guy, very good with asking cool questions and letting me run amok - undoubtedly making an arse of myself several times when I climbed into a wall trying to explain a concept I introduced to the conversation and then backtracking to where I still made sense and trying to explain it differently.

    The conversation had a light structure, felt like having a technical chat with a friend over some drinks:

    • describe a cool recent project, go into the technical nitty gritty
    • what's an exception and how does it work
    • what is a memory leak and how would you go about debugging it
    • automated testing! talk, go!
    • write some code to create powersets
    • how would you look for a file containing a keyword in a deeply-ish nested directory structure

    I have no idea how well I answered the questions ... you know how these things are, you can explain at great detail what you think something is and how it behaves. But you might well be completely wrong.

    The funniest part was after I explained a recent project (time-series analysis for predicting how much money I'll have in two weeks) and Andrew's response was something along the lines of "Oh that's really cool! Do you have any plans on making it into a service? ... wait, I'm interviewing you for Google ..."

    He seemed a bit confused.

    Another interesting moment was when I was explaining memory leaks. He was looking for an answer inside the Java or C++ world (even made sure I knew them beforehand) and instead I explained that a cool way of getting memory leaks with javascript is through closures that are left hanging. I did also give the answer he was looking for, but off-handedly.

    That somehow sent me into a long explanation of what closures are and how the concept is neatly related to continuations and function curling. And what those are. He generally let me wander around with my answers, probably trying to poke into what I do know and what I don't, even if it's beyond the scope of specific questions.

    Coding under pressure

    There was some coding involved - a very simple task. What is a powerset, blah*, yes you got it. Now code something in your favorite language to turn a set into its powerset.*

    Google London HQ

    Not even in my worst nightmare could I imagine coding live, with somebody looking directly at my output, would be so difficult! It's amazing, you go there and you think* ah! yes, I know this! This is simple stuff!*

    You start ... nothing.

    I spent four or five attempts climbing myself into a wall and deleting all my code before finally producing a cool looking algorithm - a lovely non-recursive solution; simply because I couldn't think of a recursive solution, just knew that the simplest solution is supposed to be a recursive algorithm.

    def powerset(set):
          binaries = [bin(a) for a in range(2^len(set))]
          power = []
          for yeses in binaries:
            subset = []
    	yeses = str(yeses)
    	for i in range(len(yeses)):
                     if yeses[i] == “1”:
            		subset.append(set[i])
    	power.append(subset)
          return power
    

    This is whiteboard python. The syntax for calculating a power is wrong and I'm fairly certain bin isn't an actual function in standard library. I'm also not sure converting a binary number to a string works quite as I envision it here, might need to use "%d" % blah syntax.

    But the general idea is simple: take all binary numbers from zero to the powerset's length, iterate through them and use digits as binary switches for picking elements to put into each subset.

    Google 的貼牌冰箱(Google refrigerator)

    It took me forever to deduce the formula for calculating the size of a powerset from first principles. Couldn't remember it. Looked at the examples I generated in my head ... "Ok, so every time you add an element, you double the size of the powerset. n^2 ... no that's not it ... could it possibly be 2^n? Damn it! yes, that's it!"

    But Andrew reassured me he loved the solution even though it needed a bit of fixing; and you can obviously see that's not the most elegant python code out there.

    And now we wait

    In general I think I managed to convince Andrew that even though my explanations often came with a "I haven't looked into how this works **exactly, **but here's my understanding of what should be going on" I know a fair bit about technology and if push came to shove, I could code my way out of a wet paper bag to save a life.

    If he got the same impression, the next step is a full day of back-to-back technical interviews at Google's London offices.

    First though, we wait for "my" recruiter to get back to me about how the phone conversation went.

    Published on March 2nd, 2012 in Uncategorized

    Did you enjoy this article?

    Continue reading about A Google phone interview

    Semantically similar articles hand-picked by GPT-4

    Senior Mindset Book

    Get promoted, earn a bigger salary, work for top companies

    Learn more

    Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.

    Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.

    Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.

    Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev

    Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization

    Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections

    Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog

    Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com

    By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️

    Created by Swizec with ❤️