Tags: | Posted by Admin on 7/31/2008 2:54 PM | Comments (0)
Read previous part I and part II. The reception area was, predictably, decorated in Google’s funky decor: from the multicoloured chairs you weren’t exactly sure how to sit on, to the lava lamps churning away in Google’s colours. Behind the receptionist on the wall was a giant Google logo and projected over the top was a real time scrolling list of searches (apparently unfiltered). It was an awkward silent moment or two for the receptionist as she tried to attract my attention by waving her hands in the air and shouting loudly. No, not really, but when I was finally able to tear my eyes from the screen I talked to her and I signed in using the computer which electronically accepted my signature and printed a little label for me. Google is an extremely closed company: later my interviewers would unanimously agree that the worst part about it was not being able to tell people about the cool things you were working on. But understandably, the company has a lot to protect. Google don’t develop new products as much as get people thinking about new ways in which to use them. Before Gmail a free email provider with 6 Gigs of capacity was unheard of, now 250 meg is the minimum you can expect anywhere. Before Google in fact, search was a solved problem… The Googleplex is less of an office and more of an idea’s factory. Technology isn’t limited in what you can do: given enough time, money and creativity you can get there. The real question is where is “there”. I never got the chance to visit Disneyland as a child, but as a nerd, visiting Google was close enough. At the time of my interview I couldn’t even imagine working there - the reputation Google has in the recruitment department is very intimidating. By the time I was escorted in through the big glass doors and saw Lars Rasmussen programming away I’d written of the trip as a holiday, won in a resume raffle of sorts. At first there was very little to discern that Google was different from any other office, but then I saw the hammock suspended next to the windows overlooking Darling Harbour. And the cubicle covered by camouflage netting. And the free sweets and drinks. I’d started this quest looking for perks, but had found so much more. The invisible perk, the one I was most looking forward to - 20% time, was everywhere. I tried, desperately to grab a glimpse of what was going on on those workstations. Did I see anything? No. I was lead into a meeting room … I can’t remember if it was called “Denial”  or if that was the room next to mine, or if it was simply something else and I had just imagined that that was it. Regardless, the room reflected none of the decor visible in the rest of the office. It was essentially perk free, plain and unimpressive. It did have, to my dismay, an awful number of whiteboards. Paint the walls, hang streamers from the ceiling… c’mon Google at least light the area with a lava lamp. While I spent time waiting there I looked out the gaps in the frosted windows. People were just working, like they would anywhere else, they didn’t look happier. The just looked like employees. Spending 3 weeks reading and watching everything you can about Google inadvertently sets your mind racing with ideas as to how fantastical the whole place is. Had the ceiling opened and a giant candy cane holding Larry or Sergey (or both) descended into my cubicle the place would have aligned with my expectations. Never-the-less I knew that, like most Disney classics, the magic was in the air. I was deep in contemplation about the object oriented loop like nature of most Loony toons when my interviews actually began. It was a 5 interviews, 45 minutes each back to back. The structure was simply: Interviewer introduces them-self Interviewer asks you questions relating to projects and experience Interviewer asks you technical questions You get to ask interviewer questions While I can’t tell you exactly what was asked, lest I set off Google’s very smart lawyers (I signed an NDA) I can tell you the gist. The gist was: Interview introduces themselves Me recognises interviewer from video/website/article/research paper Interviewer asks questions about my previous work Me feels woefully inadequate as I reply about how I stitched simple things together to something really simple on a small scale. Interviewer asks technical question Me racks brain for similar questions, approaches question step by step, writes gibberish on whiteboard while planning, erase gibberish, fill newly erased gaps with more gibberish, restart on new section of while board something that essentially represents my answer. Interrupted by lack of time Quickly ask questions while wracking interviewers face for the slightest inkling of how I did. Write down notes on interview answers. Interviewer leaves, quickly. The topics covered were pretty much what I studied, in my five interview they were: Working with strings and chars, minimal reliance on API, operator overloading, Big O Sorting, more sorting, sorting under input constraints, Big O Algorithm puzzle, Big O Class design and graph theory problem design, hashtables, XML-RPC (interviewer taught me the basics), interfaces, concurrency, semaphores I was rejected by a phone call a week later (yesterday), with no feedback given. But I already knew what I did wrong. My mistakes included: Not being able to evaluate (1< 1) - read “is 1 less than 1″.  It’s a surprising result to get “true” when you’re jet lagged and your brain is running on awestruck and you have someone working from Google looking over your shoulder at your code. On one occasion, not listening to the question asked. I was intimidated by the size of what he had asked me to design (something robust) and I instead wrote only what was minimal to get the job done (and grew it as I went). Not asking for any breaks. Not eating lunch in any of the breaks that I didnt ask for. On one occasion even thought I explicitly knew what was going on, didn’t articulate it correctly - partly because I knew what I was doing, but didn’t know what I was saying. Always jumping to the complex efficient solution first and not knowing how to do it, instead of starting at the naive obvious solution and working from there. Not getting to sleep early enough the night before / not practising questions the morning of. Do these things. The whole experience was fun. I got a lot out of it, the most important was: How to remain grounded. I’ve been told by everyone what a great achievement it is to get that far - all I can do is wish I could add it to my resume. Maybe I will. To this day, with no feedback I’m still guessing if I’m just wasting Google’s time. They urged me to reapply, but then again, they tell that to everyone. There is a shortage of CS students. Google does have a high false positive rate. Maybe they just want to see if I will - a sort of test, you know - to see how committed I am to working with them. It was disapppointing but I have a solution. That solution is: Finish my degree. Go on a holiday. When I get back, I’ll reapply. Original story
Tags: | Posted by Admin on 7/27/2008 2:50 PM | Comments (0)
Find previous part here. In my holidays I’d gotten to see some of the fruits of my 35 graduate applications made earlier in the year. The demand is high, yes, but for skilled labour, not us university grads. Especially not those who are travelling to Europe for a month, or 8. Employers love well rounded graduates, as long as they get well rounded in their own time. Some graduates, the really well loved ones, actually get an upfront bonus, free plane tickets and a pat on the ass in return for a signature on a 2 year contract. Not me though. When Google emailed regarding a visit to their Sydney headquarters I was quite pleased with myself. It was like winning a raffle where your resume is the winning ticket. I estimate that Google Sydney interviews between 150 - 300 people every year, but the figure could be as high as 1000 after hearing that some employees can interview up to five people a day. Considering Google (as a whole) gets around 1,000,000 applications a year a reported 99.5% of which are rejected, I wasn’t doing badly at all. Google have been complaining about the lack of quality computer science professionals for some time now, especially in Australia where CS departments are slowly getting absorbed into commerce in the face of rising costs and lower enrolment figures. Face it, IT is nerdy. Combine this with growth that has seen the Sydney office double in size for the last few years and the smile on my silly face just kept growing and growing. You see: by my mathematics Google must hire at least 25% of it site interview candidates to grow at the rate it does. A one in four chance to work for Google isn’t something you should pass up easily. So I began to study again. Putting aside the work I’d done so far, I started again. The HR lady actually directed me to the following links: I highly recommend that you take a look at a very helpful text book to help you prepare for the in depth questioning as part of the Tech Phone Screen - ‘The Practice of Programming’ by Brian W. Kernighan (Author), Rob Pike (Author) Want to know what some sample sets of problems there might be? Check out: http://steve.yegge.googlepages.com/five-essential-phone-screen-questions http://steve.yegge.googlepages.com/what-you-need-to-know http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html You can check out some of our recent projects beyond Google search by visiting http://labs.google.com and review some of our research publications: http://labs.google.com/papers.html Visit www.youtube.com/google for more information on the Google recruiting and hiring process. The video is titled - “Interviewing at Google” http://au.youtube.com/watch?v=ZxZOpNUN3Ww&feature=PlayList&p=2299EEC65662D7F5&index=0 And one last helpful tool, visit http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index Please let me know if you have any questions.  Good luck preparing! Good luck indeed. I started by reading the resources and associated links and kind of parsing the topics to study. The fall into the following topics: Programming (Java / C++) - A good understanding plus how to implement the following: Big O Analysis - How to do it, the order of badness, should be able to look at functions and say order. Sorting Algorithms - Bubble, Sequential, Insertion, Merge, Quicksort Data Structures - Arrays, Trees, Hashtables, Vectors, Linked Lists, Queues / Stacks, Maps Object Oriented Programming - Basic concepts and how they should be implemented in your language Graph Analysis - Adjacency Matrix, Adjacency List, Dijkstra, A, Bredth First / Depth First Traversal Operating Systems / Concurrency - Concurrency, Locks, Mutexes, Semaphores, Deadlock and Livelock, Scheduling, Threads Scripting - Regular Expressions, Grep and other UNIX commands Probability - N choose K, Independent and dependant events Problems - Common / Famous problems: Travelling Salesman, Knapsack Problem, NP Complete problems and their variants. For this The Algorithm Design Manual recommended by Steve was invaluable, and you don’t have to buy the book, its online here. I worked by making a list of these ten topics with sub concepts in sub lists. I went back to my CS notes from uni where I could, in the event that I couldn’t find them (or the more probable: they were destroyed) I used a lot of online resources. A lot of uni’s provide their material online but as a Java student and applying for a Java based role I found these lecture notes and these practice questions invaluable because they covered the implementation aspect of the above topics. Then I read. You name it - if Google was a keyword, I read it. Whenever I got tired of studying the concepts I read about peoples experiences and various tips, I read (and worked) practice questions, more practice questions and what not to do and more practice questions. In my breaks (breakfast, lunch, dinner) I watched video’s from the Google channel. After revising for the Google Interview I found this particularly interesting viewing. Then I began everything again, this time programming on a piece of paper. You’d be surprised at how different programming is without a compiler. Things like “for loops” just dont look the same written on paper as typed on a computer screen. The IDE no longer helps you out, there’s no bracket matching or syntax highlighting to cover your ass. It’s strange - believe me, the last place you want to be learning this is in the interview. I flew into Sydney the day before the interview, the 5 hour flight was useful to revise things. Remember to bring more than just material to revise though, after the interview, on the flight back the last thing you want to be doing is reading through that stuff. Take off and landing (when electrical items have to be switched off and stowed) are great times to read through those research articles. A word of advice. A particularly obvious interview question leapt out at me from one of the research papers I was reading. “How does Google work?”. It’s probably a good idea to have at least a vague understanding of this, you know, before you apply to work there. The taxi driver was a software engineer, or at least studying to become one. He said he’d applied for Google as well. As nice as the guy was the whole experience didn’t instil me with confidence. It was shortly after this the paranoia began to set in. I don’t know exactly how much it had to do with the taxi driver being a programmer but it occurred to me that if Google could afford to spend around a grand flying me here and putting me up for the night, that the could sure as hell afford to pay some security consultant / HR psychological profiler $50 an hour to watch my every move for the time I was in Sydney. The improvement in my behaviour was remarkable, from that point onward I became the model child my parents always wanted me to be. Turning off lights when I left the room, cleaning behind my ears, watching the news, being outwardly curious - even outdoorsy. Elements that, to some degree, follow me to this day (6 days after the interview). I checked into my hotel, fantastic views but not overly extravagant, functional. Had dinner in darling harbour and went through a final checklist before bed: 1. Have questions to ask, don’t be afraid to write them down - it shows you’ve thought ahead. I prepared a fair few. I tried to ration these out among my five interviewers. 2. Have a list of possible projects you’d like to work on. In addition to this tell them your ideas for Google. Tell them what annoys you about Google, but do some research into why its done that way (in case they have a valid and important reason that you’ve overlooked). If you’re not sure, you can kill birds 1 and 2 by posing this as a question. Wasn’t sure what to do with a King size bed. Seriously, are there people who need this much freedom while unconscious? .gallery { margin: auto; } .gallery-item { float: left; margin-top: 10px; text-align: center; width: 33%; } .gallery img { border: 2px solid #cfcfcf; } .gallery-caption { margin-left: 0; } In the morning I decided to take a look around Sydney. I visited the Harbour Bridge and the Opera House on a morning run through the city. I wanted to think that if this interview went to shit, I would still be able to say I got a free trip to visit the Google offices in Sydney, which is still a pretty good consolation prize. I watched the news to ensure I was up to date with current affairs. Ate breakfast at the hotel restaurant while reading Larry and Sergey’s paper on Google. At 10.00 I checked out and began the walk next door to the Google Offices. Original story
Tags: , | Posted by Admin on 7/27/2008 2:48 PM | Comments (0)
I’ve been making an attempt to be environmentally-friendly/green/eco-responsible recently, whatever you call it. I’ve been driving better, exercising and studying in my free time. The self improvement isn’t due to increased social responsibility, self esteem or motivation. Its not peer opinion and isn’t even financially driven. It’s because Google is watching me. Don’t get me wrong, I’m not a big polluter - quite the opposite really. But when you try to evaluate whether its worth flushing a urinal that’s already leaking, or if watching the tv or using the computer is a bigger expenditure of electricity, especially when your laptop was charged on the other side of the country where electricity is produced through fossil fuels. Similarly, is driving safer on the left, behind another car or on the empty right lane, despite signs that say “Keep left when not overtaking”. It all started, ironically, when I applied for a job at Chevron. I got through the extensive screening process down to the round where they show you where they work and put you through those psychological screeners and in a room with 10 other potential candidates in a “group discussion” where they look for leadership abilities. This later evaluation, if you ask me, is purely designed to initiate confrontation - a “Jerry Springer” of the recruitment world. Never-the-less I persisted and was very positive about the prospects for my new job as an IT Analyst in Chevron. Why wouldn’t I be? Of the other candidates I was the only one with any significant experience, a double degree and I was locally based. I don’t even think I interviewed that badly - quite the opposite, I saw some raised eyebrows and smiles at my answers. So it was a big surprise when I got rejected. Huge. I was distraught actually, I kept racking my brain as to why - eventually it dawned on me: the perks. Talk about naive graduate, but the though of a company that evaluates your workstation (I’m talking about computer, hardware, software, desk, chair, footrest, couch and any other office furniture) on a quarterly basis for ergonomics, aesthetics, fit and just plain if you liked it or not.  This was in addition to the massages, bonuses and safety bonuses. Having never worked in a big company before, it was evident that economies of scale are very beneficial when it comes to employee perks. What then? I promptly applied to Google. It was my personal “up yours” at Chevron. That’s not a perk, mate….. This is a perk. - Crocodile Dundee (or something like that). At first it was a joke. No, really, I’ve heard how difficult it is to get into Google. Just look here. They hire the best (?) and they hire quickly. The company is 9 years old and doubling in size on a yearly basis. If ever there was proof that There no such thing as a free lunch. its Google. I was contacted a few days later by the Google Australia HR lady by email to organise a time for a phone interview. I didn’t really give it much thought, but had I known the statistics, I probably would’ve thought about preparing for a bit more. I’m no people person, but I know how to talk about myself well, so usually when I get talking to someone I’m not surprised when things proceed from there. In the first phone interview I felt everything going according to that old recruiting rhythm. Its easy to be positive about your degree and your experience when everything you’ve done is stuff you really enjoy and are passionate about. It was allllll good. Right up until she told me that we were about to arrive at the technical component of the phone screen. I panicked. It’s been a long time since I did Java, C++ is not my strongest suit. I was asked questions such as: “What’s the order of a function that iterates through an array?” and “Whats the difference between a class and object?” and “What’s the difference between final and finally?” and “What does the static keyword do?” - and few others. I answered in plain gibberish. One of my own responses I struggled to gauge. She only corrected me twice, which I interpreted to mean that she was only telling me the answers which weren’t blatantly wrong. Her opinion of me must have been positive enough to warrant scheduling the actual technical interview though. I asked her to delay it to the following week. After exams finished, I hit the books like crazy - I prep-ed for the Google technical phone interview like another exam. I started googling for interview questions and I hit a pack of brainteasers. Which ever moron put the title Google Interview questions on those brainteasers wasted me a lot of time, cause I never, ever, came across any of those in the whole interview process. I’m quite certain that the whole “Google Interview Questions” title was just appended to some computery type puzzles in an attempt to make light how difficult the process was going to be. They were pretty fun though. I studied for 2 weeks on the concepts that were fuzzy to me, using Steve Yegges posts as a guide. The HR lady had kindly sent these to me and they did nothing to boost my initial opinion that if I got to that stage that I would just “wing it”. The fact of the matter was that Google was the cheese, I was the mouse and the interview process was a maze, no - a gauntlet. Ok start again, Google was the virgin princess, I was the black knight - I figured out what my answers to the initial phone screen’s interview questions ment in real world terms (gibberish) and calculated how lucky I must have been to get by that day. Then I figured out what the answers should have actually been, what hash tables were and when I learned what they do, I went back and relearned Java. I studied data structures and Java to kingdom come. I roughly figured out Big-O analysis and I even took a quick peak at regular expressions, graph theory. My old lecture notes would’ve come in handy if they weren’t in ashes due to my annual note-burning festival. I found copies of my lectures online, read through them all. Then I started coding again. And had to relearn all the concepts again of-course. I started from the basics. Everything came back quickly enough, I love that I had paid enough attention in lectures to understand what was going on. I’d have been screwed otherwise.By the day of the big phone interview I’d gotten to a level where I could comfortably code things. Probably the level I should have gotten up to before my initial phone screen - or the level I should’ve started studying at. I imagined the recruiter writing notes to the interviewer: “Just scraped in… show no mercy.” or “He’s funny when he talks about Big-O, ask him those questions - it’ll make your day.” or “We had to include him to show you exactly how low the base line goes”. The interview started - he was a different guy from who the recruiter told me I should expect. I told him so. Then I backtracked thinking that he might think that I didn’t want to talk to him, or worse, that the other guy and I conspired to get me into Google by asking me easy questions. After that was resolved I noticed he has a heavy Scottish accent, thankfully he was aware of it too -told me to ask him to repeat things if I didn’t understand. I have a feeling that a lot of Google employees in Sydney work on Google Maps. He was initially from Mountain View and a very interesting guy - I asked him a fair few questions, not because I had  to but I was just genuinely interested in what he did. He asked me what ideas I had for Google. I told him about an interesting idea I had and it really seemed to capture him. Then he asked me how I’d go about implementing it. This particular problem involved figuring out if an author of a particular article was male or female. This was my answer - I kid you not: We’d just search thought the text, building probabilities as we go. We’d look for authors name, look it up in a table or male female names, we’d look at gender identifying establishments (eg. a private boys school)  and occupations (eg oil rig worker) multiplied by the gender distribution in these occupations, we could look at the colour usage on the text (pinks and lighter colours for females), we’d look for references to partners and multiply it by the probability that someone was heterosexual or homosexual. At this point I stopped. I had said the word homosexual in a technical phone interview. There was a silence, but not too long - I mean, there really wasn’t anything to worry about, I knew that, did he, of course he did, didn’t he? - were both professionals, it was a professional answer… For the record I don’t swing that way, neither did he. Google is an equal opportunity employer. Of course he did. The interview continued. We went through an implementation algorithm for a picture collage maker - top level design. Hashtable usage (where pictures were indexed by the predominant colour on them) was important to achieve the speed constraints. Short answer: Hashtables. We covered a similar question to the gender identification regarding fraud detection. Top level design again, used hash tables and probabilities. Then it was over, he thanked me I thanked him, I said I thought it would be harder. He laughed and said he could forward on the message to my next interview. I told him that I really didn’t think that would be necessary. We said goodbyes. I was not really sure what to take away from that interview  - he was obviously positive enough about it to suggest that I would get a second. Was this for real? Two days later, I got an email requesting a suitable time to go to Sydney. This had really gone too far. Original story Continue Part II