Monday, May 21, 2007

The Google Masseuse Interview

Did you want to a masseuse for Google? You better check out this article here. The interview sounds just as tough as technical interview: you're going to have to be the best at what you do.

"when you find an awesome candidate who gives off a warm, calming attitude and just keeps magically making my (almost always) sore back disappear and lets me forget about all the stresses of the world for a few minutes, that's when I know we've found the next Google massage therapist."

Friday, May 18, 2007

Googling Your Google Interview

A reader asks:

"I'm about to go through the google interview process... was curious if there were any resources that you thought *did* help - lots of sites purport to have sample interview questions, but I was curious if one had better info that the others..."

Before my two interviews, the recruiter had e-mailed the name of the Googler who would be interviewing me. What's in a name? In this age of Google spying, it could be helpful in preparing for an interview, to know your interviewer before you even meet. I actually did Google up my interviewers but only ended up finding out about one of them. Interestingly enough, he was a contributer to an Open Source library that I had used before at work. Is it ethical to Google people up? I don't know, but with every Google search I did, I was presumably helping him keep his job anyway. My main point though, is that Google is a good tool in the interview process.

Google was a very good resource in picking up information and tidbits about the interview process. Sorting through the mess was difficult though but I found the best resources were not 'job websites' but blogs either about the interview process or blogs written by Googlers. These personal insights came straight from the source and will give you an idea of what to look out for. You will be able to get a decent idea about the questions being asked and learn a lot about the company culture and be able to talk about it. Here are a couple of blogs which were good reads:

http://www.nomachetejuggling.com/2006/12/30/my-interview-with-google/
A very detailed, well-written piece about the experience, including good pictures and commentary. Don't forget to read the epilogue either.

http://benjismith.net/index.php/2006/06/07/interviewing-with-google

This guy, in short, seems like a pretty brilliant guy. The topics they got into were way over my head -- "I’ve had lengthy conversations about OO design patterns, database design, computational linguistics, naive Bayesian classification, agglomerative clustering, time-series data analytics, hash effectiveness evaluation, search algorithms, partial sorting, concept-mapping in n-dimensional vector space, and state-graph redundancy elimination." This account really shows how exhaustive and mind draining the interview can be.

http://www.blogomonster.com/blog/ybm_caaw/general/2006/09/09/job_interview_by_google
Another account, which kind of turns out to be a little bit of a horror story, with an apparently 'rude' interviewer. In the end of his post he gives some very relevant tips to get through the interview.

http://www.shmula.com/31/my-interview-job-offer-from-google
A success story. He even got the following question:
"You are at a party with a friend and 10 people are present including you and the friend. Your friend makes you a wager that for every person you find that has the same birthday as you, you get $1; for every person he finds that does not have the same birthday as you, he gets $2. Would you accept the wager?"

"The answer has to do with the number of days in the year and the probability the person’s birthday falls on the same day as mine (without replacement). I eventually solved it, but it took time learning how to apply probability with no replacement."

http://www.zachcasper.com/2005/10/google-phone-interview.html
Looks like Google won the round in this interview process, but he does write about specific questions he was asked.

Here are a few blogs written by well known Googlers. Company culture, technical insights, and just plain-old good reading can be found here:

http://niniane.blogspot.com/
This was one of the first blogs I read written by an actual Googler. From what I understand she was part of the Google Desktop team. For the most part the blog isn't even about Google, but its pretty interesting nonetheless. Scan through the posts and you'll find random tidbits about the company. She is the author of a pretty popular write up on Preparing For a Software Engineering Interview

http://steve.yegge.googlepages.com/five-essential-phone-screen-questions
An ex-Amazon employee turned Googler. I absolutely would not want to interview with him, but take a read of this and be challenged. His actual blog can be found here - there's nice account of the experience of a new hire.

http://paultyma.blogspot.com/
I had provided a link of this post before, but here it is again. This guy has a great entry called "How To Pass a Silicon Valley Software Engineering Interview".

Here are a few formal articles that were written that might help

A look into the Google job algorithm

An interview with a staffing director at Google.

These aren't a definitive list of links or blogs for sure, but its a decent start and some good reading. If you have any links you think are great and I missed, let me know, I can post it up.

UPDATE:

Here is a really comprehensive look at official Google blogs and Google employee blogs: http://www.essistme.com/2007/05/16/list-of-official-google-blogs-some-unofficial/

Wednesday, May 16, 2007

Job Interview 2.0

I recently read an article about the "Riddle Me" interview here. Its a short piece on using riddles and brain teasers as part of the screening process in an interview. One would think that this strategy is a bit out-dated to back in the Microsoft and early Google days but apparently these questions are still asked. I think brain teasers are bit pretentious -- why not make the interviewee solve a software related problem? These are real world scenarios. Although algorithm and data structure questions are extremely hard, they are concrete questions compared to the brain teasers. Companies will employ all sorts of ways to hire on the right person -- I even took an IQ test before. If you are looking to do a technical interview be aware that the brain teasers are still alive and kicking...

Here are a couple of those brain teaser that have come from actual companies within the last year:

3 rectangles of equal size, one of the slide and two adjacent. What is the ratio of the x and y of the whole rectangle?

Having 10 stacks of coins with 10 coins each weighing 10 grams each, how would you locate the stack that could potentially have 9 grams of coins each?

Given two locks and keys on each side and a briefcase to carry sensitive information across, how would you pass the information without the confidential information being infiltrated?

Given 8 balls, and one ball is lower weight that the other, and the other seven are of equal weight. I many times would you have to weigh the balls in order to discover the defective ball?

If you have a six-shooter and fill the six-shooter with two bullets right next to each other and then, spin it randomly and then proceed to shoot at yourself (Russian roulette style), and the bullet doesn't go off, would it be better to shoot yourself again or spin the barrel again?

If you have a gold bar with 6 divides where the cuts can be made and your gardener wants to be paid for every day of the week for 7 days, and you are limited to cut at only two times, how would you cut it in away that you can effectively pay the gardener every day of the week?

If you meet a friend that you haven't seen in a long time and he has a little kid with him. He says that he has two kids in total and the kid with him is a girl. What is the probability that both of his kids is a girl?

Wednesday, May 9, 2007

Google Irvine Open House

There's that one saying: 'If you can't beat 'em, join em'. Well, I knew I certainly couldn't beat 'em and as you know I couldn't join 'em, so what was I left to do? At least try to get some free food out of them, right? A few weeks ago a friend at Google invited me to an open house at the Irvine campus. It would basically be an information and Q&A session about what's going on that office. He also said that it would be a chance to network and most importantly: eat free food. Well I was still bummed about the whole situation, I mean, what kind of networking could I possibly achieve? 'Hi, I failed the interview, but...." well it would end there, but he told me to think about it, and I did. Yeah, I was disappointed, but that still doesn't change anything about Google. I'd probably want to go to it even if I hadn't interviewed of course just to check out the offices.

So after work I drove out to the Irvine campus and needless to say, the facilities were keeping with the standards which we know Google holds. Irvine itself is a well-kept, upper class area so I knew the offices would be really nice. Once inside, I was promptly directed to the cafeteria where indeed, gourmet caliber food was being served. There was a delicious assortment of finger foods, kabobs and beverages set beside an open area where a large mass of people were gathered talking, eating and networking. After having a few things to eat and enjoying the primary color coated surroundings, a few speakers came up to speak. The first speaker gave a short presentation about Google at a high level, including its services, acquisitions and main business. The second speaker was a product manager at the Irvine office. It seemed like an interesting role as he described product management at Google as similar to the entrepreneur role. Lastly a Google Engineering Director spoke. He spoke a lot about the real fascinating aspects of the Google organization including how they employ 'Anti-Strategies'. I think this is kind of a play on the 'anti-patterns' term we have in engineering which describes how we derive solutions to problems which themselves become problems. Google seems to confound a lot of analysts with their business practices because they go against normal business principles. For example, he shared how they decided to reduce the amount of advertising Google was showing but that in turn seemed to increase revenue. Lots of seemingly backwards thinking actually led the company forward.

Once the talks were done a couple of my Googler friends took me upstairs to their offices where I could be privy to the actual office space. Lots of money was poured into the engineers which is something you really don't see anymore. Walkways were lined with scooters, every junction had a snack bar and drink fridge. Open areas with couches dotted the floor providing a relaxed atmosphere. A brand new Wii was out as well as an awesome x-mame arcade station. The cubes/offices were decently spacious and one thing that I noticed was that every desk had either a 30-inch display or two 24-inch displays, a linux box and a macpro. This place was really awesome to say the least.

Overall, it was a really enjoyable night, but at the same time kind of bittersweet because of the opportunity that fell through. As I talked to the Googlers, I was still encouraged though as they said I should prepare some more and try again in the future. Apparently it isn't uncommon for some Googlers to have not passed the first time around. That was pretty good to hear. Well as one door closed, I will definitely be keeping my eye open for the next one to open.

My top ten tips that may help you for the Google Interview

Below is a short list of tips and thoughts regarding the Google interview process that might be helpful to anyone interested in interviewing with Google -- but (as LeVar Burton would say) you don't have to take my word for it -- I didn't get the job.

  1. Know Someone (Networking): Like I had mentioned, I believe the statistic was that 1 million resumes were sent to Google but only 5000 people were actually hired last year. From that perspective, that means if you apply to Google, you have a .5% chance of actually getting hired. If you know a Googler who can refer you, the recruiters will most likely consider you before they consider a random applicant. Going through a referral will get you noticed quickly. From the time I was referred to the time I was contacted by the recruiter was a matter of days.
  2. Dont let this be your first interview in a long time: I'm copying this word of advice from a current Google employee who wrote a blog entry about interviewing and I can definitely agree. He said do not interview with your dream job first. If you are a bit rusty, you may have trouble interviewing at your 'dream job'. I think that was one mistake I made. I think after interviewing with Google I became a bit more refined in how I handle myself, what my career goals are, how I talk. Interview with other companies, let your thoughts, opinions and skills really sink in and then have a go at your dream job.
  3. Hammer down on the fundamentals: The recruiter will probably tell you this, that at Google algorithms and data structures are the 'bread and butter'. The interview will most certainly center around problem solving using algorithms and data structures. Given certain conditions, ie memory, environment, language, etc, what would be the most efficient way to solve a problem. Know your basics and be prepare for the twist. Old text books and even the AP Computer Science book are actually a great resource because they do just that. The chapter teaches about the topic but the question section always puts a tweak and presents a unique problem.
  4. Paper and pencil coding: As I prepared for the interview, I tried to code out problems on paper and pencil to mimic the actual interview process. I soon realized how much I relied on the IDE to help me code. There are so many things the IDE does for the coder that I was just kind of mentally screening out such as certain syntax or structure. Do your best to code using paper and pencil because that's definitely what I experienced.
  5. Talk a lot: I don't mean be annoying and just babbling, but speak your mind as you grind down into an algorithm or a problem. This shows a thought process and gives clues to the interviewer about your skills and personality. I believe the interview is meant to be somewhat of an exchange between the interviewer and interviewee. By keeping open, intelligent dialog, I think I was able to get through my questions much easier and even get help from the interviewer.
  6. Be prepared for a long process: I can't say this for sure (since my interview process ended rather shortly) but from what I understand and what I was told, the process lasts more than a month. With the myriad of interviews and reviews, the length of time is no surprise. Fortunately it just gives the interviewee more time to study and sharpen up.
  7. The interview process isn't always an accurate representation of a person: After having gone through what I have, I've been able to at appreciate what Google is trying to do. They are trying to produce the most effective interviewing process laden with tough questions meant to bring in the best of candidates. It seems to work, but at the same time an interview may not best represent a candidate. I know of interviewees who are bright, capable, technically strong and interpersonally gifted who did not get the job, but this just shows the arbitrary nature of interviews, which brings me to my next point.
  8. A bad hire is worst then screening out a good candidate: Anyone who has ever worked knows just how much a bad hire sucks the life out of an organization. A phone screen is named as such to show that it is meant to 'screen' out people who aren't a good fit. This interview process is so rigorous that bad hires presumably do not make it through. Unfortunately at the same time, the rigorousness will screen out some great people, but the ones who make it through all have a strong chance at actually being great employees.
  9. Contract to hire is good: From what I understand, a lot of the new hires are being brought on as a contractor before being hired full time. This is a really good idea in keeping the integrity within the organization's engineers. The probational period is just another screen to make sure candidates really do meet the needs and requirements of the company. If you make it far through the interview process, this may happen to you.
  10. Have Fun: So I didn't get the job, I never got to experience the free world class dining, the trip to Mountain View, or the subsidized massages, but through it all I'd say it was a pretty wild yet short ride which I enjoyed. If you are a software engineer and you are applying to Google, there must be a part of you which is genuinely interested in challenges and problems. There must be a part of you that gets geeky over these kinds of things. Go into an interview and do your best to enjoy and have fun in the moment. If you get it then great. If you don't then hopefully you gained something from it and enjoyed the thrill whatever the outcome -- I did.

Monday, May 7, 2007

status:Gwned - my Google Interview Experience

I was a man of 20, 21 again. I had somehow tapped into this previously unknown vigor within me. I felt like I was in college again, my mind buzzing, steeped in that final exams mentality. I skipped meals, stayed home on Fridays, woke up early on Saturdays. I hit the coffee shops, the book stores, and read sections of my old dusty textbooks before I went to bed. Why would I be doing this? It could mean only one thing: my interview with Google was coming soon - and to a software guy it was a dream come true, but also a terrible nightmare ready to happen. The bliss of working with the number one technology company in the world was also mixed with the terror of that infamous interview process. While most people are used to 1 or 2 interviews with a company, the Google interview (which I will now refer to as "The Gauntlet") consists of difficult phone screens and campus interviews including one at the fearful Mountain View office if you get that far.

My career definitely isn't that long (just a few years), but I've experienced a decent breadth of technology and work culture so far. From the rigid, process driven aerospace industry, to the fast paced world of consulting, to the laid back, organic atmosphere of a startup-- I've experienced a nice mix. As I was thinking about looking for something new, an opportunity for an interview came up. In the last 1-2 years there was somewhat of an exodus of people on my program moving on and getting hired at Google in Irvine. As I began pondering things, I realized two career factors have become really important for me:

People: I'm a software guy, so engineers are the people I gravitate to. There is definitely a camaraderie among us. I respect a really strong software person who can solve problems, design great solutions, and stay on top of ever changing technology. Google seemingly was this big software house with those kind of bright technologically minded people. It seemed to be organized for the engineer and around the engineer.

Products: I think in human nature we all have this desire to create, to put something masterfully together for the world to see and use, and for me it would be software. As an engineer, my main focus is building products for the user that is on the outside, usable, pleasing to the eyes and satisfying to use, and on the inside, well engineered, efficient, maintainable. Google, with its myriad of services and software has proven to be on the forefront of software products.

There was so much buzz about this company, its culture, its perks, its technology, that working there at this point would almost be like career nirvana. So I asked for the referral and sent in my resume. A few days later I received an e-mail from a recruiter with a questionnaire with about 10 or so general work experience questions. These questions seemed to flesh out a potential hire more than what a resume could do. I took a night to recount some of my work and project history and various other info and sent it back. With the questionnaire, the recruiter said she could direct me to the appropriate interviewer. We talked on the phone for a short bit and explained what the interview process would entail. She said it would start off with a phone screen, or multiple phone screens from which the interviewer would glean 'data points' which to me seemed like a reference to the 'hiring algorithm' that I had read about before. If the phone screens went well, I would go out to the actual campus for a day of interviews and finally if I managed to stay alive through that, I'd go to Mountain View for the last leg of 'The Gauntlet'. We set a date for the first interview and from that point on my whole mode was changed. I began reacquainting myself with the old fundamentals - of trees and tables, of searching and all that other stuff I thought I'd left behind in college. The algorithms books, the data structure books, they all brought back memories. Who knew I'd be breaking out that old AP Computer Science book. For the most part, things were pretty familiar, though I started to freak out during the "dynamic programming" section. I was hoping I wouldn't be asked that. At the coffee shops it was non-stop studying and note taking, my ipod even had a 'study mix' playlist. At home I'd be at the computer surfing to the ends of the internet, queueing up blogs and articles about other people's experiences with a Google interview. A really difficult challenge was on its way so I wanted to be as prepared as I could.

The day of the phone screen was pretty nerve-wracking. I came into work hardly able to concentrate, and by 11:30AM I went back to my place to prepare for the 1PM Gauntlet. After a quick lunch, I pulled out a few blank sheets of paper, a trusty pen and laid them out on my coffee table. I brought out my phone charger as well so that my phone wouldn't die in this 45 minute death march. I anxiously flipped through the channels on my TV until I got the call. The interview started out really casual. The interviewer gave me a short description of what to expect for the next 45 minutes and seemed to make sure I was comfortable before we began. He said he'd give me about 40 minutes of technical interviewing and would leave 5 minutes for me to ask him questions in the end. Before the technical grilling began, he did ask me one question though, which was kind of interesting. He asked if I wanted a 'systems question' or an 'algorithm' question. I interpreted it as him asking if I wanted a 'real world question' or more of a low level 'algorithmic/data structures' question. At this point I had been cramming in a lot of algorithmic so I asked for an algorthmic question. I will not go into detail of what questions he asked me exactly, but the first question was related to a data structure which he defined. He started off small, asking a few easy questions and then he pushed the envelope asking a straight up coding question centered around this structure. During the interview I tried my best to keep talking and convey any thoughts or ideas going through my head out loud. This was helpful because it gave the interviewer an idea of my thought process and gave him a chance to steer me in the right direction. So we were able to get through the first 'algorithm' question and after that he threw out another question. This question was a bit more of a real world question pertaining to error detection codes. It took me me some time to jog through all of my ideas and finally come to my solution. After that he threw in a slight twist to the problem, which I then answered and then he asked me to walk through some of my reasoning of why the error detection algorithm worked and when it wouldn't work. The interview concluded with a short time for me to ask him some questions about Google and shortly after I allowed myself the chance to rest my head. I went back to work feeling 'GWNED', my shorthand for being 'OWNED' by Google and its interview process. I felt I took too long to answer my questions, that I lacked confidence and ease while talking, that my interviewer helped me too much through the questions, that I would have to be real lucky to get word back. The next few days were pretty nerve-wracking too, because that single e-mail would determine if I could go on or not. For a few days, every time my browser title bar read 'Gmail inbox (1)', a burst of adrenaline rushed through my blood and I would quickly check it, only to receive some random junk mail from a friend. Thankfully, about three days later I received another email from the recruiter asking me when I could hold the second phone screen. The relief was again mixed with nervousness as I knew what was coming, but I definitely felt good that I (in video game terms) got a 1 up.

So I milked out a few extra days for my next phone screen, since I wanted to do some more studying. I was back in that mode again, hitting the coffee shops, banging through problems, coding up solutions in my moleskine. I knew the Gauntlet was not going to get any easier so I was preparing myself. The next interview had a different flavor from the first one. While the first one centered around 2 pretty big problems, this interview was more of a potpourri. I was asked a few personal non-technical questions, such as 'What could I bring to Google' (I don't think that was exactly it, but you get the idea). He glanced through my resume and asked a few short answer Java questions. He saw that I had done some web services and he asked a really fundamental question in that arena. After that he asked a question about HTTP and then went on to a question about memory allocation. He then moved to asking about process execution. After this series of questions we went into problem solving questions starting with sorting, on a basic level and then with the added twist. The final question was a 'real world' question which I really struggled with. After walking through this one and fumbling through some faulty solutions, I had made a start which the interviewer seemed satisfied with but at this point my interview was already at the 50 minute mark and was put to a close. I left this interview feeling like I got my butt kicked. So again the waiting game started anew. When my browser said 'Gmail Inbox (1)' I would freak out for a moment, but after a week I realized it was probably not going to happen. After two weeks I completely lost all hope. Shortly after the 2 or 3 week mark I received an e-mail from the recruiter saying that they could not find a strong match for me. Of course I was disappointed, but in the end I knew that it wasn't meant to be. I did ask my recruiter that as my career progresses and I pick up new skills, when would be a good time to re-apply and she graciously told me that it would be good to wait between 6 months to a year. The Google interview was a wild ride while it lasted: I fought the good fight but unfortunately I joined rank with the rest of the 995,000 (supposedly 1,000,000 resumes were sent to Google but only 5,000 were actually hired last year).