Live data from Hacker News

Getting a job in software development: A Reddit discussion round-up

reddit.com

41–50 of 50 posts

Re: Getting a job in software development: A Reddit discussion round-up

#41
post #36

I recently interviewed a master's student for a job at our company. I asked him a very traditional question, and then was going to follow up on it with increasingly more difficult questions to see how deep his knowledge was. I wasn't out to "get" him at all, I hate interviewers that ask super-hard questions, I'm more interested in having a good conversation with the person to try to get a feel for what they really kn…

So I asked him an even simpler question: Given a binary search tree, write code to find a particular value. If you can't find the value, then return me the next smallest value. For example, if the tree contains 1, 2, 3, and 5, and I ask for 4, then return 3. Out of curiosity, what is the solution? I would imagine something like keeping a variable of the highest found value under 4 and if you don't find 4 then you use…

Start at the root of the tree; at each node:

  - If the node value matches, return it
  - If the node value is too low:
    - If possible, step right and repeat
    - Otherwise, return this node value
  - If the node value is too high:
    - If possible, step left and repeat
    - Otherwise, return the value of this node's predecessor:
      - Walk up until you traverse a right link
      - Return the node's value
      - If you hit the root, the requested value is less than any value in the tree

Re: Getting a job in software development: A Reddit discussion round-up

#42
post #36

I recently interviewed a master's student for a job at our company. I asked him a very traditional question, and then was going to follow up on it with increasingly more difficult questions to see how deep his knowledge was. I wasn't out to "get" him at all, I hate interviewers that ask super-hard questions, I'm more interested in having a good conversation with the person to try to get a feel for what they really kn…

So I asked him an even simpler question: Given a binary search tree, write code to find a particular value. If you can't find the value, then return me the next smallest value. For example, if the tree contains 1, 2, 3, and 5, and I ask for 4, then return 3. Out of curiosity, what is the solution? I would imagine something like keeping a variable of the highest found value under 4 and if you don't find 4 then you use…

I wrote it out in python for you: http://pastebin.com/5hX9ZMvB

and the solution written out in words below, also in python (I like this one better)

http://pastebin.com/PapfMhfU

Re: Getting a job in software development: A Reddit discussion round-up

#43
post #24

Comments here seem to be about the importance of demonstrating competence. While this is of course important, I feel that it's equally important to make sure you actually want to work in an organization. This means fitting in, tolerating corp BS/insanity well, being expected to tone down the cowboy ethos, and appearing productive at all times. In other words, being the oft-mentioned "team player".

Be a solution, not a problem.

Re: Getting a job in software development: A Reddit discussion round-up

#44

Earlier quoted context omitted.

Coming from a pure math background, I find CLRS to be very easy to read. YMMV based on prior experience, but it's not at all unreasonable to learn the basics in a week or two if you're studying it full-time.

I'm not talking about "picking up the basics". I doubt that level of knowledge will get you a job offer from Google. I'm extremely skeptical about your claim. Just reading through the chapters will take the better part of a day. Working through the exercises and thinking about what each of these algorithms will take much longer.

For reference, MIT has two undergrad courses - 6.006 and 6.046 - which use CLRS, covering about half the book each. An undergrad course at MIT is expected to take up about 140 hours, including lectures, reading, and assignments. So, working for 10 hours per day, one could theoretically complete each course in two weeks.

There are a few other things to consider. One is that it's probably not necessary to go through all of the material to be able to manage interview-type questions. (It would obviously be best to undertand CLRS from cover to cover for the purpose of becoming a better engineer, but that's not what's under discussion.)

Second, it's really questionable whether someone can effectively work for 10 hours per day on this sort of material. My guess is that people fall into two categories - those who are not used to algorithmic thinking, and those who are. People from the first category would not be able to absorb that much new information that quickly, so for them, what I said is inaccurate. However, people in the second category would not only be able to process CLRS in large batches, but would need much less than 140 hours to work through half the book; someone familiar with the underlying concepts (basic programming, probability, etc.) and with a background in proofwriting could very well get through enough information to answer interview questions twice as fast or faster, so in about a week or less.

Re: Getting a job in software development: A Reddit discussion round-up

#45
post #37

Earlier quoted context omitted.

This coincidentally depresses the marketability (for a certain class of job) of older workers and demographics less likely to achieve a degree from a top N computer science program. If those older workers and others are equally or more skilled than the younger ones implied by your question, smart companies will realize the discrepancy and hire them. In addition, if older workers know that firms place a "high value on…

If those older workers and others are equally or more skilled than the younger ones implied by your question, smart companies will realize the discrepancy and hire them. The invisible hand of self-interest only works if smarter contenders actually appear in the marketplace. If there is some invisible hand of stupidity (and groupthink) that affects all companies above a certain size, then we are hosed. Why is it that…

The Gervais Principle:

http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-o...

Re: Getting a job in software development: A Reddit discussion round-up

#46
post #24

Comments here seem to be about the importance of demonstrating competence. While this is of course important, I feel that it's equally important to make sure you actually want to work in an organization. This means fitting in, tolerating corp BS/insanity well, being expected to tone down the cowboy ethos, and appearing productive at all times. In other words, being the oft-mentioned "team player".

Different sports have different levels of cohesion in their teams. Rugby vs. American Football, for instance.

Re: Getting a job in software development: A Reddit discussion round-up

#47
post #36

I recently interviewed a master's student for a job at our company. I asked him a very traditional question, and then was going to follow up on it with increasingly more difficult questions to see how deep his knowledge was. I wasn't out to "get" him at all, I hate interviewers that ask super-hard questions, I'm more interested in having a good conversation with the person to try to get a feel for what they really kn…

So I asked him an even simpler question: Given a binary search tree, write code to find a particular value. If you can't find the value, then return me the next smallest value. For example, if the tree contains 1, 2, 3, and 5, and I ask for 4, then return 3. Out of curiosity, what is the solution? I would imagine something like keeping a variable of the highest found value under 4 and if you don't find 4 then you use…

[deleted]

Re: Getting a job in software development: A Reddit discussion round-up

#48

I love this comment: " At the end of a whiteboarding interview whenever the interviewer asks "do you have any questions for me?" I'm always tempted to hand them the marker and say "Imagine you are given a binary tree with elements containing linked lists ..." " Have any of you guys ever done this? How did it play out?

It depends if the interviewer has a sense of humor. Some people are so stuck up about that kind of thing although.

Re: Getting a job in software development: A Reddit discussion round-up

#49
I'm surprised to see information missing on source control, automated testing and automated deployment.

You'd be surprised how many blank stares you get back from candidates when you ask questions about the very fundamentals of writing maintainable code in a team.

Re: Getting a job in software development: A Reddit discussion round-up

#50

Earlier quoted context omitted.

I'm not talking about "picking up the basics". I doubt that level of knowledge will get you a job offer from Google. I'm extremely skeptical about your claim. Just reading through the chapters will take the better part of a day. Working through the exercises and thinking about what each of these algorithms will take much longer.

For reference, MIT has two undergrad courses - 6.006 and 6.046 - which use CLRS, covering about half the book each. An undergrad course at MIT is expected to take up about 140 hours, including lectures, reading, and assignments. So, working for 10 hours per day, one could theoretically complete each course in two weeks. There are a few other things to consider. One is that it's probably not necessary to go through al…

This argument is ridiculous.

I don't doubt your claims about the amount of the work the two courses at MIT require. However, you're forgetting that for some of those 140 hours you're being lectured by the top professors in the area. You're unlikely to have a question that they can't answer. Other parts of those 140 hours are spent talking with some of the smartest students on the planet. Some more of those 140 hours are spent solving problems carefully designed to maximize understanding. If you can't figure something out, you have fellow students, TAs and professors to harass. Somebody studying alone at home doesn't have this environment.

And then you need to take into account the fact that if you're undergrad at MIT you're already smarter than 95% or so of the population. Basically, the takeaway here is that your 70/140 hour number applies to something like 0.1% of the population under the assumption that they're studying CLRS at home.

You need to see this in context. This is advice for CS undergrads looking for jobs. This advice is being given out on reddit. Anybody who needs this advice (and CS undergrads from MIT certainly don't) will not be able to work through CLRS in a week.

Post reply on HN