So I was contacted by a Google recruiter a few weeks ago. When I told him that I was momentarily not interested in any full position (since I am still working on my PhD) he asked whether I was interested in an internship. And though I was not really all too interested either, I thought that I had nothing to loose if I waited what they could offer.

After sending my CV and answering loads of questions in a mail I was scheduled for a telephone interview yesterday afternoon. I’d heard and read that Google was pretty demanding on these interviews and thus expected it to be challenging. I even spent some time to prepare for it. Here’s (in great detail) what really happened:

**begin{rant}**

At 2.02 pm I was called by a software engineer working for Google in Zurich. (I’d only got his first name and telephone number but afterwards a quick search in Google told me that he was actually the “first Bangladeshi to be hired at Google”. And his LinkedIn and myspace pages told me the rest.) First thing I noticed: The phone connection was lousy at the best. I told him repeatedly that I could barely understand him but he didn’t care… (Switching to Skype would be have been so easy but maybe he could not understand me due to the bad connection…)

He started straight with the first question: I was given an infinitely long line and two points on it and was asked to determine all points whose distance from the first is twice the distance from the second. I am — as you might have seen — a mathematician; and though I felt slightly ridiculed it was more than trivial for me to give him the two solutions. Then he asked why there were only these two and — as a mathematician — I gave him one obvious, perfectly correct proof: What he was asking for were the solutions of a quadratic equation. Apparently this was not what he wanted to hear. So he went on: “If you don’t know this let’s try something else.”

You’ve got to know: I am working in the field called “discrete mathematics“. This is what I’m doing all the time! And I do think I’m quite good at it.

And now there was this prototypical computer scientist pretending/believing to understand this kind of stuff better than I.

Gosh… I don’t know how but I managed to stay calm…

Next thing on the list was writing a function in my preferred programming language (Python) that takes an int and returns the number of groups of zeroes in its bitstring. I had to type my program into a Google Doc sheet (where else ;-)). This went fairly well except that because of the noise I had to ask for the problem three times. And afterwards he kept lamenting about some typical typing error (I forgot exactly what is was; something that simply happens as you type and that was gone a second after it had happened) for several minutes…

After that he asked me for the time complexity of MergeSort and QuickSort. I said average time complexity was O(n logn); I had to repeat: “big O of n log n”; and another time. Then he said: “No, it’s n log n.” (I’m sorry, I have this speech disorder that always makes me say “O” — or “Omega” or “Theta” — whenever I’m talking about complexities.) At least I made a point for stating correctly that the worst case complexity of QuickSort was “n squared”. (I managed to suppress my disorder here.)

Anyway, if I was given a sequence of numbers, which algorithm out of the two would I choose to sort them? After stating that this depended on my knowledge about the sequence, I was told that it was completely random. So in this case I’d prefer QuickSort, which was of course wrong since I did not know anything about the sequence… So then I’d choose MergeSort… But did it matter?

Next task was this: I was given 49 out of the numbers from 1 to 50 in an arbitrary order. Afterwards I was to tell which one had been missing. Of course one can just add up the numbers one by one and then determine what is missing.

Okay, fine! Now I am only told 48 and have to determine the missing two. I wanted to add the squares in addition to the numbers themselves to obtain two equations that I can solve for the two numbers. This still works efficiently but apparently was not what he wanted. Since I failed miserably in mind-reading I was instead asked to write down (in the Google Docs sheet) the formula for the sum of squares of the first 50 numbers.

I’ve read that you should never ever in an interview tell your interviewer that you do not need to know the things he asks (and I agree for algorithms and the like) but as a mathematician I am not paid for memorising formulae but rather for knowing where to look them up or reconstruct them (easy exercise here) if I happen to need them and instead occupy my brain with more interesting matters.

But as it were, I just gave a lecture course for beginning math students a few weeks ago and could remember the formula. Anywho, since the formula is a bit difficult to write down without any kind of typesetting means I asked him whether he could read LaTeX code. (For mathematicians this is *the* obvious way to do these sort of things.) And of course (as the self-assigned greatest Bangladeshi ever), he could. Well, I wrote the formula: sum_{i=1}^n i^2 = frac{n (n+1) (2n+1)} 6, and it turned out he really couldn’t. This was surely my fault because… I don’t know why but he did not like it for sure…

Last question in the interview was: I am given a function (rand4) returning random numbers between 0 and 4 (inclusive) and was asked to write a function returning random numbers between 0 and 6 (inclusive). Well, this is really easy: Just multiply the output of rand4 by 3/2. He asked: “How can this return 5?” I said: “If rand4 returns 10/3.” He repeated: “How can this return 5?” I also repeated: “If rand4 returns 10/3.” We had another loop until he said “Yes, but rand4 only returns integers.” (Again my mind-reading abilities had failed me hopelessly. Maybe I should have asked about the return type but due to the way he formulated the question it never occurred to me.)

He did not like/understand my first suggestion for the newly specified problem but was unable to express his objections in proper English. So after a while I devised an easier solution by producing a number in base 5 (using rand4) and discarding everything larger than 6.

At this point we were already over time and finished the interview. (Remember I could barely make him out. So everything had to be repeated several times.)

So looking back it seems the hardest task for me was to stay calm and friendly until the very end. As a result, I am no longer interested in an internship at Google right now. Somehow I feel a little bit over-qualified and under-appreciated.

**end{rant}**

I should add as a disclaimer that I still do believe that Google most of the time is demanding and professional in job interviews and might also be a cool employer.

Moreover, I’ve got to say that I cannot guarantee that my “quotes” of what he said are actually literal because I could hardly understand him most of the time.

Actually, …

**begin{rant}**

Maybe Google should just consider picking and training their interviewers more carefully and not letting every socially inept and mathematically challenged programming nerd with an extra amount of self-esteem perform interviews. Moreover, they should really tell their interviewers to make sure that the quality of the phone connection is sufficiently good.

**end{rant}**