Live data from Hacker News

Inverting Binary Trees Considered Harmful

jasq.org

191–200 of 225 posts

Re: Inverting Binary Trees Considered Harmful

#191

IMHO, I feel like people who are not up to it don't agree with coding interviews. Also, in my experience, the employers that didn't check coding skills at the interview had the worst engineers I met (surprise!). Now I can see why it's easy to disagree with interviews that check your algorithms 101 knowledge: that stuff is really really rarely used in real-life and you can just google it if you ever need it. But! Keep…

I think its just inbreeding. Folks who know that stuff, hire folks who know that stuff. Like any other industry we are self-selected for similar types. Never mind the discrimination issues; we're a very narrow-minded population. Better engineers could be found with other sieves.

Re: Inverting Binary Trees Considered Harmful

#192
post #74

Earlier quoted context omitted.

While that's good advice, I don't follow it. If a company doesn't have their shit together enough to coordinate an interview schedule and get the right people into the right room at the right time with my resume in their hands, ideally in their hands ahead of time, I don't want to work there. It's a basic competence test.

"It's a basic competence test." They feel the same way about you having your own resume in an interview.

I feel its more of a talisman. Who reads those things? Not at an interview; the time for resumes is over, you passed that sieve already.

Re: Inverting Binary Trees Considered Harmful

#193
post #74
post #50

Earlier quoted context omitted.

I was told by someone many years ago to always take a copy of my resume with me to an interview. That advice has paid off a couple of times. These days I also keep an email draft ready to send.

While that's good advice, I don't follow it. If a company doesn't have their shit together enough to coordinate an interview schedule and get the right people into the right room at the right time with my resume in their hands, ideally in their hands ahead of time, I don't want to work there. It's a basic competence test.

Bring it anyways. If they need it, you can still count it against them, while not hurting your own chances if the job ends up being worthwhile despite failing this test.

Re: Inverting Binary Trees Considered Harmful

#194
post #90

Earlier quoted context omitted.

One reason bringing your resume is a good idea is because scumbag recruiters sometimes modify your resume, inserting the right keywords to get you the interview in the first place.

I find if you use PDFs it happens significantly less

Or they just get all the more butchered. Last time a recruiter was done with my resume, it looked so bad that I would've never interviewed me.

Re: Inverting Binary Trees Considered Harmful

#195
post #11

Yeah I remember the Google interview a few years back. I did it mostly for fun, and because their recruiters kept contacting me. So there we were, building a tree out of a forest of existing smaller trees or such. That was after they couldn't find my resume, and used a 5 year old one they found some place. They seemed annoyed and tired. By that time I felt nothing short of me proving P!=NP would have help changed the…

They don't start looking at your resume or asking what you have been up to until you pass the technical interviews. Which means that if you resume or experience isn't up to snuff, the interviews are a complete waste of time for you because of a decision that takes them five minutes to make.

That seems backwards to me. The resume is supposed to help determine who to spend time interviewing with. If you do good in the interviews, what is on the resume doesn't much matter except for standard background checks.

Re: Inverting Binary Trees Considered Harmful

#196
post #60

I'll be the contrarian and claim that inverting a binary tree is a perfectly reasonable interview question. (Although not anymore now that it's famous). It combines basic background knowledge (what is a binary tree and how is it structured?), ability to reason logically (binary tree algorithms are often recursive, "inverting" a tree with no children is a no-op, otherwise you want to swap the children, and the childre…

In your daily programming activities, how many times do you have to implement a binary tree? I'm genuinely interested.

Normal web dev job? Never. Having fun with genetic algorithms? More than once.

At my day job, I did have to write a CSV parser once. Once. Don't quite remember why using an existing solution wasn't an option. I think the input wasn't exactly proper CSV format, but was very similar.

Re: Inverting Binary Trees Considered Harmful

#197

Twitter interview went sideways, I got one shot with a question (that I won't share) that required finding Hamiltonian path in a tree, over the phone of course. I am not sure what is the mindset of the interviewer. I am hiring engineers (systems, software and security) in the last 5 years, got trained up on recruiting by Amazon, so I would say I have a pretty good understanding on hiring. The right approach with thes…

>I got one shot with a question (that I won't share) that required finding Hamiltonian path in a tree I'm guessing this is not the complete question, rigth? Because you can only find a Hamiltonian path if the tree itself is a path.

This is the solution. The question I can't tell cause I agreed not to share. I guess there might be another way of solve it, but it does not take away the meaning here, asking very complex problem over the phone is not a good way of figuring out if the candidate would be great on the team.

Re: Inverting Binary Trees Considered Harmful

#198

[speaking for myself only, not my employers past or present] [I am guessing this will be an unpopular opinion, so posting anonymously] I feel that interviews are essential. Every alternative I've heard seems to not work. I've tried. 0. Review their contributions to open source --a. Some brilliant people have none - they prefer to get paid for their work & not disseminate it openly for free - that does not mean they s…

Thanks for going ahead and expressing what you think may be an unpopular point of view. Your points are fair, and are a bit part of why I feel so ambivalent about technical interviews. While I don't really like how they're handled, I think they may be necessary, and they may be an unfortunate byproduct of a good thing.

For instance, I majored in math, not CS. I took some basic computer science, but much of my programming was done in math classes, sometimes informally, sometimes as part of the course itself, and sometimes as part of those optional 1-2 unit pass/fail labs.

When I first opened a data structures and algorithms book, I was slightly amused by what I'd already covered and what I hadn't. For instance, I'd written DFS and BFS code for my graph theory class in college, and I'd done a lot of the linear programming at the end of the algorithms book. Various numerical programming exercises had touched on a lotos other things, recursion, lists, and so forth. But there were gaps, and I've studied a lot on my own for them.

Now, in most fields that wouldn't be possible. You can't study something that overlaps quite a bit with law, nursing, or medicine, and then fill in the gaps on your own, demonstrate knowledge to an employer's satisfaction, and go off to work as a lawyer, nurse or physician. I think this is a pretty wonderful thing about software development, and things like the google "entrance exams" are actually part of why it is possible.

I didn't get an offer from google, and reading these threads, I'm realizing that I should have taken months, not weeks, to review. However, I didn't encounter any of the arrogance or hostility, I found that the interviewers did a good job keeping things friendly and collaborative.

That said, it's stressful. People in other fields are often kind of astounded to hear what we go through. You have nowhere to hide, you are at the whiteboard, with a pen, getting grilled technically, and you only have 45 minutes to solve the problem. You fear looking like an idiot, even if the interviewer tries to be positive. You may feel like an idiot, even if the interviewer had no intention of making you feel this way and made an effort to make sure you didn't. And of course, there are plenty of interviewers who may actually kind of enjoy making someone squirm a bit.

So while I may have a somewhat more positive view of the tech "exam" than a lot of people here, I still think something is broken here. I've discussed this a few times with people here on HN, and I honestly do think that three big interviews may be roughly equivalent to taking the bar exam. Seriously. I could have studied for several months (though like I said, I have bigger gaps to plug than a CS major probably would). I read a blog post about a guy who passed the California bar with 100 hours of study. People talk about the "grueling" three days of exams. Well, interview at google, amazon, and microsoft. Between phone interviews, in person interviews, and so forth, sure it can get to that level. Even if it falls short of "bar exam" level effort, the fact that we're starting to talk about it reasonably in the same breath shows just how much effort goes into it.

And here's the problem - it's just an interview. You get no feedback, no credential, nothing. You might do well enough to "pass" under a reasonable set of scoring criteria, but all you get is a "no hire" with very minimal information about how you did.

I've heard people say (again here on HN) that they'd happily take a bar exam for software if it meant that they could be done, for once and for all, with the never-ending series of technical exams that we have to do over and over. I'd be ok with studying three months, six, hell, even a year. Because the exam would be consistent, rigorous, and would provide me with a lasting credential. I'm just not willing to put this sort of effort into a single interview that may be decided very capriciously.

So, all in all, I see merit in these difficult technical exams (first step, let's stop calling them interviews). I think the whole thing could be handled vastly better, though.

Re: Inverting Binary Trees Considered Harmful

#199
post #74

Earlier quoted context omitted.

While that's good advice, I don't follow it. If a company doesn't have their shit together enough to coordinate an interview schedule and get the right people into the right room at the right time with my resume in their hands, ideally in their hands ahead of time, I don't want to work there. It's a basic competence test.

"It's a basic competence test." They feel the same way about you having your own resume in an interview.

Lol. I do bring my own resume with me at interviews, but I've never been in the need for that. If they don't have one, they usually have me that can narrate it. Otherwise they should have done their homework.

Re: Inverting Binary Trees Considered Harmful

#200
post #148
post #69

Probably my favorite hiring writeup of all time. So good!

I think you are underestimating the sheer magnitude of writing that is that piece of literature.

The subject matter might elude me in its technical details, but oh how he got his point across ;)
Post reply on HN