Swizec Teller - a geek with a hatswizec.com

    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:
    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.

    Enhanced by Zemanta

    Did you enjoy this article?

    Published on March 2nd, 2012 in Uncategorized

    Learned something new?
    Want to become an expert?

    Here's how it works 👇

    Leave your email and I'll send you thoughtfully written emails every week about React, JavaScript, and your career. Lessons learned over 20 years in the industry working with companies ranging from tiny startups to Fortune5 behemoths.

    Join Swizec's Newsletter

    And get thoughtful letters 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.

    "Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"

    ~ Ashish Kumar

    Join over 14,000 engineers just like you already improving their careers with my letters, workshops, courses, and talks. ✌️

    Have a burning question that you think I can answer? I don't have all of the answers, but I have some! Hit me up on twitter or book a 30min ama for in-depth help.

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

    Curious about Serverless and the modern backend? Check out Serverless Handbook, modern backend for the frontend engineer.

    Ready to learn how it all fits together and build a modern webapp from scratch? Learn how to launch a webapp and make your first 💰 on the side with ServerlessReact.Dev

    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 bySwizecwith ❤️