Category Archives: personal

My Google Interview

Well it’s just under 5 months since I promised a post about my Google interview. Being the highly active blogger that I am, I’d say its about time..

Back in early April I got an email from a recruiter from the Google European Recruiting Centre. I was a little puzzled how she got my name, but a bit of detective work found a guy I went to school with worked for Google in the London office and he’d recommended me.

After a phone converstation with the recruiter, we decided that a position in London would suit me best (I live in Australia, and have a wife and a then-2 year old child, so this was kinda a big deal), and I was handed over to a recruiter from London.

Google’s London office mostly does mobile applications, and I wanted to do web apps, but I was assured this wouldn’t be a problem because they had positions like that available too.

So the wheels were set in motion to setup the dreaded Google phone screen, and I started studying. It’s hard to explain how difficult I found that. Not only did I have to remember a whole lot of half-remembered computer science from ten years ago, but I also had to remember the Math that went with it, which was much harder to dig up. Things like big-O notion are easy enough conceptually, but when you are actually analyzing an algorithm you need to remember the maths for dealing with logorithms (for example), which isn’t something I’ve thought about much since doing Computer Science 4 back in 1997…

Interestingly, every recruiter I spoke to referred me to Steve Yegge’s “Get that Job at Google” post which I found ironic considering the “I don’t speak for Google” disclaimers he uses.

Anyway, in early May I did the phone interview with a programmer from London. While I’m not going to go into specific questions, it did involve writing some code (in Google Docs), and some highish level problem solving. For me, I found that I’d read some of Steve Yegge’s other writing pretty valuable.

I finished the phone interview feeling pretty reasonable, but I was still pretty pleased when I got called to arrange some on-site interviews in Sydney.

We arranged to do two in-person interviews with engineers in Sydney, and then two video-conference interviews with London, in late May.

So I went back to studying. Working through the stuff on Steve Yegge’s post was actually getting me more and more worried about all the stuff I didn’t know, but what else could I do?

In my first interview, the first question was pretty much my nightmare scenario. It was a (computer) math question, a (to quote the interviewer) “easy question to start you off” and it was something I didn’t know, and even worse – it was something I’d known I didn’t know but had left in favour of other things. So I muddled though the best I could and got the answer in the end, and the subsequent questions from that interviewer were better, but I was pretty worried that I’d blown it badly.

The next interview was much better. It was pretty clear that the first interviewer had told the second one that I was pretty nervous, because he kept telling me to slow down and not to worry too much. His first question was something I was much more confident about, and I got the naive solution out pretty quickly. Even better, I was able to identify that the class of problem was the same as something I’d been asked before, so I was able to skip the obvious improvement and got straight from the naive solution to the optimal solution in one step. The interviewer was happy about that, and let me choose if I wanted a low level or high level question next.

I chose a high level question, and he gave me a “design and sketch-code an appropriate interface” problem. I was very happy with that question because it’s the kind of thing I deal with most days in my work. I have what I though was an adequate answer, although I could see a lot of problems with my implementation. the interviewer was very happy with it, though, and said it was the best answer he’d seen. That surprised me, because I could see areas to improve, but I’d run out of time, so suspect him telling me that was a technique to try and get me over my “nerves”.

The third interview was the first video-conference one. There was nothing the stood out at me in this one, except it was the only interview where there was a question that involved talking about design trade offs etc instead of coding. There was also an interesting question where I forgot a pretty basic computer science concept, but once I got a hint I solved it reasonably.

The fourth interview was the interesting one. The first question involved writing a solver for a puzzle-type game. Unfortunately, it wasn’t a game I’d played before and that really cost me because I didn’t know how I’d go about solving it. To be honest, I stuggled pretty badly with this one. I did write a checker, to determine if a given solution was valid, but it was the one question I had to give up on.

The second question from that interview was probably the best question I was given. I wish I could post it here, because the approach to solving it and the optimizations used were just so typical of all the other questions, and the optimal solution is glorious, and yet is easy to understand.

So that was it – the famous Google interview. I can’t say that there were any surprises, and I came out of it with mixed feelings.

I felt that I’d done reasonably well. I’d missed one question, and struggled in another, but I thought some of my other answers were pretty good, and I hoped my second interview might have been enough to get me over the line.

I was hoping to find out quickly how I’d gone, but that wasn’t to be. My next contact with Google was at a Developer Day here in Adelaide. I was fortunate in that the recruitement consultant from Sydney was at that event, and I’d met him at the interview. One of my interviewers was also there (the second interview – the one I’d done well at).

I spoke to them both, and both were pretty positive. The recruiter actually said he’d looked at my feedback and that I shouldn’t plan to be in my current job much longer, and both asked if I was fixed on a job in London or if I’d be interested in Sydney. They both mentioned again that I’d been very nervous, which I gladly agreed with (anything to excuse my bad answers!)

I came away from that event feeling pretty optimistic.

A couple of weeks later I finally got a response from London that the position I’d been going for had been taken by an internal applicant, but that they’d like to do more interviews with me for another postion on the mobile team. I also felt that the feedback on my interview was very mixed – some very good, and some not so good, which made them feel they wanted to do another interview. That pretty much brings me up to my last post on the topic.

Some common questions:

  • Do you get asked puzzle/brainteaser questions?
    • No – they were all algorithm and coding.
  • Was it as hard as everyone says?
    • Yes. By far the hardest 5 interviews I’ve ever done.
So would I do it again? Yes I would, but I’d probably go for a position nearer to where I live. I’d also do a few things differently WRT to studying. Instead of working my way though Steve Yegge’s study list, I think I’d probably concentrate a lot more on the TopCoder algorithm questions.

On not going to Google

So contrary to some self-inflicted rumors, I’m not off to Google London or Sydney. My wife has taken a new contract here in Adelaide so we’ll be staying here for at least another 12 months.

It is kind of disappointing, but I’ve been doing the Google recruiting process for a week short of 3 months now, been though 5 interviews (with somewhat mixed results – yes, I’ll do a post about that), turned down the opportunity to do more interviews for some position I had no interest in and the last message I had from Google HR was that they would have “concrete clarification” about other positions for me on Wednesday. That was Wednesday three weeks ago.

So apparently Google have done studies which show that slowing page load times from 0.5 to 0.9 seconds cuts traffic by 20% – people just don’t wait around. Perhaps I might recommend a similar study for the recruitment process?

OTOH, all the Google engineering staff I met or talked to were great. So all in all it was a mixed experience – if you are thinking about trying it I’d recommend it, but I’d also recommend not trying anything too complicated (like saying yes to a recruiter from another continent..)

Random stuff

It’s Friday afternoon, so here’s some random stuff:

  • We live across the road from a park, and most Saturday mornings some guy rides his bike there to do Yoga. He also brings his pet chicken to the park and lets it run around. (This might be normal behavior in San Fransisco or somewhere, but in suburban Adelaide it is kinda odd)
  • Alex is now 2, and doesn’t like sleeping at childcare. Fortunately, they have figured out that letting him sleep with a ladder (yes, a full size, aluminum ladder) will calm him down and get him to sleep.
  • Paul Keating – no matter if you loved him or hated him – had a unique way with words. From yesterday’s Financial Review: “When push came to shove, McGuiness’s journalism did not add up to a row of beans. He help more political, philosophic and economic positions than would have the Karma Sutra had it been a philosophic text“.
  • If you don’t program, and you write about the meaning of programming APIs then your opinion is moot. This also applies if you try and talk about APIs
  • The Moth is a cool boat, but has come a long way since my circa-1970 tunnel hulled version. It’s kind of weird that they banned tunnel hulls, but freaking hydrofoils are okay…

Sleep.. glorious sleep

Our boy Alex is 21 months old now. During the first 20 months of his life he sleep though 10 times, and we were often up for a couple of hours during the night and/or had to get up well before 6:00am. That was pretty tough, but then he learnt how to climb out of cot.. We had to buy him a bed and suddenly it was taking 2 hours to get him to sleep, and he was still waking up a couple of hours later.

After a week or two of that I gave in and agreed to see the sleep doctor. To my absolute and utter astonishment Alex is now going to sleep without crying and sleeps though the night at least 2 out of ever 3 nights. Even better – when he does wake up he goes back to bed himself.

So.. if there are others of you suffering though this.. there is hope!

Recommendations for Australian Contractor service companies?

I’m currently employed as a contractor, which means I need to have my own company (I operate as a sole trader). For a variety of reasons this sucks, and I’m interested in any recommendations for companies which act as contractor shell companies (I’m not sure what the proper terminology is). What I’m looking for is a company which employs me as an employee, and the company I actually work for pays my contract rate to. Then the shell company handles all the tax obligations, etc.

I’ve heard of a few companies in Australia which do this, but the only one I remembered to save is Entity Solutions. Anyone got any other recommendations (or experience with them)?

And I'm back.

Yes, I'm back (and have been for a few weeks).

The wedding went well – and yes, thanks to a last minute flight to London by my friend it actually was a real wedding.

I had the worst trip home ever – left Edinburgh at 9:00 am on Wednesday, arrived home at 7:30 pm on Friday. I am sick of airports, and airplanes where the seat won't lock in position, so if you have it upright it slowly starts reclining, and if it is reclined it slowly starts going upright.

In unrelated news I'm now (a) working Monday-Wednesday so Maya can go back to work on Thursdays and Fridays while Alex & I hang out, and (b) I'm now technical architect at work. I'm not quite sure how (a) will effect (b), but we'll see….

Away for two weeks

I'm off to the UK for two weeks for my friend's wedding (which is now a “commitment ceremony” due to various immigration issues).

I'll be checking my email, but don't expect well-thought out responses….

For the interested, here's some stuff to read while I'm away:

Interactive TV: Conference and Best Paper

This paper describes mass personalization, a
framework for combining mass media with a highly
personalized Web-based experience. We introduce
four applications for mass personalization:
personalized content layers, ad hoc social
communities, real-time popularity ratings and
virtual media library services. Using the ambient
audio originating from the television, the four
applications are available with no more effort than
simple television channel surfing. Our audio
identification system does not use dedicated
interactive TV hardware and does not compromise
the user’s privacy. Feasibility tests of the proposed
applications are provided both with controlled
conversational interference and with “living-room”
evaluations.

Detecting Spam Web Pages through Content Analysis

In this paper, we continue our investigations of “web spam”: the injection of artificially-created pages into the web in order to influence the results from search engines, to drive traffic to certain pages for fun or profit. This paper considers some previously-undescribed techniques for automatically detecting spam pages, examines the effectiveness of these techniques in isolation and when aggregated using classification algorithms. When combined, our heuristics correctly identify 2,037 (86.2%) of the 2,364 spam pages (13.8%) in our judged collection of 17,168 pages, while misidentifying 526 spam and non-spam pages (3.1%).

I like this paper, because I used some very similar techniques in my de-spammed version of the Google Blog Search.

About Me

I'm Nick, 28, from Adelaide, Australia. I'm married (for nearly 6 months) to a
wonderful wife.

I work as a Java developer for a mid-sized financial software company here in
Adelaide. I've been doing Java for 3 years, and before that I did Delphi (which I still
have a soft spot for).