Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The basic linked list algorithms are simple enough that a software engineer -- certainly one with a CS degree -- ought to be able to implement them from first principles. And the point of the interview question isn't specifically whether the interviewee can implement a simple linked list algorithm from first principles, it's whether the interviewee can implement anything from first principles.


Sure, but I think the thread attempts to answer why linked lists specifically are so popular in interview questions, as opposed to some other relatively simple data structure like e.g. ring buffers.


The question on the interviewee's mind is whether the interview is a proxy for first principles ability or whether they really want you to implement such-and-such exactly correctly. In principle I agree with you -- I had the conversation recently that I have no idea how to implement a red-black tree anymore and would probably fail a "balance a red-black tree when inserting X" type of question, even though I had to do it perfectly in C++ in school. I'm not even sure which color has which constraint by convention. But I more or less remember the constraints, and as I talked through it I sort of remembered how the constraints leads to self-balancing (and an approach to do it). Given time and a responsive interviewer who can answer even dumb questions like "red-black trees are defined to be binary trees right?" I could probably produce something on a whiteboard, but I have my C++ code somewhere and I'm pretty certain I couldn't reproduce that precisely on a whiteboard. What I could do would satisfy some interviewers probably, but would not satisfy others.

On the interviewer side of the table, if there's a particular property I want to test for, then I'll try and test for it directly if it's possible. One such property was "ability to make changes to a program one didn't write and can't fit entirely in one's head" since that's the majority of employed work (especially at larger companies) and I've had successes testing that directly on intern candidates by having them do just that in a stripped down version of part of some front-end code.

There are a lot of employed devs who seem to struggle with first principles. I don't think it's a good thing and would want to filter on it for a company I controlled from the start... But if we want to test for that specifically, I'm not convinced data structure questions are a good way to do it. Since discrete math should be a standard part of the curricula, I think asking for some proofs of certain theorems given certain axioms and reminders of the rules of inference would be more fruitful. But that would likely be even less popular than linked list style questions. In the limit what I'd really be most satisfied by in terms of having nice proxy measures on cognitive abilities like first-principles reasoning, (system|task|...) decomposition, etc. would be testing IQ and big-5 personality traits directly, plus interviewees should only have to do it once (or at infrequent intervals) rather than every company having their own process, though I think legally you'd have to pay the Wonderlic tax to do it.


So where do I fit? (Very) High IQ, max openness, min consciensouseness.

You can also game big 5 and IQ.


If you could game big 5 and IQ the way people game other things, the world would look a lot different... this isn't to say that on an old static test like http://iqtest.dk/main.swf you couldn't give someone the answers or train them to perform better on raven matrices but active researchers and I assume companies like Wonderlic aren't asleep on that sort of thing.

If it were my company I'd take all the high IQ people I could get. I'd probably learn to filter on other things too at the risk of everything blowing up, but getting a lot of smart people together can also lead to amazing stuff (that may not benefit me/the company, but hey). High conscientiousness is a bonus for get-(business-relevant)-stuff-done efficiency, but I don't think it's a hard requirement. I'm not "min" in conscientiousness but I am a slacker below average, nevertheless I seem to get by and have generally kept bosses/teams happy with my output levels.

I think you fit at a lot of companies that don't take those things into account, too. High IQ alone is a big advantage for a lot of the other measures (or gaming such measures) companies like to use. Though you might find a lot of the work dull and/or feel lonely if there aren't any local peers to chat with at your level. On the other hand tech salaries are high; I used to think I might fall into a pattern of "work 1-3 years, take a year or two off depleting savings, go back to work..." but then I realized if I just stretch myself for a long enough continuous period (which isn't actually that long) I ought to be able to "retire" and only go back to working for the Man by choice.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: