← Back to context

Comment by always_good

8 years ago

I can agree with Jonathan Blow's responses in so far that you should be able to invert a binary tree in an interview if that's the sort of knowledge you need on-call on the job and there's somehow no room for rustiness because it's some sort of high stress environment that needs immediate results (btw that doesn't describe jobs at Google).

But then he reveals that he's completely full of himself when he suggests that "sorry, you're not a good programmer then."

For writing non-trivial software basic knowledge of data structures is needed. Especially with performance requirements like Google has. In some areas you get away without such knowledge but if you bild a dependency management tool like brew and don't know what a tree is, this is suspicious.

In the interviews I did with Google, Facebook and others (mostly for fun, not profit) if I didn't know an algoithm from top of my head I typically could talk to the interview and discuss th problem and they'd point me in the direction. Sometimes those interviews are less about being able to remember the thing, but the thought process to get there.

Aside from that: Google clearly optimizes on not hiring too many bad people, but rather leave a few good candidates behind.

  •     > if you build a dependency management tool like brew
        > and don't know what a tree is, this is suspicious
    

    They didn't say that they didn't know what a tree is. They said they couldn't invert a binary tree in the interview.

    It's a stretch to start suggesting that someone doesn't know their basic data structures because they failed some riddleware on the spot.

    You can say that they aren't what google was looking for, but my problem comes when someone tries to dismiss another as a bad developer because of that.

    • Well, inverting is a trivial operation, pseudo-implementation: swap(left, right); recurse(left); recurse(right);

      If one doesn't know what is meant one can talk to the interviewer and get a hint about what is meant. It can be that the interviewer is bad and misleading, but usually they have some specific training, this seems unlikely as the candidate didn't complain about the interviewer but admitted he had no clue.

      The follow-up question would probably be the question about the complexity, that is also trivial f you know fundamentals of big O notation, as one has to walk over each node.

      It's hard to find a more trivial algorithms question. Algorithms are fundamental knowledge for programmers (other than script kiddies)

  • Isn't the typical practice amongst software engineers, when you don't know something off the top of your head, to cut and paste from StackOverflow? Why do we need day-long job interviews and whiteboards to ascertain that?

The name "Jonathan Blow" and the words "full of himself" pretty much go hand-in-hand.

Haha, I've been a programmer for most of my life and I don't know what "inverting" a binary tree even means!