Wednesday, March 12, 2008

Get that job at Google

I've been meaning to write up some tips on interviewing at Google for a good long time now. I keep putting it off, though, because it's going to make you mad. Probably. For some statistical definition of "you", it's very likely to upset you.

Why? Because... well, here, I wrote a little ditty about it:

Hey man, I don't know that stuff
Stevey's talking aboooooout
If my boss thinks it's important
I'm gonna get fiiiiiiiiiired
Oooh yeah baaaby baaaay-beeeeee....

I didn't realize this was such a typical reaction back when I first started writing about interviewing, way back at ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r companies. Boy-o-howdy did I find out in a hurry.

See, it goes like this:

Me: blah blah blah, I like asking question X in interviews, blah blah blah...

You: Question X? Oh man, I haven't heard about X since college! I've never needed it for my job! He asks that in interviews? But that means someone out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re thinks it's important to know, and, and... I don't know it! If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y detect my ignorance, not only will I be summarily fired for incompetence without so much as a thank-you, I will also be unemployable by people who ask question X! If people listen to Stevey, that will be everyone! I will become homeless and destitute! For not knowing something I've never needed before! This is horrible! I would attack X itself, except that I do not want to pick up a book and figure enough out about it to discredit it. Clearly I must yell a lot about how stupid Stevey is so that nobody will listen to him!

Me: So in conclusion, blah blah... huh? Did you say "fired"? "Destitute?" What are you talking about?

You: Aaaaaaauuuggh!!! *stab* *stab* *stab*

Me: That's it. I'm never talking about interviewing again.

It doesn't matter what X is, eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. It's arbitrary. I could say: "I really enjoy asking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 candidate (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir name) in interviews", and people would still freak out, on account of insecurity about eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r interviewing in general or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir knowledge of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own name, hopefully cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former.

But THEN, time passes, and interview candidates come and go, and we always wind up saying: "Gosh, we sure wish that obviously smart person had prepared a little better for his or her interviews. Is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re any way we can help future candidates out with some tips?"

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n nobody actually does anything, because we're all afraid of getting stabbed violently by People Who Don't Know X.

I considered giving out a set of tips in which I actually use variable names like X, racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than real subjects, but decided that in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 resultant vacuum, everyone would get upset. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise that approach seemed pretty good, as long as I published under a pseudonym.

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end, people really need cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tips, regardless of how many feelings get hurt along cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way. So racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than skirt around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issues, I'm going to give you a few mandatory substitutions for X along with a fair amount of general interview-prep information.

Caveats and Disclaimers

This blog is not endorsed by Google. Google doesn't know I'm publishing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tips. It's just between you and me, OK? Don't tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m I prepped you. Just go kick ass on your interviews and we'll be square.

I'm only talking about general software engineering positions, and interviews for those positions.

These tips are actually generic; cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's nothing specific to Google vs. any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r software company. I could have been writing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tips about my first software job 20 years ago. That implies that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tips are also timeless, at least for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 span of our careers.

These tips obviously won't get you a job on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own. My hope is that by following cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m you will perform your very best during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviews.

Oh, and um, why Google?

Oho! Why Google, you ask? Well let's just have that dialog right up front, shall we?

You: Should I work at Google? Is it all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y say it is, and more? Will I be serenely happy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re? Should I apply immediately?

Me: Yes.

You: To which ques... wait, what do you mean by "Yes?" I didn't even say who I am!

Me: Dude, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer is Yes. (You may be a woman, but I'm still calling you Dude.)

You: But... but... I am paralyzed by inertia! And I feel a certain comfort level at my current company, or at least I have become relatively inured to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discomfort. I know people here and nobody at Google! I would have to learn Google's build system and technology and stuff! I have no credibility, no reputation cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re – I would have to start over virtually from scratch! I waited too long, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's no upside! I'm afraaaaaaid!

Me: DUDE. The answer is Yes already, OK? It's an invariant. Everyone else who came to Google was in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exact same position as you are, modulo a handful of famous people with beards that put Gandalf's to shame, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're a very tiny minority. Everyone who applied had cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same reasons for not applying as you do. And everyone here says: "GOSH, I SURE AM HAPPY I CAME HERE!" So just apply already. But prep first.

You: But what if I get a mistrial? I might be smart and qualified, but for some random reason I may do poorly in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviews and not get an offer! That would be a huge blow to my ego! I would racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r pass up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 opportunity altogecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than have a chance of failure!

Me: Yeah, that's at least partly true. Heck, I kinda didn't make it in on my first attempt, but I begged like a street dog until cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y gave me a second round of interviews. I caught cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in a weak moment. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second time around, I prepared, and did much better.

The thing is, Google has a well-known false negative rate, which means we sometimes turn away qualified people, because that's considered better than sometimes hiring unqualified people. This is actually an industry-wide thing, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dial gets turned differently at different companies. At Google cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 false-negative rate is pretty high. I don't know what it is, but I do know a lot of smart, qualified people who've not made it through our interviews. It's a bummer.

But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 really important takeaway is this: if you don't get an offer, you may still be qualified to work here. So it needn't be a blow to your ego at all!

As far as anyone I know can tell, false negatives are completely random, and are unrelated to your skills or qualifications. They can happen from a variety of factors, including but not limited to:

  1. you're having an off day
  2. one or more of your interviewers is having an off day
  3. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re were communication issues invisible to you and/or one or more of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewers
  4. you got unlucky and got an Interview Anti-Loop
Oh no, not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Interview Anti-Loop!

Yes, I'm afraid you have to worry about this.

What is it, you ask? Well, back when I was at Amazon, we did (and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y undoubtedly still do) a LOT of soul-searching about this exact problem. We eventually concluded that every single employee E at Amazon has at least one "Interview Anti-Loop": a set of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r employees S who would not hire E. The root cause is important for you to understand when you're going into interviews, so I'll tell you a little about what I've found over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years.

First, you can't tell interviewers what's important. Not at any company. Not unless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're specifically asking you for advice. You have a very narrow window of perhaps one year after an engineer graduates from college to inculcate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 art of interviewing, after which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 window closes and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y believe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are a "good interviewer" and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don't need to change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir questions, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir question styles, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir interviewing style, or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir feedback style, ever again.

It's a problem. But I've had my hand bitten enough times that I just don't try anymore.

Second problem: every "experienced" interviewer has a set of pet subjects and possibly specific questions that he or she feels is an accurate gauge of a candidate's abilities. The question sets for any two interviewers can be widely different and even entirely non-overlapping.

A classic example found everywhere is: Interviewer A always asks about C++ trivia, filesystems, network protocols and discrete math. Interviewer B always asks about Java trivia, design patterns, unit testing, web frameworks, and software project management. For any given candidate with both A and B on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview loop, A and B are likely to give very different votes. A and B would probably not even hire each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, given a chance, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y both happened to go through interviewer C, who asked cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m both about data structures, unix utilities, and processes versus threads, and A and B both happened to squeak by.

That's almost always what happens when you get an offer from a tech company. You just happened to squeak by. Because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 inherently flawed nature of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewing process, it's highly likely that someone on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loop will be unimpressed with you, even if you are Alan Turing. Especially if you're Alan Turing, in fact, since it means you obviously don't know C++.

The bottom line is, if you go to an interview at any software company, you should plan for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contingency that you might get genuinely unlucky, and wind up with one or more people from your Interview Anti-Loop on your interview loop. If this happens, you will struggle, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n be told that you were not a fit at this time, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you will feel bad. Just as long as you don't feel meta-bad, everything is OK. You should feel good that you feel bad after this happens, because hey, it means you're human.

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you should wait 6-12 months and re-apply. That's pretty much cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best solution we (or anyone else I know of) could come up with for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 false-negative problem. We wipe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slate clean and start over again. There are lots of people here who got in on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir second or third attempt, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're kicking butt.

You can too.

OK, I feel better about potentially not getting hired

Good! So let's get on to those tips, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n.

If you've been following along very closely, you'll have realized that I'm interviewer D. Meaning that my personal set of pet questions and topics is just my own, and it's no better or worse than anyone else's. So I can't tell you what it is, no matter how much I'd like to, because I'll offend interviewers A through X who have slightly different working sets.

Instead, I want to prep you for some general topics that I believe are shared by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 majority of tech interviewers at Google-like companies. Roughly speaking, this means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 company builds a lot of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own software and does a lot of distributed computing. There are ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r tech-company footprints, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 opposite end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 spectrum being companies that outsource everything to consultants and try to use as much third-party software as possible. My tips will be useful only to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extent that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 company resembles Google.

So you might as well make it Google, eh?

First, let's talk about non-technical prep.

The Warm-Up

Nobody goes into a boxing match cold. Lesson: you should bring your boxing gloves to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview. No, wait, sorry, I mean: warm up beforehand!

How do you warm up? Basically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is short-term and long-term warming up, and you should do both.

Long-term warming up means: study and practice for a week or two before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview. You want your mind to be in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 general "mode" of problem solving on whiteboards. If you can do it on a whiteboard, every ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r medium (laptop, shared network document, whatever) is a cakewalk. So plan for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whiteboard.

Short-term warming up means: get lots of rest cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 night before, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n do intense, fast-paced warm-ups cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 morning of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview.

The two best long-term warm-ups I know of are:

1) Study a data-structures and algorithms book. Why? Because it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most likely to help you beef up on problem identification. Many interviewers are happy when you understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 broad class of question cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're asking without explanation. For instance, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y ask you about coloring U.S. states in different colors, you get major bonus points if you recognize it as a graph-coloring problem, even if you don't actually remember exactly how graph-coloring works.

And if you do remember how it works, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you can probably whip through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer pretty quickly. So your best bet, interview-prep wise, is to practice cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 art of recognizing that certain problem classes are best solved with certain algorithms and data structures.

My absolute favorite for this kind of interview preparation is Steven Skiena's The Algorithm Design Manual. More than any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r book it helped me understand just how astonishingly commonplace (and important) graph problems are – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should be part of every working programmer's toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gold mine is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second half of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a great way to learn how to identify hundreds of problem types.

Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r interviewers I know recommend Introduction to Algorithms. It's a true classic and an invaluable resource, but it will probably take you more than 2 weeks to get through it. But if you want to come into your interviews prepped, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n consider deferring your application until you've made your way through that book.

2) Have a friend interview you. The friend should ask you a random interview question, and you should go write it on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 board. You should keep going until it is complete, no matter how tired or lazy you feel. Do this as much as you can possibly tolerate.

I didn't do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se two types of preparation before my first Google interview, and I was absolutely shocked at how bad at whiteboard coding I had become since I had last interviewed seven years prior. It's hard! And I also had forgotten a bunch of algorithms and data structures that I used to know, or at least had heard of.

Going through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se exercises for a week prepped me mightily for my second round of Google interviews, and I did way, way better. It made all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference.

As for short-term preparation, all you can really do is make sure you are as alert and warmed up as possible. Don't go in cold. Solve a few problems and read through your study books. Drink some coffee: it actually helps you think faster, believe it or not. Make sure you spend at least an hour practicing immediately before you walk into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview. Treat it like a sports game or a music recital, or heck, an exam: if you go in warmed up you'll give your best performance.

Mental Prep

So! You're a hotshot programmer with a long list of accomplishments. Time to forget about all that and focus on interview survival.

You should go in humble, open-minded, and focused.

If you come across as arrogant, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n people will question whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y want to work with you. The best way to appear arrogant is to question cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 validity of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer's question – it really ticks cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m off, as I pointed out earlier on. Remember how I said you can't tell an interviewer how to interview? Well, that's especially true if you're a candidate.

So don't ask: "gosh, are algorithms really all that important? do you ever need to do that kind of thing in real life? I've never had to do that kind of stuff." You'll just get rejected, so don't say that kind of thing. Treat every question as legitimate, even if you are frustrated that you don't know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer.

Feel free to ask for help or hints if you're stuck. Some interviewers take points off for that, but occasionally it will get you past some hurdle and give you a good performance on what would have ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise been a horrible stony half-hour silence.

Don't say "choo choo choo" when you're "thinking".

Don't try to change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject and answer a different question. Don't try to divert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer from asking you a question by telling war stories. Don't try to bluff your interviewer. You should focus on each problem cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're giving you and make your best effort to answer it fully.

Some interviewers will not ask you to write code, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will expect you to start writing code on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whiteboard at some point during your answer. They will give you hints but won't necessarily come right out and say: "I want you to write some code on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 board now." If in doubt, you should ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would like to see code.

Interviewers have vastly different expectations about code. I personally don't care about syntax (unless you write something that could obviously never work in any programming language, at which point I will dive in and verify that you are not, in fact, a circus clown and that it was an honest mistake). But some interviewers are really picky about syntax, and some will even silently mark you down for missing a semicolon or a curly brace, without telling you. I think of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se interviewers as – well, it's a technical term that rhymes with "bass soles", but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y think of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves as brilliant technical evaluators, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's no way to tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise.

So ask. Ask if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y care about syntax, and if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do, try to get it right. Look over your code carefully from different angles and distances. Pretend it's someone else's code and you're tasked with finding bugs in it. You'd be amazed at what you can miss when you're standing 2 feet from a whiteboard with an interviewer staring at your shoulder blades.

It's OK (and highly encouraged) to ask a few clarifying questions, and occasionally verify with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer that you're on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 track cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y want you to be on. Some interviewers will mark you down if you just jump up and start coding, even if you get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code right. They'll say you didn't think carefully first, and you're one of those "let's not do any design" type cowboys. So even if you think you know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem, ask some questions and talk about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 approach you'll take a little before diving in.

On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flip side, don't take too long before actually solving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem, or some interviewers will give you a delay-of-game penalty. Try to move (and write) quickly, since often interviewers want to get through more than one question during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview, and if you solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first one too slowly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'll be out of time. They'll mark you down because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y couldn't get a full picture of your skills. The benefit of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 doubt is rarely given in interviewing.

One last non-technical tip: bring your own whiteboard dry-erase markers. They sell pencil-thin ones at office supply stores, whereas most companies (including Google) tend to stock cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fat kind. The thin ones turn your whiteboard from a 480i standard-definition tube into a 58-inch 1080p HD plasma screen. You need all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 help you can get, and free whiteboard space is a real blessing.

You should also practice whiteboard space-management skills, such as not starting on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right and coding down into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lower-right corner in Teeny Unreadable Font. Your interviewer will not be impressed. Amusingly, although it always irks me when people do this, I did it during my interviews, too. Just be aware of it!

Oh, and don't let cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 marker dry out while you're standing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re waving it. I'm tellin' ya: you want minimal distractions during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview, and that one is surprisingly common.

OK, that should be good for non-tech tips. On to X, for some value of X! Don't stab me!

Tech Prep Tips

The best tip is: go get a computer science degree. The more computer science you have, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 better. You don't have to have a CS degree, but it helps. It doesn't have to be an advanced degree, but that helps too.

However, you're probably thinking of applying to Google a little sooner than 2 to 8 years from now, so here are some shorter-term tips for you.

Algorithm Complexity: you need to know Big-O. It's a must. If you struggle with basic big-O complexity analysis, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you are almost guaranteed not to get hired. It's, like, one chapter in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning of one cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory of computation book, so just go read it. You can do it.

Sorting: know how to sort. Don't do bubble-sort. You should know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details of at least one n*log(n) sorting algorithm, preferably two (say, quicksort and merge sort). Merge sort can be highly useful in situations where quicksort is impractical, so take a look at it.

For God's sake, don't try sorting a linked list during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview.

Hashtables: hashtables are arguably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 single most important data structure known to mankind. You absolutely have to know how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y work. Again, it's like one chapter in one data structures book, so just go read about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. You should be able to implement one using only arrays in your favorite language, in about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 space of one interview.

Trees: you should know about trees. I'm tellin' ya: this is basic stuff, and it's embarrassing to bring it up, but some of you out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re don't know basic tree construction, traversal and manipulation algorithms. You should be familiar with binary trees, n-ary trees, and trie-trees at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very very least. Trees are probably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best source of practice problems for your long-term warmup exercises.

You should be familiar with at least one flavor of balanced binary tree, whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r it's a red/black tree, a splay tree or an AVL tree. You should actually know how it's implemented.

You should know about tree traversal algorithms: BFS and DFS, and know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference between inorder, postorder and preorder.

You might not use trees much day-to-day, but if so, it's because you're avoiding tree problems. You won't need to do that anymore once you know how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y work. Study up!

Graphs

Graphs are, like, really really important. More than you think. Even if you already think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're important, it's probably more than you think.

There are three basic ways to represent a graph in memory (objects and pointers, matrix, and adjacency list), and you should familiarize yourself with each representation and its pros and cons.

You should know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basic graph traversal algorithms: breadth-first search and depth-first search. You should know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir computational complexity, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir tradeoffs, and how to implement cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in real code.

You should try to study up on fancier algorithms, such as Dijkstra and A*, if you get a chance. They're really great for just about anything, from game programming to distributed computing to you name it. You should know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

Whenever someone gives you a problem, think graphs. They are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most fundamental and flexible way of representing any kind of a relationship, so it's about a 50-50 shot that any interesting design problem has a graph involved in it. Make absolutely sure you can't think of a way to solve it using graphs before moving on to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r solution types. This tip is important!

Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r data structures

You should study up on as many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r data structures and algorithms as you can fit in that big noggin of yours. You should especially know about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most famous classes of NP-complete problems, such as traveling salesman and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 knapsack problem, and be able to recognize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m when an interviewer asks you cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in disguise.

You should find out what NP-complete means.

Basically, hit that data structures book hard, and try to retain as much of it as you can, and you can't go wrong.

Math

Some interviewers ask basic discrete math questions. This is more prevalent at Google than at ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r places I've been, and I consider it a Good Thing, even though I'm not particularly good at discrete math. We're surrounded by counting problems, probability problems, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Discrete Math 101 situations, and those innumerate among us blicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ly hack around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m without knowing what we're doing.

Don't get mad if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer asks math questions. Do your best. Your best will be a heck of a lot better if you spend some time before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview refreshing your memory on (or teaching yourself) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 essentials of combinatorics and probability. You should be familiar with n-choose-k problems and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir ilk – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 better.

I know, I know, you're short on time. But this tip can really help make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference between a "we're not sure" and a "let's hire her". And it's actually not all that bad – discrete math doesn't use much of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 high-school math you studied and forgot. It starts back with elementary-school math and builds up from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, so you can probably pick up what you need for interviews in a couple of days of intense study.

Sadly, I don't have a good recommendation for a Discrete Math book, so if you do, please mention it in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments. Thanks.

Operating Systems

This is just a plug, from me, for you to know about processes, threads and concurrency issues. A lot of interviewers ask about that stuff, and it's pretty fundamental, so you should know it. Know about locks and mutexes and semaphores and monitors and how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y work. Know about deadlock and livelock and how to avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Know what resources a processes needs, and a thread needs, and how context switching works, and how it's initiated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 operating system and underlying hardware. Know a little about scheduling. The world is rapidly moving towards multi-core, and you'll be a dinosaur in a real hurry if you don't understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fundamentals of "modern" (which is to say, "kinda broken") concurrency constructs.

The best, most practical book I've ever personally read on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject is Doug Lea's Concurrent Programming in Java. It got me cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most bang per page. There are obviously lots of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r books on concurrency. I'd avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 academic ones and focus on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 practical stuff, since it's most likely to get asked in interviews.

Coding

You should know at least one programming language really well, and it should preferably be C++ or Java. C# is OK too, since it's pretty similar to Java. You will be expected to write some code in at least some of your interviews. You will be expected to know a fair amount of detail about your favorite programming language.

Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Stuff

Because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules I outlined above, it's still possible that you'll get Interviewer A, and none of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stuff you've studied from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tips will be directly useful (except being warmed up.) If so, just do your best. Worst case, you can always come back in 6-12 months, right? Might seem like a long time, but I assure you it will go by in a flash.

The stuff I've covered is actually mostly red-flags: stuff that really worries people if you don't know it. The discrete math is potentially optional, but somewhat risky if you don't know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first thing about it. Everything else I've mentioned you should know cold, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you'll at least be prepped for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 baseline interview level. It could be a lot harder than that, depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer, or it could be easy.

It just depends on how lucky you are. Are you feeling lucky? Then give it a try!

Send me your resume

I'll probably batch up any resume submissions people send me and submit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m weekly. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meantime, study up! You have a lot of warming up to do. Real-world work makes you rusty.

I hope this was helpful. Let cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 flames begin, etc. Yawn.

171 Comments:

Blogger Ben said...

Thanks, Steve; that was very helpful, although it would've been more helpful before I had a phonescreen with you guys last fall and totally brainlocked on a tree traversal. I kid you not, I could hear cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guy interviewing me impatiently tapping his fingers on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 table. He was just ITCHING to pencilwhip my ass out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. I don't interview all that well, even though I like to pretend I'm not a dumbass.

Big +1 on data structures and algorithm study, though. Not knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tree stuff made me go out and read algorithm/DS books, and it was very, VERY helpful. Plus I got to use it in an interview that I managed not to fail.

7:07 PM, March 12, 2008  
Blogger Silas Snider said...

The best discrete math book I've ever read has to be "Concrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics: A Foundation for Computer Science" by Graham, Knuth, and Patashnik

7:15 PM, March 12, 2008  
Blogger Greg said...

Great post. As a programmer who's hitting that "5 years out of college" threshold soon, some of those algorithms read less like everyday tools and more like old friends. Not good, not good, time to blow off cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dust and crack open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 books :)

7:28 PM, March 12, 2008  
Blogger garret said...

MIT OpenCourseWare has really good lecture notes on discrete math for CS. They served as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 textbook for a college class I took on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject.

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-042JMacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics-for-Computer-ScienceFall2002/Readings/index.htm

8:07 PM, March 12, 2008  
Blogger Shrutarshi Basu said...

Considering that I'm still in my freshman year, I'm going to try to make full use of all this....I'll let you know how it goes in about....say 5 years.

8:17 PM, March 12, 2008  
Blogger ~kristen said...

Thanks Steve. Great advice for a graduating senior. I got my first offer last week, but I never rule out Google!

A degree in CS is nice, but don't get discouraged by not having one. I get by just fine with my BS in Math and a pickup of basic CS class (plus some extra studying on my own). This is a great summary of everything a person should hit if you don't have that CS background.


For Combinatorics, try "Applied Combinatorics" (Roberts & Tessman). There are lots of examples and problems. It's a good book.

9:07 PM, March 12, 2008  
Blogger Alex Gartrell said...

http://www.cs.cmu.edu/~15251/

great lecture notes on discrete math on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wiki (for free).

9:26 PM, March 12, 2008  
Blogger Unknown said...

Thanks for a great set of interview tips Steve.

For those of you who might be considering taking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dive and applying at Google I have one more suggestion. Apply with us at Valve Software (you know, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 video game company? Half-Life? Counter-Strike? Steam?) too. You'll get put through a very tough interview process similar to Google's and it will be a great warmup for your Google interviews if nothing more. Best case you'll pass with flying colors and we'll convince you that not even Google could be cooler or more fun than Valve.

http://www.valvesoftware.com/jobs.html

9:30 PM, March 12, 2008  
Blogger orion said...

Oh man, where was this a week ago! I just went through a four-hour brain squeezer of an interview for a company here in Manhattan and felt very stupid a few times that I'd forgotten some fairly basic stuff. (In my defense, I've been at architecture-astronaut level of abstraction in a very niche field for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last year as a consultant, so while I can talk at length about how one particular problem domain is handled in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 financial industry I was brain-farting on things like what exactly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 servlet life cycle is.) Oh well, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very least an honest swing and miss would be respectable in my mind and it helped me figure out what my study list needs to be in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near term. Thank you very much for posting this list of pointers.

It looks like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's a bunch of good suggestions already for discrete maths texts both online and off, but here's a decent one (imho) that also has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 virtues of being widely available and dirt cheap (~$15), "Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics (Schaum's Outlines)" by Lipschutz and Lipson (2e). I feel almost bad about suggesting it next to a list of "real" texts (e.g. anything by Knuth) but if you're long out of school or sold your existing text and want dead tree it's a solution.

10:03 PM, March 12, 2008  
Blogger Dave Mackie said...

Great post (as always). I can't say I'm interested in working at Google since I live in North Carolina (although I see you guys have opened a data center here...), but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book suggestions alone make it a good blog post. I have a copy of "Applied Combinatorics" (which someone else recommended), and I concur that it's a great book on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject.

10:08 PM, March 12, 2008  
Blogger David Rupp said...

"Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics with Graph Theory", by E. Goodaire and M. Parmenter. ISBN: 0131679953.

10:39 PM, March 12, 2008  
Blogger Unknown said...

I did a phone interview @google about a year and a half ago just for giggles.

Gots no degree at all so I was curious how far I would get. And I love a challenge!

It was pretty brutal and it was just for an ops position. I didn't get it. First rejection of my career, which was pretty humbling!

My advice for an operations/IT gig, make sure you understand everything about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gig from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bottom up. I realized to my horror in mid-sentence that in all my career I had never really understood exactly how DNS was implemented. Fun!

Plus, don't ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer to repeat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves. Take notes or interview on a speakerphone in front of a whiteboard.

Anyway, great article. I'm going to go make sure I understand all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CS topics from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bottom up. That should make for a fun weekend!

P.S. I wouldn't work for Google anyway. The fact that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y advertise fraudulent services, like psychics, galls me. Especially given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir motto and supposed dedication to science.

11:28 PM, March 12, 2008  
Blogger Foodberg said...

"But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 really important takeaway is this: if you don't get an offer, you may still be qualified to work here. So it needn't be a blow to your ego at all!"

Bullshit. That's exactly what I would have said in between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 thoughts of what questions I clearly got wrong.

11:42 PM, March 12, 2008  
Blogger Michael R. Head said...

Dang... your post comes about a month and a half late! Oh well, I'm sure I'll interview again when I'm closer to graduation.

11:44 PM, March 12, 2008  
Blogger Foodberg said...

OK besides my 'bullshit' comment, this is great. The idea of bringing in your own whiteboard markers is smart. I'd give credit for preparedness. It wouldn't turn a mediocre candidate into a good candidate, but it would be a good soft-touch credit.

There are definitely parts of this list I don't know, and parts I just have forgotten, and while I'm not looking for a job, this could turn in to an excellent skills check-list.

11:53 PM, March 12, 2008  
Blogger Unknown said...

Great write up! I am a system administrator trying to get into programming and this gives me a great place to start.

12:02 AM, March 13, 2008  
Blogger Michael R. Head said...

BTW, I am looking for work (specifically in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NYC office), and my resume is online: http://www.core.binghamton.edu/~burner/new/res.html

*wink*

12:16 AM, March 13, 2008  
Blogger Michael R. Head said...

One follow up question, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re a particularly good way of dealing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "now, what questions do you have for us?" question?

12:23 AM, March 13, 2008  
Blogger CH Gowri Kumar said...

The Best Answers to Tough Interview Questions should be of some help for non-technical questions.

1:34 AM, March 13, 2008  
Blogger Unknown said...

Steve, you are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best, as always. I had my Google interviews about month ago - and I can't agree more on everything you mentioned (well, maybe except for thin pencil thing ;).

One little addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tech prep skills section would be dynamic programming - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tasks on this one appear to be quite common.

2:29 AM, March 13, 2008  
Blogger Barry Kelly said...

FWIW, Adjacency lists and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 object-oriented form for graph representation are effectively cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same. The problem with adjacency lists is you have to decide where to put cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lists. If you happen refer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lists from your nodes, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you end up at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OO form without necessarily distinguishing it.

2:48 AM, March 13, 2008  
Blogger dabd said...

On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject of Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics I would recommend "Concrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics" By Knuth, Graham and Patashnik.

3:54 AM, March 13, 2008  
Blogger Serge Khorun said...

Send me your resume
I'll probably batch up any resume submissions people send me and submit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m weekly.


OMG, Steve, how much do you plan to cut on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se referral bonuses?
If I get hired, can we share 50/50? :)

4:27 AM, March 13, 2008  
Blogger George Pikoulas said...

Very helpful post Steve thanx!

Also I am not sure why no one mentioned cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 free online educational resource form ArsDigita available at http://www.archive.org/details/arsdigita .

They span a wide range of CS topics.

5:07 AM, March 13, 2008  
Blogger Brian Di Croce said...

So that's it? I thought cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was more to software than 1's and 0's. What about knowing how to deal with requirements or change requests? What about knowing a few principles about software quality? What about knowing some foundations on software architecture? What about some knowledge of effective development processes?

You said that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se questions were more oriented to software engineers, but it sounds more oriented to computer scientists.

I'm not saying that algorithms and data structures aren't important, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's more to development than just knowing where and how to place a bunch of 1's and 0's.

But, as you have said, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many types of interviewers at tech companies. I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re should be two or more different types of interviewers per interview so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 candidate can get a better chance of answering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 questions (it might help to decrease cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 false negative results).

Thanks for writing this post, it was very informative.

--
www.BrianDiCroce.com

5:35 AM, March 13, 2008  
Blogger fogus said...

I did cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole phone screen (I should say screen x 3) and flyout to Mountain View with Google. It was a fantastic experience regardless of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that I was sent home without an offer in hand (nor did one come since). A few people that I have spoken with regarding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir experiences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Google interview process are quite bitter. That is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y tend to fall into two categories: 1) "How dare cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y ask those college course questions!" and 2) "Screw cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m I didn't want to work cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re anyway" (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are not xor). However, I was never bitter at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way things shook out, and viewed it as a motivating factor for making myself smarter. You better believe that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next time someone asks me to design a concurrent queuing system, I will knock cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir damn socks off. ;)

Great post.

-m

6:24 AM, March 13, 2008  
Blogger Conflixious said...

had you just posted this 2 weeks ago I might have not been rejected by Google. Very good programming tips. I wonder, can you get rejected by google and reapply again anyway? I mean is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re a timeout period I should wait for before reapplying?

7:47 AM, March 13, 2008  
Blogger RP said...

Thanks, Steve; that was very helpful.

I was recently interviewed with one of those goggle type companies and I was rejected after second round of phone interview.

The first one went ok and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second one went really well (at least from my perspective). The second interview was scheduled for 45mins but it went almost 1:15 mins. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 questions are exactly as you described in this blog. Alogorithms, operating systems and finally some coding in Java (yes, over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone. He wanted me to read out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code for him on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 phone).

After cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second phone interview I was pretty sure I will be called for an onsite interview :-) but to my surprise I got an email from recruiter saying "After serious consideration, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 team has decided to pursue ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r candidates at this time. We are currently reviewing your resume for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r opportunities." Well I know that is a standard rejection email but I would have felt really good if I got a good feedback from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recruiter.

Is it possible to get a feedback on my interview? Can I write to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recruiter back asking for feedback or should I just leave it aside and move on with ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r opportunities. Of course 6months is not a long time :-).

Thanks again for your excellent post.

8:20 AM, March 13, 2008  
Blogger Unknown said...

I just want to question cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 obsession with writing code on a whiteboard. Nobody ever writes code on a whiteboard (except maybe to very roughly show some structure). That's what computers, with nice text editors, and syntax highlighting are for. Everybody types (and certainly edits) faster than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can write on a whiteboard. I'd racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r write code in notepad than on a whiteboard. Give your interviewees a shot at writing code on an actual computer, you know, like what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would actually do on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir job. As a bonus that makes it really easy for you to test if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code really works.

There's a lot of good stuff in this post though. I enjoyed it.

Tim

8:21 AM, March 13, 2008  
Anonymous Anonymous said...

I'm curious, why Google? I mean, aside from working for a huge conglomerate and perhaps it's "cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chic place to work", I don't see why Google can afford to be so picky through it's interview process. In fact, I'd say cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 arrogance and apparent growing bureaucracy throughout cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HR process that is in Google seems to be almost such a turn-off that I don't think someone could get me to work at Google even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y paid me some grandiose amount.

That would be a great article Steve, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 arrogance of Google. I'm not trying to troll or be flamebait and I don't mean everyone or even you, I love your blog & writing style but it's impossible to ignore this elephant in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 room.

8:36 AM, March 13, 2008  
Blogger fogus said...

Jeff,

Why not? It seems to me that Google is in an interesting position that only a few companies in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past could claim. That is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 desirable place to work in tech, probably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most desirable. I haven't seen cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 numbers, but I have to imagine that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a mountain of resumes piled in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HR department. If that is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n why shouldn't cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y be picky? It is a win/win situation as far as I can see.
-m

8:50 AM, March 13, 2008  
Blogger yogurtearl said...

Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics: A Discrete Introduction is a good book on discrete math.

8:55 AM, March 13, 2008  
Blogger Unknown said...

Just a minor issue, but I had to get it out: The guy's name is Dijkstra, not Djikstra.

Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise, thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 great write-up.

9:10 AM, March 13, 2008  
Blogger Pablo said...

My previous company hired a guy who has mad whiteboard skills and couldn't code or design for shite.

Um, if you select for whiteboarding skills, that's what you're going to get.

If I ever hire an employee cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview process is going to consist of putting him/her on a computer with his/her favorite editor and go from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

Why not put your candidate in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 environment cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're going to be working in?

Who cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hell codes on a whiteboard with hyper-annoying misguided uber-geeks staring at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir shoulder.

I'll be avoiding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Google interview process like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plague. Thanks.

9:58 AM, March 13, 2008  
Blogger fogus said...

Pablo,

That's just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 thing. You will *never* be able to properly simulate that potential employee working in your environment. Sitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in front of a computer no more shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir propensity for working in your company environment than making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m use a slide rule.
-m

10:08 AM, March 13, 2008  
Blogger Unknown said...

Sitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in front of a computer and writing code is a lot closer to what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will be doing on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir job than standing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in front of a whiteboard and writing code.
Here at GHS everybody who comes on-site is expected to write a small but interesting program, from scratch (about 4 hours of time). I think that's a hell of a lot better than writing code fragments on a whiteboard, and it really isn't all that hard to administer such a test.

Tim

10:19 AM, March 13, 2008  
Blogger Unknown said...

Note to Self: no need to apply for a job at Google. Your process is filtering for CS-bots, not necessarily top-quality programmers or engineers. The best programmers I have worked with with have eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r walked out on your interview or been asked to leave. Most didn't have traditional CS degrees and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y couldn't care less about Big-O. They knew when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y hit a problem that required more study and tools to be brought to bear, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key is having cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 skills to know what you need to know and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to go seek out that knowledge. And graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory? Please - get over yourself.

10:49 AM, March 13, 2008  
Blogger Rachel said...

I would just like to add a suggestion: do some company-specific technical reading. This is especially easy when preparing to apply at Google, which has a few white papers out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. Reading up on map reduce, and being able to ask some questions about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper (and talk about how I had done a distributed process at anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r company) might very well be what got me in.

And, guys, don't blame Steve for what Google's interview process is. He didn't say it's optimal, he's just telling people how to prepare for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 terrain. The process appears to screen for CS-bots, as some of you say, and I'd like to see more questions asked about process -- but since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y likely won't be, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 burden is on you to just mention as much of that stuff as you can while answering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical problem. For example, scribble some quick Javadoc on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whiteboard while saying "in real life this would probably have to be exposed in a user manual", make a quick stab at writing unit tests, etc.

12:57 PM, March 13, 2008  
Blogger Steve Yegge said...

> And graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory? Please - get over yourself.

> I would attack X itself, except that I do not want to pick up a book and figure enough out about it to discredit it. Clearly I must yell a lot about how stupid Stevey is so that nobody will listen to him!

1:27 PM, March 13, 2008  
Blogger Jurgen Appelo said...

Why I Would Never Hire Steve Yegge:

I'm quite sure that less than 10% of all software developers in this world are able to understand big-O complexity, n*log(n) sorting algorithms, hashtable implementations, graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory, n-ary trees, NP-completeness, mutexes and semaphores. But Steve states that (for him) this is all basic knowledge, and that his requirements for candidates are not much different from those of any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r software company. Now, if this was really true cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n 90% of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software developers in this world would not be able to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves a new job at this time, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y needed to. As this is definately not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case -- millions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m are changing jobs every year, despite all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir shortcomings -- Steve's statement is evidently false. I know companies that hire demented trolls only because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y look a lot like software developers, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y know which side of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to bang with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir club. (And in my own interviews, I prefer socially-aware software engineers with common sense over uebergeeks from outer space. But that's anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r story.) Therefore... 1 point off for tunnel vision, distorted sense of reality and false reasoning. I can't abide know-it-alls.

In my opinion, building software is about delivering value to customers and making users happy. -- Oh, and it would be nice if you enjoyed doing that, but it's no requirement. -- Software engineering is so much more than just knowing your "basic" algorithms and data structures. It not only entails Construction, but also Requirements, Design, Testing, Maintenance, Configuration Management, Project Management, Process Management, Tools, Methods and Quality. According to SWEBOK, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 knowledge area of Construction -- for many of us, including me, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most enjoyable part -- accounts for only 1/10th of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 body of knowledge for a software engineer. Many of us need that part to enjoy ourselves. However, we need cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r 9/10th to make our customers and users happy. Therefore... 1 point off for forgetting whom you're building for.

I hate it when people talk to long. The KISS principle is just as valid for blog posts as it is for code. If Steve's blog writing is any measure of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 volume of code he writes, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I understand why Google is so busy building cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se super server farms here in my country. -- Therefore... 1 point off for not knowing when to stop.

Anyone who misspells cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name of one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 greatest thinkers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 history of our Software Engineering discipline must be turned down immediately. No matter how many sorting algorithms he knows by heart. Now, I wouldn't mind if people accidentally referred to Stevey Yiggo. That would be understandable. But come on, misspelling Edsger W. Dijkstra is quite something else! -- Therefore... not 1 but 2 points off. Because Dijkstra was Dutch, just like me.

That's five points in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 negative, mr. Yegge. Thank you for coming, that will be it. Don't call us, we'll call you. Please leave cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 markers on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 table. Thank you.

Noop.nl

2:10 PM, March 13, 2008  
Blogger Unknown said...

One ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r technical X I would add to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list: know how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web works down to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 level of IP packets.

Fortunately, this is a technical area that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's a very easy home test for, so you can assess yourself well in advance of your interview and read up on what you don't understand. Go get a packet tracing tool, such as wireshark. Capture all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 network activity that happens when you ask a freshly opened browser window to go to www.google.com (just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 front page, not counting what happens when you start typing).

Now make sure that you can explain every single packet you just captured in detail. This should cover DNS lookups, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 three-way TCP handshake to port 80, HTTP headers on both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request and response, etc.

2:51 PM, March 13, 2008  
Blogger Gaurav Sharma said...

The description "software engineering" is starting to cover too broad a field and seems to be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main cause of confusion for many here (evident in some comments above).

If you're building software from scratch or very near cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 metal, racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than very high level 3rd party bespoke business agile solutions, of course knowing graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory is going to be more useful than studying stuff like requirements and configuration. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're completely different areas and it's just disappointing to read confused defensive comments by some seemingly insecure "offended" types here.


Perhaps worth writing a post some day about different layers of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software cake sometime to clarify such things.

I don't have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 credentials for Google, and nor do I intend to work on that kind of software anytime soon - most of my work is with high level languages/frameworks and problem solving with those, but *still* found your content valuable.

Would have thought fewer words are better to describe most things well, but your blog proves ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise. don't be put off, ever, and keep up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 great work.

3:15 PM, March 13, 2008  
Blogger Poposhka said...

"I'm curious, why Google?"

Start on this page and work your way down...

http://www.google.com/support/jobs/bin/static.py?page=benefits.html

3:28 PM, March 13, 2008  
Blogger Unknown said...

Jurgen said: "Anyone who misspells cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name of one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 greatest thinkers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 history of our Software Engineering discipline must be turned down immediately."

You should Google around and see what Dijkstra said about "software engineers" (hint: he put it in scare-quotes, too).

It's also odd that you don't think that programmers need to know big-O notation or n log n sorting algorithms (!) but still have kind words for Dijkstra. Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hint: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kindness would not be mutual.

If you don't know why you're doing what you're doing, you're just an Eclipse macro that happens to breacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365. Educate yourself.

3:39 PM, March 13, 2008  
Blogger greytrench said...

I've only just started programming, and I've gotta say, that's an intimidating list. Still, speaking as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 neo-est of neophytes, it looks like a lot of fun stuff to study! Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ideas!

5:26 PM, March 13, 2008  
Blogger Matt Blodgett said...

Steve,

Are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re software engineer jobs at Google that aren't so academic in nature?

For example, do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people who work on Gmail have to memorize all of that "baseline" stuff you listed?

Is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re room for smart software engineers at Google who like working at a higher level?

I'm genuinely curious to hear your answer. Google seems like a great company to work for, but I'd sooner be bashed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 face with a sledgehammer than have to commit all of that low-level nastiness to memory.

7:35 PM, March 13, 2008  
Blogger Unknown said...

My impression of Google is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can afford to hire only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '10' employees. Can't really blame cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

I like to think of myself as maybe a 9 tops, so no free lunch for me!

The important thing I think is that if someone understands cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fundamentals, whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r its graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory or an http session from layer 1-7, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can figure out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 high-level stuff no problem.

I do think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are hurting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir bottom line in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 long run though, as hiring only one "flavor" of employee can make for dull products. Compare/contrast with Apple for example.

I'm also willing to bet that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 seeds of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next Google are being sown within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own walls as we speak. Lots of smart people with money in close proximity tends to make new companies.

Btw, from what I hear from people I know actually at Google, its a very mixed experience. The senior folks (pre ipo) are, not surprisingly, pretty happy. The worker bee types tend not to like it so much.

8:40 PM, March 13, 2008  
Blogger Mark Harrison said...

Hi Steve, great post as always.

I really like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Grimaldi "Discrete and Combinatorial Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics" book. This was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book (along of course with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discrete math class) that made me really feel I had a Vocation as a programmer.

A lot of people will recommend Concrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics by Knuth, but went through that and preferred cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Grimaldi.

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people questioning why this is useful in interviews... it's sort of like auditioning for a job in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 classical music field. You'll be asked to play not just some set audition pieces and some sight reading, but also scales, arpeggios, etc.

If you can play an F minor arpeggio and an E major scale confidently on demand, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reviewer can probably safely make some assumptions about your basic musical knowledge and skill. Of course, you might be able to do those and still suck, but hopefully cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 audition will take care of that.

1:47 AM, March 14, 2008  
Blogger matcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365w said...

Hey now, quicksort isn't O(n*log(n))! Are you sure you work at Google?

3:47 AM, March 14, 2008  
Blogger gwenhwyfaer said...

Those people criticising Steve or Google for being "too academic" (in requiring basic knowledge of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domain) are merely exposing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own ignorance - or worse, inadequacy. Data structures and algorithms are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 foundation upon which solid programs are built; those who believe that ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r people are supposed to worry about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m are condemned to live out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir days are mere interior decorators - or worse, to build unintentionally collapsible buildings.

Nonecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are legitimate reasons to shy away from Google as an employer, not least its size. Whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r you believe that large organisations are simply unworkable, have a zero tolerance for bureaucracy, even relatively benign forms (any large organisation has to spend some effort making sure it continues to go in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same direction, which is what bureaucracy is - it comes with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 territory), or simply can't stand to be in close proximity with any number of your fellow man (especially those fellows who might work at Google) - as it happens, I'm afflicted by all three - Google wouldn't be a good fit, and no long and exciting list of benefits or cool technical challenges (and believe me, I can see how cool cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are!) can offset that.

Now, if you'll excuse me, I have to go and refresh my ADS knowledge :)

4:02 AM, March 14, 2008  
Blogger Michael R. Head said...

@oligophagy
Actually, Stevey didn't specify whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r he was using an average case or worst case analysis.

Now, if he had said worst-case n*log(n), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n sure.

Which actually raises a question... what to do when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer is wrong?

I heard of one interviewee that was asked how to lazily instantiate a singleton in Java without locking every single time cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 getter is called (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infamous "double checked locking" issue). This is effectively impossible, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewee informed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 question. The interviewer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n proceeded to argue (wrongly) that DCL is a perfectly proper solution...

4:18 AM, March 14, 2008  
Blogger Noam Mor said...

"For example, do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people who work on Gmail have to memorize all of that "baseline" stuff you listed?"

I'm intimidated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 amount of complexity in Gmail, as i think about it. Like everything else in Google, it is a distributed application, with millions of users, each of which has gigabytes of emails stored. Emails are interconnected between conversations and between users; Conversations are interconnected between users; Attachments are interconnected between emails and between users; Everything is stored in some sort of a grid, possibly in an efficient manner (no need to save cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attachment for both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sender and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 receiver).

What have we? A graph of email conversations modeled in a distributed storage system. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text is scanned in favor of presenting relevant ads, which is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 easiest thing in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world. If any part of this gigantic system is implemented inefficiently, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole thing becomes much too slow for use by millions of people. And let's not forget that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 UI and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server/UI communication are written in a subset of Java that is compiled to Javascript, which I am sure is a method developed specifically for Gmail. So all in all, I'd say yes, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people who're working on Gmail do need to be proficient in Computer Science. It is just not possible to create such an application without deeply knowing what you are doing.

5:51 AM, March 14, 2008  
Blogger Shahms said...

From a fellow Kirkland Googler:

An excellent post that I highly recommend Google candidates read before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir phone screens or interviews. I can't stress cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 importance of hashtables or big-O enough. Whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r or not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 topics are actually important, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y come up regularly in interviews often in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same question: "So, you've given me a O(n*logn) solution using a tree, can you come up with a better solution?" should serve as a huge hint.

I also want to echo cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extremely high false negative rate and it's arbitrary nature. It's true and it's frustrating from both sides of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 table (a candidate several interviewers may like can still get rejected), but dust yourself off and try again.

One minor quibble though, depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job for which you are applying you may be asked to rate yourself in several areas. This is, generally, to alleviate some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problems with getting an interview quizzing you about Java when you're more familiar with C++ (or Python). It's not perfect, but interviewers typically will take that into consideration before asking questions.

Related to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point about asking questions, just demonstrating some enthusiasm goes a long way. There's often not much you can do about this, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer is asking you particularly inane questions, but in a typical interview cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re should be at least one question that can be taken in an interesting direction.

8:39 AM, March 14, 2008  
Blogger Frank Pape said...

"Is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re room for smart software engineers at Google who like working at a higher level?"

From anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Googler, I say yes, absolutely. But you'll still be expected to know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basics. It's near impossible to be a really good software engineer at *any* level if you don't understand why to use one data structure or algorithm vs. anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, even if you're not implementing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

Google even expects product managers to have a good foundation in this stuff, so you can bet you'll be expected to for any kind of programming position.

One tip I haven't seen, that helped me a lot before interviewing, was to read Wikipedia. The articles on various data structures and algorithms are great, and free. Read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m!

If your language of choice is Java, study cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Collections classes. Understand how *cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y* implement a HashMap, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you'll be able to do it too. You might be surprised at how simple most of that code is.

10:31 AM, March 14, 2008  
Blogger Unknown said...

I'm quite sure that less than 10% of all software developers in this world are able to understand big-O complexity, n*log(n) sorting algorithms, hashtable implementations, graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory, n-ary trees, NP-completeness, mutexes and semaphores.

Really? Then more than 90% of coders in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world aren't up to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job. Unless you count "coders" as someone writing HTML for a webpage.

Out of that stuff, I'd say knowledge of hashtree implementations isn't critical so long as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're aware of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pros and cons of hashtree (and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r container) usage... that's about it. For me to hire someone, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'd have to have at least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to hold a conversation about everything else in that list.

How can anyone claim that Big-O notation is not important??? Unless your datasets never grow above a few KB maybe.

I mean, I wasn't bang alongside everything Steve just said, but seriously... your comment is like saying "people don't need to know how to program to be programmers". Um... cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do, y'know. They really do.

12:36 PM, March 14, 2008  
Blogger Unknown said...

I intereviewed at Google a few years ago and had a great time. I wasn't offered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job, and I can choose to chalk that up to eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 false-negative problem or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that I blew a few questions.

But one thing I'd like to comment on from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 article is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recommendation to know one programming language *really* well, "preferably C++ or Java".

That should read "preferably C++. We will allow you to write code samples in Java, but we will silently dock you points for not knowing C++."

One of my interviewers asked me to reverse a String.

I wrote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 char array from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 String object and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I reversed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 char array (in place), passing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reversed array into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 constructor of a new String.

The interviewer frowned and asked if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was anything wrong with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code. I looked at it for a moment, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n stepped through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lines, debugger-like, on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whiteboard.

No, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was nothing wrong with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code.

The interviewer was annoyed, finally telling me "you forgot to null-terminate your array".

In reply, I said "actually, in Java, a String object is like a C struct containing both an array of characters, and an integer indicating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 *length* of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 string."

Now he was really annoyed. "Yeah. But you didn't put a NULL at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 array. You have to put a NULL at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 string."

I could sense his annoyance, and wasn't quite sure what to do. But I trudged on, explaining "Well... since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 String object knows its own length, it doesn't need to have a null at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end. Java Strings are not null-terminated. They're like Pascal Strings."

He paused for a second and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n shrugged his shoulders dismissively. "Yeah, well I never really knew much about Java."

The moral of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 story is this:

Java may be a decent programming language, but you loose points for writing code samples in Java, since many of your interviewers probably consider it a lesser platform than C++ coding.

12:44 PM, March 14, 2008  
Blogger Chris said...

Thanks. Guess I have a lot to learn. Because I don't know all that stuff.

But I figure I'm ok right now because I'm very new, still in High School and just concentrating on completing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AP test and graduation. When I get to college I can work on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more advanced stuff.

Good to know that Google accepts Java, even though it has its problems (I dislike having to call 4 different methods from one object if I need a whole bunch of variables. Really needs to be a way to return a bunch of stuff at once besides setting up an array, because that can get weird).

2:47 PM, March 14, 2008  
Blogger mlvanbie said...

@oligophagy, @michael head:

The running time of quicksort depends on your pivot element selection. If you use a linear-time median selection algorithm cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n quicksort is O(n lg n). I believe that you can read about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 algorithm in CLR's Introduction to Algorithms. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir is an inefficiency in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir pivoting code (at least in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first edition). When is it bad? What running time does it give in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst case? One of my interviewers had a similar problem in a question that he asked me to code, which I found.

If you like solving problems and using your knowledge of algorithms, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n Google interviews can be fun. I suggest ACM programming contest problems (easier ones from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 finals and some regionals, for example) as good sources of practice material. You could easily be asked similar problems during an interview.

9:50 PM, March 14, 2008  
Blogger Michael R. Head said...

@mlvanbie

Sure, you can tweak cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 selection algorithm and guarantee an n log(n) runtime, but you kill your performance, so nobody does it that in practice. That's why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 textbook answer is that quicksort is n log(n) in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 average case, and n^2 in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst, but everyone picks it over mergesort because its constants are so much lower in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 average case.

Special pivot selection is more of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretical interest -- though I agree it is interesting and worth being aware of.

11:12 PM, March 14, 2008  
Blogger Ben Manes said...

@Michael Head

>lazily instantiate a
>singleton in Java without
>locking every single time
>... impossible.

Wrong. DCL will work in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Java5 memory model if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reference is volatile. Even cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, its an ugly approach. The better approach is to use a static inner class as a holder of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 instance and rely on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that class loading is synchronous.

In fact, stating ignorance is a fine answer. Stating something is impossible is always a wrong answer, unless macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matically provable.

1:37 AM, March 15, 2008  
Blogger Unknown said...

This is really a great discussion.

Can anyone @Google provide a short list of eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r a "Google Library" of recommended texts or at least bulleted list of Wiki articles? I have about 60% of a CS education under my belt and would love to really dive back into this stuff.

On a completely unrelated note, I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is an elephant in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 room here. For all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 supposed brainiacs, no one has supposed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re may be more people qualified to work @Google cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are positions available. So no surprise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are false negatives.

Google isn't cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 alpha and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 omega. They've already IPO'ed, so you ain't gonna be googlenaire anytime soon. And trust me, once you realize you spent your life working overtime in order make someone else rich, you will realize those dinners weren't 'free' after all.

11:30 AM, March 15, 2008  
Blogger Michael R. Head said...

@ben

Thanks, that is true, I should have written cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem as "without any overhead" racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than "without using synchronized".

11:37 AM, March 15, 2008  
Blogger Michael R. Head said...

And, BTW, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point of my comment wasn't about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specifics of DCL in Java, but questioned what one may do when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer is actually wrong on a point.

Do you just write off cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview at that point, accept an incorrect premise, or try to correct cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer?

11:49 AM, March 15, 2008  
Blogger Michael R. Head said...

This is probably a useless comment, but I'm hoping this will stave off anyone giving me more guff for mentioning Singleton vs. DCL.

Sure, I could have been more specific about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 anecdote, but we all understand that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are issues with respect to double checked-locking. I misposed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 supposed interviewers question. But that detail isn't critical to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point. The point of my story was to imply that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer wasn't aware of those issues.

And my question was, what does a hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical interviewee do in that situation?

Don't let cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 anecdote distract from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message! (I say this knowing exactly how I'd respond to an imprecisely/incorrectly posed question).

12:38 PM, March 15, 2008  
Blogger ravehanker said...

what's wrong with trying to sort linked lists?

2:57 AM, March 16, 2008  
Blogger Craig said...

Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics with Applications, Susan Epp.
That's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book we use at our univeristy in London for alot of discrete math stuff in my Computer Science degree. Highly recommended.

3:00 PM, March 16, 2008  
Blogger Rod said...

Positively invaluable, thanks Steve.

It's nice to hear this sort of feedback from someone who made it through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 google interview process.

I applied about a year ago but didn't get through. I wrote a post about my experience on my own blog here: http://www.nomachetejuggling.com/2006/12/30/my-interview-with-google/

Your comments actually lend a lot of credibility to what I said, for which I thank you. I posted a recommendation that people have a computer science degree and a great understanding of big-O for a Google interview, and received a number of complaints for it. Having you say it makes me feel right in my suggestion. Not necessary, but definitely extremely helpful.

I decided I wanted to reapply to Google after a year cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 instant I was turned down, and I've been working on my skills in preparation for it. Hopefully I'll work up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nerve to try again soon: your post definitely gave me a lot of hope. I had no idea so many people got in on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir second or third tries.

Anyway, thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post. It was both helpful and inspiring.

3:39 PM, March 16, 2008  
Blogger amadamala said...

Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post Steve, I'm reading your blog recently and I found cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m very useful and fun.

11:31 PM, March 16, 2008  
Blogger Adam Byrtek said...

One potentially obvious tip: when you are having a phone interview, *always* use a hands-free or a speaker for your phone. Having both hands free makes you much more comfortable and allows you to make notes, draw diagrams and/or just scratch your head easily.

6:10 AM, March 17, 2008  
Blogger Sam said...

Blogger Jurgen said...

"Anyone who misspells cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name of one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 greatest thinkers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 history of our Software Engineering discipline must be turned down immediately...."

"I hate it when people talk to long."

How many points do you take off for spelling a word a simple as "too" incorrectly?

How many points do you take off for re-posting your comment trolls on your blog in order to impress cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people you think are friends and glean a little spotlight off of someone who is obviously far more knowledgeable and talented than yourself?

Great post, Steve. Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tips.

Also, finding out that you also play guitar makes me wonder if you do everything I do a honkzillion times better than I do it.

9:19 PM, March 17, 2008  
Blogger Unknown said...

Following your quote:
"Gosh, we sure wish that obviously smart person had prepared a little better for his or her interviews..."
But if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're obviously smart, shouldn't you be considering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m? If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y just had to answer questions cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 questions correctly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n why bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview? Why not just give cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m a quiz?

I appreciate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 argument that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir effort in preparing indicates a work ethic that you may be looking for. On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hand, it ends up being like college: people cram for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "exam" with little hope of long term retention.

Personally, as an interviewer I'd much racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r see what a person is capable of day-to-day. If a person normally knows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference between a B+-tree and a B*-tree, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n that tells me a lot about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kinds of things cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y find interesting, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sorts of things cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y may be good at. But if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y studied up on it in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 days before because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y knew I might ask, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n what does that tell me about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m?

Maybe it's naive, but I used this approach when I interviewed at Google a couple of months ago. As an applicant I figured that if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y didn't like me as I was, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I didn't want to work for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

(But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y did want me... which made cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decision to turn cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m down a tough one!) :-(

7:43 AM, March 19, 2008  
Blogger Unknown said...

...and as a follow up, I should point out that I was just commenting on that particular line from your post, and not flaming cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 essay in general. It's a good post.

I suppose I wish that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applicants I see (and even me, to a certain extent) already knew most of what you wrote about without needing to study it.

8:07 AM, March 19, 2008  
Blogger Sony Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365w said...

Graphs and problem solving questions in general make for an excellent interview by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves don't you think? Having candidates use various data-structures like Lists, Trees, HashMaps to solve such problems should be sufficient to gauge cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir skills.

Remembering exactly how every data-structure object or sorting method is implemented seems no-more relevant than knowing how an object and its methods turn into byte-code instructions. Abstraction layers exist so as to focus on solving higher order problems. Only if a problem is suspected in an abstraction layer would one need to dig deeper - a good problem solver would do so without hesitation.

11:43 AM, March 20, 2008  
Blogger Adi said...

Postback from http://hebrew.dotmad.net/archive/2008/03/18/how-to-get-a-job-at-google.aspx

2:13 PM, March 20, 2008  
Blogger Paul Tomblin said...

Last summer I had a series of 3 phone screens and a grueling all-day in-person in Manhattan. All in all it was fun and a pretty good learning experience, although it was pretty obvious by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second or third hour of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 in-person that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were interviewing me for a position that I wasn't willing to move to Manhattan for, and I said as much.

At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time, I figured I'd blown it big time, especially after I whinged a bit on my blog about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y took 3 months to reimburse me for my expenses. But I got an email yesterday from a Google recruiter who wants to talk to me about a different position. So I guess that means I didn't totally blow it.

The thing is, though, that I'm a 46 year old self-taught programmer. I graduated as a Civil Engineer, but went into computers before I'd even graduated and never looked back. So that means while you guys were taking course on graph cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory and discrete programming, I was learning pre-stressed concrete and sanitary sewer design. So I've had to pick up a lot informally. I can tell you that most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 good sort algorithms are O(n log n) in time and some are worse in time and better in space, and that Qucksort can blow up into O(n^2) in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst case. But I can't name every sort algorithm in Knuth and what it costs in time and space. I can tell you that I know how to look up those things on Google or Wikipedia when I need to know it. Similarly, I've heard of Red-Black and B+ trees, but I couldn't describe how to write one from scratch. There's library classes and Wikipedia articles for that.

Anyway, given that my first phone screen is in a few days, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book you recommend is out of stock at Amazon, do you have any fall back suggestions for how to prepare for this set of interviews?

5:13 PM, March 20, 2008  
Blogger George Pikoulas said...

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r good book is Algorithms by Sanjoy Dasgupta , Christos H. Papadimitriou , Umesh Vazirani.Check it out.It is easier to read than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Introduction to Algorithms.

3:23 AM, March 21, 2008  
Blogger Adam Hupp said...

This advice is very good. I prepared for my Google interview for about 6 months, reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Corman Algorithms book and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, on Stevey's advice, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Skeina book.

The best thing I did was to spend time implementing various algorithms. I found that algorithms tend to have more tricky edge cases than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 average code slog. Working through those helps prepare for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kinds of problems you'll get in an interview even if you don't get asked about those specific algorithms.

3:33 PM, March 23, 2008  
Blogger graham said...

But I have people skills!

For those lamenting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CSiness of this list, this prior post might help.


"They're absolutely right. You can be a good, solid, professional programmer without knowing much math. But hey, you don't really need to know how to program, eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ... you might discover you're good at project management, or people management, or UI design, or technical writing, or system administration ..."

11:19 AM, March 24, 2008  
Blogger Jim said...

No one mentioned:

Algorithmics: The Spirit of Computing by David Harel and Yishai Feldman

This is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 easiest to read books on Algorithms that I have found and it is written by a master in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 field. It is not overly math based, but if you want to understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concepts before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 math is thrown in, it is a good primary (and it is relatively short).

9:29 AM, March 28, 2008  
Blogger Will said...

Jurgen,
I'm going to have to take 5 points off your comment since Edsger Dijkstra was a computer scientist, not a software engineer, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference being he only cared about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics of computer science, not requirements or processes. In fact, he didn't even own a computer until late in life because computers have little to do with computer science (read a bibliography of him to verify). And you're right--how could anyone possibly misspell a name with a silent 'J'? ;-)

2:04 AM, March 29, 2008  
Blogger Fred Ross said...

I am thoroughly amused at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dijkstra discussion. Have none of you actually read "A Discipline of Programming" or "Predicate Transformers and Program Semantics"? For shame! He was very macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matical, he was very much concerned with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 practical problem of developing software, and he had no respect for people who would put ten times as much effort into a hacked up solution instead of thinking for half an hour about what would make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 semantics clean.

I'm even more amused that people are complaining about things like complexity classes and asymptotic complexity. I did math and physics. Now I work in a tuberculosis lab, yet I know this stuff. Come on people!

Hey, Steve, does Google need a macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matical physicist who knows how to use source code control and can culture bacteria? For that matter, how would you handle interviewing someone with that weird a background?

12:09 PM, March 30, 2008  
Blogger Jeff Brown said...

Heh. You forgot to mention that Google interviews are fun!

Nothing like ripping through a handful of gnarly algorithms in half a day with some really smart people.

Unfortunately I turned down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job offer for personal reasons. However, my interview experience was stellar and well worth my time!

Perhaps anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r day.

Meanwhile, I'll send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tips off to a few junior hopefuls I know here and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re...

12:39 AM, April 04, 2008  
Blogger kroshilina said...

have you ever hired anyone who was significantly smarter than you?

9:16 AM, April 09, 2008  
Blogger F. Vargas said...

Too bad this won't help if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 morons skip you because your resume doesn't list a school that's "on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 map." I've been hacking code since high school in nearly a dozen languages and couldn't even get a phone interview. My startup will never deal kindly with Google for that reason alone, nevermind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir Do No Evil policy is fragmenting.

2:33 PM, April 09, 2008  
Blogger thrax said...

I think we need vocabulary to differentiate between CS grads who talk about lambda, and ordinary muggles faced with a repetitive task.

Users are scared away by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept of "programming," when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir day could easily be improved by a 5 line macro or shell script.

10:02 AM, April 12, 2008  
Blogger Paul Tomblin said...

when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir day could easily be improved by a 5 line macro or shell script.

My day could be considerably improved by replacing my boss with a 5 line shell script. Although 3 would probably suffice:

while true ; do
echo "get your timesheet in!"
done

10:59 AM, April 12, 2008  
Blogger Ravi said...

Looks really useful...am bookmarking it for future reference!

11:52 PM, April 18, 2008  
Blogger Steve Yegge said...

Wow... I wasn't planning on commenting, but valentina has asked a surprisingly deep and relevant question:

> have you ever hired anyone who was significantly smarter than you?

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer is... yes! all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time! Um, I think!

I _suspect_ cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're way smarter than me, but it's often difficult for me to prove, because I'm not smart enough to know if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're bluffing.

This is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most fundamental problems with interviewing as part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hiring process: how do you tell if someone is smarter than you? As a general rule, people can't tell, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y wind up hiring people who are subsets of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves, and a team's bar gradually declines.

They sometimes get lucky and accidentally hire people with astonishing math or CS (or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r) skills that nobody on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loop was qualified to gauge. But on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar is always in steady decline.

This will be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject of a talk I'm giving at Stanford soon. I hope it's controversial!

Valentina, thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 excellent question.

3:31 AM, April 25, 2008  
Blogger me22 said...

Regarding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Big-Oh is useless" comment:

I'll admit, I'm never going to go out and prove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 amortized complexity of a splay tree access. But I've done cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ACM's ICPC (and similar) a number of times, and it got me into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 habit of doing a (very) rought Big-Oh calculation to see whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 solution was plausible for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 size of inputs that were expected.

This was actually useful for me just recently. I had reduced it down to a graph problem (and yes, everything's a graph problem), and implemented Dijkstra, but soon needed to extend it to negative weights. That leads to bellman-ford, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complexity --- O(v*e) --- for it made be think, 'darn, that's too high'. I knew I had a DAG, though, so I researched a bit, and found an applicable variant that got it down to O(v).

The quick rule-of-thumb estimate saved me quite a bit of coding time.

11:46 PM, April 27, 2008  
Blogger Jessica said...

So by "software engineering positions" you are excluding user experience positions (web developers) that mostly focuses on AJAX + Javascript + CSS?


Thank you so much for your article :) Hope to see you on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Google campus someday.... I hope! As for your closing comments "Real-world work makes you rusty." <- remarkably true.

7:34 PM, April 28, 2008  
Blogger Steven 'lazalong' Gay said...

Why reinvent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wheel again and again?

Said differently: Do you really ask a Chief how to build pans, knifes or an oven? Wouldn't it be better to test if he is able to select appropriate ingredients or use bad ingredients to make tasty dishes?

As most of us I studied how sorting, hashtable, trees and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r statistics methods where implemented. And quickly realised that only very few macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matical genius would be able to ameliorate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m hence I forget how to code cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m as soon as possible to leave place for useful stuff.

Such as which of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 available implementations (Boost::graph, Poco, std,...) is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best in a cross-platform implementation, which one is thread-safe, which one is fastest, etc.

Anyway very informative post.
I wonder how much time you use you write those rants :)

PS: If I made interviews one of my question would be to use so-called "advanced" statistical methods to prove a relationship among data cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chosen method parameters to disprove it!

6:40 PM, April 29, 2008  
Blogger Unknown said...

Hi Steve,
I have been following your blog for close to 3 years now, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time I graduated with my Master's in CS and had enough time to kill :)
Awesome job! Please Keep writing !!
Am not sure if you would actually see this comment and respond, but, it would be great if you did!
I worked predominantly in Operating System research during grad school and developed an Assembler (Yes! Not a compiler and some folks still do write production code in Assembly Language :) in my first job, but, am a routing protocol developer in my present job.
I've never really learnt C++ even, though I've developed "programs" in C++, Java, what_have_you :) I wouldn't brag about my C++/Java knowledge ;-) To summarize I am reasonably good (maybe, really good)at C , but, it would be too much to claim I am as good at C++ and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 likes without actually having done anything productive in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r programming languages. For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kinda jobs I'm interested in, I've never really seen anything ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than C being used though archaic(basic??) ideas of OOP do feature in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code base.
Phew! Atlast!! The question I wanted to ask.
Does it make sense to start working (learning)on a programming language like C++ or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 likes just to broaden my repertoire ? Or with future jobs in mind ? Given a choice, I would like to learn Lisp cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right way and invest my time in it!
Looking forward to your response.

Thanks,
Shiva.

3:56 PM, May 14, 2008  
Blogger Shauna said...

Most positions say degree required. Is this a hard and fast rule or is equivalent experience also considered?

1:17 PM, May 30, 2008  
Blogger nick black said...

I love (and find myself eerily evoked by) your summary of Class A Interviewers; et tu, Yegge? Indeed, see a set of interview questions I published yesterday, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Reflex Security days. LISP, Strassen multiplication, and TCP state machines, all to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rousing beat of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Book of Revelation! Grand ol' times.

Solid general interviewing is just as difficult as solid general education, and just as likely to be implemented piecework by specialists.

As an interesting case study in resumes, here's mine; I've already turned down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 big G twice (for SRE), though =].

As always, Steve, thanks for partying like a blog star and bringing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Good Word; your dynamic languages presentation was thrilling, and a fine introduction to modern language issues for folks slacking on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir λtU.

9:16 AM, May 31, 2008  
Blogger nick black said...

oh, and:

I see plenty of people have already mentioned Concrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics, so I'll spare that reference; I agree with all of its exceptional (well, for non-Knuths) rigor, dazzling examples and asides and utter unapproachability without some warming-up exercises. For those who enjoy that one, I heartily endorse Gries's A Logical Approach to Discrete Math, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 always-formal, always-authoritative Monographs in Computer Science series. It's a strong pair with CM, but brings one along a bit more gently.

The vast majority of DM texts seem utter rubbish.

1:34 PM, May 31, 2008  
Blogger PLC PROGRAMMER said...

How do I ask an employer if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are finished with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hiring process woithout sounding to pushy. I need to move to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new town and get an apartment pronto

8:43 AM, June 12, 2008  
Blogger user24 said...

same principles apply for oxbridge postgrad interviews, just so you know. (I did terribly at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview - wish I'd read this blog first!)

5:33 AM, June 16, 2008  
Blogger Michael R. Head said...

Question about Google: is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re some sort of pecking order among different groups within Google? Are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re some groups that are viewed as doing run-of-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mill development vs. those doing maybe deeper stuff? I see things like "Internal Applications", "Google.com Engineering", "Site Reliability Engineering", "Engineering Tools", "Systems Infrastructure", ... and I'm wondering which may be more (or less) challenging.

2:21 PM, June 17, 2008  
Blogger X said...

"Most positions say degree required. Is this a hard and fast rule or is equivalent experience also considered?"

Considered, yes, but you can expect degree+no experience to trump no degree+experience. They're doing things that nobody else has ever done, after all...

1:27 AM, June 19, 2008  
Blogger Unknown said...

"They're doing things that nobody else has ever done, after all..."

Like what? I can't think of anything innovative from google besides pagerank.

7:02 AM, June 19, 2008  
Blogger S.M. Yavar Husain said...

Great Great Great Article. I work for an Internet startup and I very well know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 importance of Big- O Notations, Binary Trees, Sorting Algorithms, Hash Tables. Without data structures and algorithms one really cant survive in an Internet Company.

Thanks again for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nice blog.

12:52 PM, June 25, 2008  
Blogger Rahi Jain said...

very helpful... for me it came just for right time... i m a grad student with one year left for completion. many answers were answered for me and i read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole 104 comments which i rarely do while reading blogs... very thoughtful and helpful article.

Thanks steve for this...

6:02 AM, July 02, 2008  
Blogger vipin sahu said...

thanks a lot steve for such an awesome post, i am a newbie in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 field of data structure and algorithm
and not exactly know which one is for just reading and which one is for coding i always thought that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bigoh notation are not much useful as per as ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r data structure but after reading this blog i understood that BigOh is just not for reading :)
thanks a lot one again great job ....

12:10 PM, July 03, 2008  
Blogger lamb of god said...

Hey Steve,
It was a real eye opener to read all of what you had to say. I am not an CS Engineer, i studied English Literature but got hooked on programming, i have been writing code for a couple of years now, its a big shift but i love what i do and i would love to work for Google. I was lucky enough to work as an intern in some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best research organizations so i got my basics right. I did a course in abstract algebra and most of coding is Math related. I don't know if i stand a chance to work for Google but do let me know if someone with a non engineering background would be considered at all. Thanks

9:32 AM, July 09, 2008  
Blogger X said...

So, what job at Google are we talking about? Does it mean anything that Google's recruiting rates started dropping dramatically around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time this article was published? :-)

12:05 AM, July 18, 2008  
Blogger Nick said...

Hi Steve

I've just spent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past hour and 1/2 reading your article and all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments. The article was excellent and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments were very entertaining. I logged into my library and put a hold on a couple of books that were recommended here. Yes, I would love to work at Google.

Well, I have nothing critical to say, so I'll fall in with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 group of people who want to appear intelligent by writing something intelligent.

e = mc^2

:o)
thanks
Nick Fox

2:52 PM, July 18, 2008  
Blogger Unknown said...

Thanks, it is a helpful post. Do you think Google has a bias about which school you go to ? (for engineering entry-level jobs, at least)

1:48 AM, July 24, 2008  
Blogger SDC said...

Also, be sure at no point during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview to say that though you've used Google religiously for years, you have yet to click on one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ads. Man I could have saved myself some heartache.

6:53 PM, August 09, 2008  
Blogger pcleddy said...

Not everyone has or cares to have eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory for, not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intense interest in computer science that you have. Respectfully, some of us just want to have fun doing your job, while we have ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r interests in life. Believe me, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are things out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re to spend a lot of time on. Plenty.

What is striking me funny cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days, as I reflect on technical interviews, and after being in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry for 10 years, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lack of simplicity: why not just ask people what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have done, look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir code, go over it with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir implemented architectures, go over it with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m? Ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were, who cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y worked with, who cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are. Nobody ever asks me cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se questions, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 human ones. Believe me, you are going to locate a lot more smart people that way. As it is, you are going to end up with a lot of extreme geeks. Maybe that works for you.

While I was at Amazon, I was astounded to watch technical interviews done by my peers, and listen to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir philosophies, or lack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365reof. It was like some big hazing episode. And, yes, I've experienced it first hand too. I've been insulted to have to answer questions that have and won't ever have anything to do with anything I will ever do. Like data structures for multi-dimensional tic-tac-toe, that one wins cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cake, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 morons Speakeasy. I think I'm glad I got fazed out.

My claim to fame is I never asked an interview question that did not have to do directly with what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 team was doing everyday. And I kept it simple. None of this is very hard really, sorry to disappoint those of you out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re that think you're really some hot stuff. My mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r could do what I do, if she cared to. Fact it, most people don't want to.

The truth is, you people don't want to look at what people have done, because you don't have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time. Or you just don't want to bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. And you can't think outside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 box and be real. So what do you do? What's been done to you: what your professors did. Same old sad story. Btw, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r teaching and assessment methods out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. You might want to write a paper on that and get your head out of your algobook. No one cares.

2:55 PM, August 17, 2008  
Blogger Paul Tomblin said...

pcleddy: I don't know what you think you'll learn by looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code somebody claims to have written. When I was younger and more naive, I hired somebody who had great experience, showed me some well written code, seemed to know what she was talking about. Then I had to fire her because it turns out that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code that she told me she'd written was done as a group project, and she knew about it because she'd helped do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 presentation on it, but she couldn't code for beans. As a matter of fact, she probably was worse than your grandmocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r.

Maybe you're happy as a boring code grinder, but I'm a smart guy and I want to work someplace where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'll throw new original problems at me and I'l produce new original solutions.

3:14 PM, August 17, 2008  
Blogger S.M. Yavar Husain said...

PCLEDDY: Do you think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Google search and relevance algorithms, gmail spam classification algorithms, google personalization algorithms, google video search can be created by people who are not aware of Big-o Notations, Kanpsack, Travelling Salesman problems, Hamiltonian Cycles or by seeing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code that people have written ? :)

6:28 AM, August 18, 2008  
Blogger S.M. Yavar Husain said...

I work for an Internet startup and I think we use all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se technologies mentioned by Stevey. For example hash tables, N-ary trees in Boolean Query Evaluation, Discrete Matchs(especialy probability and all) in Bayes Theorem which go in making of spam classification algorithms, tries data structures for so many things like auto completion and so on...dynamic programming in calculating word proximities through longest common substrings.....if u need more example contact me @ yavarhusain@gmail.com. NO OFFENCES MEANT :)

7:00 AM, August 18, 2008  
Blogger J.K.A. said...

I have an interview @Google today, and based on what I read here, I am set to bomb terribly...

Ill be positive anyway

7:53 AM, August 18, 2008  
Blogger Paul Tomblin said...

Dr. Jay:
Don't sweat it. I've been through several rounds of interviews at Google, and I found cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m fun and challenging. I got cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 impression cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don't want to you memorize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 algorithms book so much as you can think your way through a problem. Remember to talk aloud as you think through a problem - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'll drop hints if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y think you're nearly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

8:03 AM, August 18, 2008  
Blogger Anthony Mowers said...

I share very much cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same feelings expressed by Brian Di Croce in his comment.

I was uncertain about whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r I'd be a good match for google - or google would a good match for me - and this blog provided me with that extra bit of information.

5:45 PM, August 19, 2008  
Blogger Anthony Mowers said...

The article was very useful for knowing and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 google interview process. It is very much appreciated. Thanks again Steve.

When I read this blog it prompted me to spin around in my office chair and look at my bookshelves of software engineering books that I've collected over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 20 years of work.

I have one book on data structures and algorithms. What about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of all those ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r books? It makes one wonder. Know what I mean?

How is it that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewing process has become so homogenous at Google when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discipline itself is so diverse?

8:40 AM, August 20, 2008  
Blogger Self Taught Geek said...

First thing's first.

Steve, you are to be commended for putting togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r a thorough and useful article (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments are good errata, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y help as well) on how to refresh your skills as a software developer so that you can interview well in a day and age where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job market is tight and lots of us have watched as our knowledge in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se areas has atrophied. I will personally apply some of this. I'm certain of that.

I think it also has to be said, however, that I find it a bit sad that this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 state of software development today. I've worked in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry for 11 years. Granted I'm generally solving business problems and often UI problems, so I'm working more with AJAX, Struts and things of that nature racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than complex data storage algorithms.

However, nothing I do on a daily basis, currently, requires me to know what you believe we should know. I just have to come right out and say that. I read constantly. I read fiction, for fun. I read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Wall Street Journal. I read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Economist. I read blogs on economics and world affairs and triathlons and all kinds of subjects. I bike, I skateboard, I do open water swimming and creative writing. I, frankly, don't have enough time for all things I want to do in my life. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 things I do to enrich my life and become healthier in mind and body.

Now I know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intent of this article was to provide a template whereby a software developer, especially one who is rusty at interviewing or maybe skipped cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CS part, can be prepared and maybe even learn some things to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m better developers. Once again, you succeeded. However, I doubt I'll be picking up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data algorithms books anytime soon. My life is too short. Too precious. If I were to die tomorrow I would not regret that I'm "merely" a software developer and not an Engineer. I would regret that time I didn't take to talk to and hug my wife. I would regret that I didn't take dancing lessons with her. Or that I didn't finally learn how to play cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 piano, or learn Spanish and work overseas for a non-profit.

The list of things I want to do in my life that I haven't done is so long that discreet math doesn't even register. It's not even on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list. And maybe that means I'll be marginalized someday. I will have to sort this out for myself. But I felt it was important, amongst all this self-important talk about what a true programmer is, to remember that many of us are doing good work and doing just fine without knowing complex data structures by heart or discrete math. Many of us are working hard to enjoy our precious lives before it's too late.

Hopefully you receive what I'm saying with due respect and compassion. I don't mean in any way to say that my way is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "right" way. I simply mean to say that "Engineering" isn't necessarily a must have for working in this industry. Not always.

Lately, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 behest of a brilliant co-worker of mine, I've found myself reading books about process. Books like "The Five Dysfunctions of a Team". These books are terribly fascinating to me. Because at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 day I've never had cause to improve my knowledge of discreet math. Except for in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case of wowing an interviewer. However, becoming a good teammate, that's something I think we all should be working on improving upon every day. Those are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 books I wish to rotate through my collection. And if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y land me a job someday, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n great. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y don't, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n that's okay too. I've made my peace with who I am and what makes me valuable.

10:37 PM, August 21, 2008  
Blogger S.M. Yavar Husain said...

Preston: You didnt mention cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 amount of time you wasted in writing this very demoralizing article with intense pessimistic thoughts :) I suggest this time you could have used in reading a data structure/algorithm book.

O My God. Why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hell do you dont think that Steve has written this blog for aspiring developers who want to get into Google and I think it may mean a world to some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people to say "Been cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re done that" You can read economics do scating hug your wife etc etc and you can be at google at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time.

I am sorry but It was not all related to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blog...Please avoid such posts to increase cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 space complexity of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Steves very nice blog...Do watever you want Preston but dont force ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs ... Thanks!!!!!

11:37 AM, August 30, 2008  
Blogger Unknown said...

It appears that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are two types of responses to your post: "its wonderful, thanks" or "why ask discrete math questions?".

A good answer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second type is in order. Perhaps google does not want to hire a person who is and always will be a coder. May be, just may be, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea is to hire people who not only can code, but can think beyond what is, to what can be. For this, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only test is whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r you can think clearly, understand something hazy and complicated, and come back with a clear solution. Sometimes, this requires skills that are quite different from coding skills. These skills are probably closer to those needed to solve discrete math or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r algorithmics questions.

Coders are indispensible. But Google can find coders by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dozen. What Google might be looking for is innovators+coders: people who can do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir job during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 day, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 evening, want to push cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 state-of-cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365-art a little furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r. That takes different skills.

Of course, it does not follow from my argument that what Steve says he asks in interviews are *cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right* questions to filter out such talent. My argument supports asking questions that are removed from day to day activities of coders.

Google needs people who are not stuck in today, but who can think of cool new things that will exist tomorrow.

6:54 PM, September 14, 2008  
Anonymous Anonymous said...

A Foundation for Computer Science" by Graham, Knuth, and Patashni

1:29 AM, September 18, 2008  
Blogger Pragmattica said...

Does anyone know any good examples of "disguised" NP-Complete problems? I've been reading about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most famous NP-Complete problems, and I would like to get some practice at picking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m out in situations that I might encounter while programming.

9:16 AM, September 22, 2008  
Blogger PancharaKutti:-) said...

Thanks Steve for this wonderful post.your post was mostly focussed on getting into google as a software developer . I would greatly appreciate if you could let me know what all stuff we need to prepare when we are preparing for an interview with google in software testing?

simplebuzz@gmail.com

8:26 AM, October 07, 2008  
Blogger Benjii said...

Great article, thanks for putting it togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r!

Anyone know what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response time is like for applying to Google?

3:52 PM, December 10, 2008  
Blogger Unknown said...

Thanks Steve, on your advice I looked up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 The Algorithm Design Manual and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is now a second edition available.

9:36 AM, June 24, 2009  
Blogger Pamela M said...

Wow. That was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most comprehensive 'How-to' for Google Interview. I dont have a CS background but I have been preparing for something that comes up in Google that suits my profile.

4:36 PM, June 27, 2009  
Blogger Jahanzeb said...

Thanks Steve for this very useful post. While I completely agree on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 importance of data structures and algorithms, I still wonder why Google gives so much importance to ONLY cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se two areas. Software engineering is a very vast dicipline. How about ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r areas such as requirement analysis, design, writing high quality and human readable code, documentation, software development models and methodologies, managing complexity, object oriented methodology, testing, debugging, etc etc etc etc?
I recenlty finished reading Code Complete, one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prominent books on software develpment since past some years. If I take it as an example, it does not even remotely discuss algorithms and data structures. How about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 topics it covers in its 35 chapters, spanning 800+ pages? Doesn't Google think those topics are also important in software engineering? (if not equally important).
Anyways thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 valuable post.

5:54 AM, July 15, 2009  
Blogger kesiena115 said...

Thanks Steve!

I remember ignoring cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se advice b4 my 1st phone interview. Needless to say, I nearly went up in flames.

I focused a significant amount of effort on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se areas in preparation for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next round.

Guess what? I'm currently on a summer internship with Google :)

3:03 AM, August 23, 2009  
Blogger Amresh said...

Thanks Steve, that was very informative and helpful. I would like to get on it right now. So much to study ....

amresh2k at gmail dot com

PS: captcha image: calcul ....
mere coincidence???

9:49 PM, September 08, 2009  
Blogger Ed Smiley said...

Actually, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DCL question is JVM dependent. See cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latest revision of Effective Java by Joshua Bloch for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gory details.

TIP:
Very typical though being an "expert" and getting it wrong. I strongly recommend testing any solution or in a standard text you find on those trivia and trick question sites. I found typos and misleading information on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Think science. Test your hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365sis.

5:43 PM, October 02, 2009  
Blogger Akshay said...

Steve what would you recommend as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 preparation outline for a testing position at Google?

9:38 PM, October 07, 2009  
Blogger crazzybouy said...

It was really amazing to read this whole blog and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments. I have always wanted to be in a job which will give me lots of opportunities to solve original problems. But till now i have landed in jobs which are not very challenging. Especially in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 systems kinda jobs, you do not get to solve algorithmic problems unless you are writing an OS on your own. At least thats what i have felt till now. Probably google is one such place. I have no idea. Never interviewed with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. May be if i can read up and digest some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stuff advised by stevey, i can give a shot.



I do agree that algorithms, data structures are really cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 foundations for designing developing good software. But my disappointment is it is not always easy to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se challenges in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job you do. So it is also a good idea to read/think/solve problems in your free time ( if you have ), even if you dont go for google interview. Provided one is very much interested in computer science, it acts like food for your intellectual hunger.

11:13 AM, October 08, 2009  
Blogger Unknown said...

Steve, thanks so much for writing this. Used it as a prep guide for my interviews - algorithm design manual rocks, I used it with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author's ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r book 'Programming Challenges'.

Reading this post really helped me deserialize knowledge that was stored away in my brain from college, and made all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 difference in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world.

I interviewed in Manhattan, and due to a flight delay arrived 4 hours before my interview instead of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 night before. This was a nightmare, sleep deprived and barely operating on fumes thanks to copious amounts of coffee, without using this article to manage my preparation - I surely would have gone down in flames. (esp with regards to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pointers on long term and short term prep. Warming my cache 30 min beforehand with some graph problems really paid off.)

I write this on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same day I accepted my offer, thanks for providing me advice on how best to focus my efforts. Looking forward to engineering orientation!

11:37 AM, October 12, 2009  
Blogger RuGirl said...

Thanks a lot stevey for your extremely important tips!
I'm a girl and a fresh graduate from South east Asia (Sri Lanka). I love coding and tomorrow I'm supposed to face an interview in a leading S/W company. So, I will keep cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tips in mind.
Btw.. I badly want to go through "cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 algorithm design manual" book. But couldn't find it anywhere here. Somebody please tell me a link to free download a copy... :(

3:35 AM, October 15, 2009  
Blogger Suraj S. J said...

Hi,
This is really very helpful.
Can you give me your mail address where i can forward you my resume !!
I really want to get into Google as a Software developer and i am trying since 5 months to get that 1st interview call.

12:32 PM, October 19, 2009  
Blogger Unknown said...

I got a job interview next week and this was a great help! I just pulled out my algorithm book that I used last semester ;-) Thanks for posting this.

3:27 AM, October 22, 2009  
Blogger Saurabh said...

That was a great post. Thank you for sharing your insights on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process.

For someone wanting to get a hold of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basics, Schaumm series book on Discrete Maths can be a good starting point. For developers in India Graph Theory by Narsingh Deo is pretty good.

Can anyone point out a good book for practical applications of binary, n-ary trees, graphs?

10:59 PM, November 29, 2009  
Blogger Gaurav said...

Hey Stevey,

I had applied to google long back, but still didnt get a call. Is google really choosy while calling in candidates or is it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no vacancies now.

Gaurav
(Mumbai, India)

11:27 AM, December 02, 2009  
Blogger Unknown said...

Steve - great article! Someone needs to speak with someone in your Finance Department to write cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same... just submitted my resume last week, keep your fingers crossed!

5:02 PM, December 24, 2009  
Anonymous Anonymous said...

Read your post, got cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job. Thanks man :)

8:04 AM, February 15, 2010  
Blogger man9ar00 said...

FYI, I was told by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recruiter turnaround time from interview to getting hired (if hired) would be like 6 weeks.

I wonder if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 test automation/tools/engineering positions cover this much territory as well. On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one hand, to very effectively test you need to know more than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developers or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application being developed, so that makes sense. But on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hand, to also effectively test you have to be "not a developer" with a different frame of mind, which would be knowing a different set of things, so that would seem like overkill to know so much of both worlds. And to add to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "not be a developer" mindset, if you think like one for testing, you may miss cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same bugs developers miss.

10:53 PM, February 16, 2010  
Blogger Lauren said...

Thanks Steve - I'm an IT recruiter and this really helped me prep my candidates. I have a number of clients who use similar strategies. I'd be happy to speak with anyone looking for non-technical interview tips or developers looking for new opportunities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Boston area. I wish you hadn't stopped blogging - I enjoyed your ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs as well.

12:49 PM, March 15, 2010  
Anonymous Anonymous said...

"If you don't know why you're doing what you're doing, you're just an Eclipse macro that happens to breacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365. Educate yourself."

Love cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 statement. Though Albert Einstein said "If you know what you are doing it is not research."
Are all jobs in google just hard core engineering? Working nights to meet deadlines?
Reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blog was fun, reminded me days when I was lecturing that stuff at university (except exams, too much reading). But for all practical purposes I prefer not to remember implementation details. Library is not far, as long as I recall class of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem.

But what about black magic, unsolvable problems solved in real time, NP complete solutions in real time?
The crazy science and research part? Is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re some place for that kind of people in Google?

Graph coloring is used for register allocation in compilers for better part of 30 years, and it is still NP complete problem, just some clever heuristic is used to find close to optimal solution. And that one did not grow on a tree, it was found out by someone (Chaitin, Briggs).
Is Google interested in those kind of people, that do not know what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are doing most of time, but occasionally, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results influences whole industry for few more decades?
Current job offers seems to be mostly publicity and management. Surely fun in it's own right, but not a job for everyone.

2:34 PM, March 26, 2010  
Blogger like_indigo said...

It is really helpful post!
But how about interaction designers? Do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y ask about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same things like algorithms and math for UX researchers or designers?
Do you know?

10:26 PM, May 02, 2010  
Blogger RailsBlogger said...

Well, as for WHY cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview process is flawed in some companies...

If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a person needed to do certain tasks, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HEAD (management) decides what is important. They are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ones who are responsible how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 person performs and pay to this person. If every interviewer (who's not responsible for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outcome) puts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own criteria, it means cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 head is missing. Big companies can afford to hire on a random basis, something will eventually work out, while small companies can be killed by one wrong hire. Now, imagine a big company hiring a new CEO based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same system of whatever every employee feels like.

12:34 PM, May 13, 2010  
Anonymous Anonymous said...

Hardehardehar... even your Grandmocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r could do that. Tell me it isn't a liability to be old and female in this industry.

I forgive you, because you're just so transcendently cool.;-)

So here’s cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 thing. If my daughter so decided, I could be a grandmocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r this time next year. Wouldn't that be exciting? Until yesterday, I'd never heard of Big-O. Most of my degrees are in linguistics. My last CS course was Mr. A's 8th grade intro to BASIC. And I was sitting quietly minding my own business, knitting socks or baking strudel or data mining or whatever it is grandmas do, and Google contacted ME. Go figure.

I taught myself C over 30 years ago, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n C++. I implemented my first hash table in 1979 and my first trie in 1982. And I've evolved my own method of approaching NLP applications that has enjoyed some success. So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer recommended I check out this blog, and read a bunch of books on algorithms, and I'm thinking I might just do that.

So clearly Google doesn’t throw you out automatically just because you don’t have a Cal Tech degree in CS. I told cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interviewer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unadulterated truth, and he was really nice. He didn’t say, “Oh. (long pause) Wrong number,” and hang up. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, I think Google’s success is undeniable, and I think it is clearly rooted essentially in competence, not marketing, and so clearly something about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir hiring process works. I think it’s probably fair to ask that I get my BS in CS now after 30+ years in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry. I probably would have been a better programmer had I done this long ago.

That being said, and having spent many years in many different venues (both high-powered, testosterone-infused and not so much), I’d be curious to know what my chances are of rising above cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worker bee in Google. What percentage of your great programmers are female? What’s cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 male/female salary ratio? Why is that?

That’s an open question. I feel Google has a right to select cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir employees in accordance with any reasonable criteria, and this is reasonable. There’s probably a bit of that hazing thing going on, but that’s not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole story. I have brocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs, and I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y became math/physics PhDs and I went soft and linguistical is GENETIC. I’m just a girl. I think my brocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs would have an easier time acing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Google interview, not only because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are better trained in math, but for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same reason cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y’re likely to beat me at racquetball. There. I said it. Are any of you recent MIT grads out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re as courageous as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 grandma? Care to comment? Didn’t think so.

But I’m not going to curl up and die just yet… My brocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first to admit that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y couldn’t have written my best code. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would also admit if prssed that if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y got cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir hands on my code now that its written, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could make it smaller and faster. For some reason, that particular problem doesn’t fascinate me nearly as much as it does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason is genetic.

I’ve lived a creative life, and I don’t want to be reduced to a worker bee, even a very well paid one. But it remains an open question for me how we best make use of everyone’s talents. Google advertises cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open, free, egalitarian, collegial atmosphere, where everyone has an fighting chance at being understood. Is it really so? If it is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n Google is even more remarkable than I thought.

2:06 PM, June 19, 2010  
Blogger Guennadi Vanine said...

I am shocked to see that so many people are reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 article of person who confuses:
- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exam on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unknown before it topics, or, even, with interrogation;
- skills with knowledge,
- working abilities with experience in taking tests
- work experience with having free time for training in puzzle and crossword solving,
- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 finding of suitable worker according to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 requirements of work/employer with personal ego satisfaction

Even more, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author alludes people that career success (employment) depends on buying unnecessary for work books, burning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time on training in puzzles, school math exercises and test passing, sorry, algorithms memorizing, instead of achieving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 working results, successful projects, which Google interviewers ignore in hiring process.

All specialists in Google are of such intelligence? and with such writing abilities?
Or it is some kind of a competitors spoofing attack on Google?

7:10 PM, July 05, 2010  
Blogger vi5in said...

Just ran into this post! Thanks a lot. I interviewed with Google about a 2.5 years ago at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir office in Tempe (which, incidentally closed down). I didn't get in and I was disappointed. They told me that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were impressed with my skills and that I interviewed well but that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y didn't have a position that fit my skill-set. I thought cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were just trying to make me feel good until I talked to my buddy who works at Google - he said that you guys try to match up people with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 jobs you have available and if you don't think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 skill-set or area of concentration matches, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you don't offer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job.

But yeah, you were spot on. I refreshed my algorithms and data-structures stuff and that really came in handy during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview.

1:33 PM, July 13, 2010  
Blogger NVRAM said...

Stevey,

Not sure if you still read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se posts, but I just wanted to say thanks for encouraging (me to) study before interviewing w/Google.

I actually ended up having a long weekend off just before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview, so I studied and played in Java (most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last year has been in C# and JS).

Anyway, it paid off. I start next week.

So thanks!
NVRAM

10:09 PM, July 14, 2010  
Blogger NVRAM said...

Stevey,

I just wanted to say thanks for encouraging (me to) study before interviewing w/Google.

I actually ended up having a couple of days off (plus a weekend) just before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview, so I studied and played in Java (most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last year has been in C# and JS).

Anyway, it paid off. I start next week.

So thanks!
NVRAM

10:28 PM, July 14, 2010  
Blogger Gaathi said...

Thank you very much for your tips. According to me, each and every tip of yours is important and useful for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview. Seriously I like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way of interview which gives cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 candidate an ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r chance to brush up some important concepts. Thanks once again.

3:59 AM, July 21, 2010  
Blogger Uncle Mikey said...

Steve -- just a note to say thanks for this article. Regardless of how my own upcoming Google Interview Adventure turns out, Skiena's algorithm book is already turning out to be "cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book I should have read years ago" and will almost certainly make me better at my job!

8:35 PM, July 21, 2010  
Blogger Edward said...

Thanks Steve! This is a really great post.

Does this apply to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Technical Account Manager position at Google? I'm wondering if Google will test TAMs with CS-centric questions as you've outlined here.

Good news is that I've got an upcoming on-site interview in Mountain View.

7:27 AM, August 17, 2010  
Blogger Nitish said...

Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 summary of everything. Definitely an eye opener for someone like me...

7:59 AM, August 25, 2010  
Anonymous Anonymous said...

Hi Steve,
I really want to work at Google.
I went for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 on-site interview. Because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 good feedback of phone interview and a great first 1:1 interview, I took it easy for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd and 3rd round of interviews and lost attention. I tried to catch up on 4th and 5th interview ( and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 5th interviewer was saying I finished his question ahead of time). But I didn't get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 job :( How to beg cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m for one more round of interview :( I am asking this because you said you did cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same.
By cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way your thin whiteboard marker rocks :)

10:38 PM, September 02, 2010  
Anonymous Anonymous said...

@Jahanzeb Farooq
You are right that those software engineering skills are required. And those can also be asked as interview question.(e.g. project management need project scheduling with deadline, write an algorithm which maximize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of releases in a month with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 various constraints and limited resources(box, employee etc). Also reserving a meeting rooms is a form of graph coloring problem :).

So your code complete is not tough because it has no exercise. Get a good software engineering book with exercise in it. you can find everything is falling back to good data structure and algorithm selection.

So Google is asking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right question. If you have any doubt please read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous sentence :)

10:52 PM, September 02, 2010  
Blogger Phillip J. Birmingham said...

My only quibble with your advice is that I only saw it Friday, and my phone screen is Thursday.

I suppose you can't be blamed for that, though.

1:32 PM, October 25, 2010  
Blogger A.J.S. said...

"Crap" - that's exactly what I am feeling like as I am writing this piece. I am not a God-sent CS major having cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sole objective of saving this earth from people who don't know CS concepts.

While I did graduate with honors from a "Top 10" school, majoring in CS - I feel I am no where close (in CS terms, algorithms, Big Os) to most people who have put cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir comments here.

I have been working with C++ for last 5 years, but at a much higher level - mainly doing application development in C++ and VC++. Also, I have always worked in telecommunications domain, thus never got into situations where I had to deal with tons of data, search through that data, sort cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data and do ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r "cool" things with it.

I have worked in 4 different companies - ranging from startups to mid-sized to Fortune 20 - in last 6 years (by choice, and willingly), and I must admit I have always been cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Rockstar" in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 teams I have worked in. I don't know much in CS aspect of thing, really, but I am cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guy who gets things done - by hook or by crook, or sometimes by fluke.

Now, I don't know what a certain Google recruiter saw in my resume, but I now have a phone screen scheduled with G next week. And I know already, I am totally going to get screwed. I am more of a "Software Developer" than a "Software Engineer" or "Computer Scientist". I understand and use object-oriented paradigm, all common design patterns, solid networking concepts - but hardly any core data structures like Graphs or Trees. Maybe Maps\Hashtables at times. So reading all this, I am already shitting in my pants, and I feel as if I am going to get raped come next Monday. Maybe I should just inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recruiter that I am not in a position to take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview, I don't know if that's rude or whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r wasting someone's 45mins-1 hr is rude"r".

I don't blame Google for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir interview process, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can afford it right now so why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 heck not. All my life I wanted to work for Google, but looks like I just got a reality check... Pray for me guys, at least I can get a graceful denial...much better than people at Google thinking "what a pile of $hit this dude was"

8:06 PM, November 02, 2010  
Blogger A.J.S. said...

Second Part:

I have worked in 4 different companies - ranging from startups to mid-sized to Fortune 20 - in last 6 years (by choice, and on my own terms). I must admit I have always been cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Rockstar" in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 teams I have worked in. I don't know much in CS aspect of things, really, but I am cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guy who gets things done - by hook or by crook, or sometimes by fluke.

Now, I don't know what a certain Google recruiter saw in my resume, but I now have a phone screen scheduled with G next week. And I know already, I am totally going to get screwed. I am more of a "Software Developer" than a "Software Engineer" or "Computer Scientist". I understand and use object-oriented paradigm, all common design patterns, solid networking concepts - but hardly any core data structures like Graphs or Trees. Maybe Maps\Hashtables at times. So reading all this, I am already shitting in my pants, and I feel as if I am going to get raped come next Monday. Maybe I should just inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recruiter that I am not in a position to take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview, I don't know if that's rude or whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r wasting someone's 45mins-1 hr is rude"r".

I don't blame Google for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir interview process, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can afford it right now so why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 heck not. All my life I wanted to work for Google, but looks like I just got a reality check... Pray for me guys, at least I can get a graceful denial...much better than people at Google thinking "what a pile of $hit this dude was"

8:07 PM, November 02, 2010  
Blogger Erik Reppen said...

"Especially if you're Alan Turing, in fact, since it means you obviously don't know C++."

Funniest damn thing I've read in months.

10:10 AM, November 26, 2010  
Blogger Unknown said...

Awesome article. I was thinking about trying my luck at Google (about to get my Bachelors of Science in Computer Science). While I know C, C++ and Java, my main language is Python (pretty proficient in it too).

I was wondering if Google still places a heavy emphasis on Java, and whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r or not I should do/learn more of it before I apply and get interviewed. Would I be able to make it through with just Python knowledge?

8:44 AM, December 13, 2010  
Blogger Abhishek Ghose said...

I realize this is a very old post, and it isn't unreasonable to believe I won't see a reply- but, here goes anyway: What is Google's usual approach to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hiring procedure for a specialist? I am a MS, with research experience in NLP and Machine Learning - should I be expecting a different sort of interview?

12:13 AM, December 29, 2010  
Blogger Unknown said...

Of course cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blog is enormously helpful and entertaining! But for me it had cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se moments of deep inspiration! Gracias!

8:50 AM, January 22, 2011  
Blogger sayasree said...

I studied cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following books for Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics about 25 years ago:
-------
Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics For Computer Scientists And Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365maticians
(Paperback)
by Joe L. Mott,Abraham Kandel,And Theodore P. Baker
-------

The book is easy to read (does not scare cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reader with lots of symbols and equations aka pure macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics).
At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 each chapter, you will find good number of exercises marked from one star (*) to to five stars (*****) indicating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 level of difficulty. I think is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best books are Discrete Macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics. Indians can buy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 book online on FlipKart for mere INR 315 (about US$8).
--------
URL: http://www.flipkart.com/discrete-macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matics-computer-scientists-macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365maticians-book-8120315022
--------
The books covers counting problems (Combinatorics), Reccurrence relations, and Graph Theory.

Good luck with your Google Interview.
--Saya Sreenivasulu
Software Engineer, India/UK.

10:54 AM, February 13, 2011  
Blogger sami said...

Hi Steve

"For God's sake, don't try sorting a linked list during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interview."

Why not? Don't get it...

12:57 AM, February 22, 2011  
Blogger Kompila said...

These are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reasons Google is where it is right now and why it will continue to be above all....(even if some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people can't understand it...)

I am preparing for my first phone screen and i am chichek shit...I'll post later to let you know how it goes. Peace!

10:19 AM, April 06, 2011  
Blogger Unknown said...

Very useful post.
Thanks a lot :-)

12:55 PM, April 21, 2011  
Blogger Evan said...

Hey, Steve,

I'm a little late to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 party, but just wanted to say thanks because your advice helped me focus on what to study for round 2 with Google (I interviewed a year ago and got turned down). I'll be starting a front-end software engineering position in July.

10:20 AM, May 06, 2011  
Blogger Hrushikesh Deshmukh said...

Thanks Steve...this was really very helpful.I recently had a phone screen with Google and this really helped me for preparation.I am a Mechanical Engineer who is working as Software professional and almost illiterate about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Algorithms,data structures(But I know how to use Java Collections) and overall software engineering.
After reading all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recommended algo and ds books in 5 days,somehow I survived cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 35 mins of phone screen but I am not sure if I can survice in next round (if any).
I am doing great as a Java Programmer without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se things.But after I discovered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 magic world of algorithms my perspective of looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problems really changed.Now I can imagine why Google interviews are around algorithms and data structures.But as I am not a native computer science/engineer...cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is still lot to learn for me and it might not be possible in a short span of 2-3 weeks.Do you think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is any place for me in Google? Could you please suggest me some books I can refer.Right now I have "Introduction to Algorithms",MIT and "The Algorithm Design Manual" (For graphs)

9:36 PM, May 31, 2011  
Blogger Chicken McLovin said...

Very helpful Stevey! I actually did some coding for your game Wyvern, and have been tossing around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of getting out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world of Defense and looking at moving on to something that actually challenges me as a software developer (racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than an Systems type Engineer). Look forward to applying and one day working for a company like Google (... like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r!)

5:15 AM, July 19, 2011  
Blogger Mauricio said...

"don't say choo-choo-choo while you are thinking".
So THAT's what I did wrong...

8:03 AM, July 20, 2011  
Blogger Anand said...

Hi Stevey. May I know your email ID want to forward my resume

8:26 AM, July 28, 2011  

Post a Comment

<< Home