Hacker News new | ask | show | jobs
by sergiotapia 4895 days ago
I became unreasonably angry while reading this. I guess it struck a nerve with me for some reason.

During my interviews, I was very charismatic, confident in my skills, was asked technical question that were things I would need day in day out. I landed the job on 100% of those interviews.

There was this one time were the guy kept asking me crap I would never EVER need while working for his company.

Binary tree's, linked lists, pointer arithmatic. "What the fuck?", I thought to myself. This was for a C# developer position for a small 20 person company. Anyways, I thanked him for his time and left. He called me with an offer two weeks later, and I declined. Not going to waste my time with that crap.

---

99% of us will never work for Google, or Amazon, or Twitter - but for your run of the mill software shops. And that's ok.

4 comments

Out of curiosity, why do you consider binary trees, linked lists, and pointer arithmetic to be so out of the bounds of possibility for work at a job? Those strike me as skills I might find invaluable in one of my software engineers depending on the job.
You probably won't be doing pointer arithmetic in C#. It's been about 5 years since I wrote any C#, but I don't remember any... mostly I remember it as a Java clone, which would preclude pointer arithmetic.
C# has pointers (although you're rarely going to use them)
You're rarely going to use them...so let's ask a candidate about them.

This analogy is proving more accurate as I read thru the comments.

You're right on the rarely using them part, I don't think I used a single one. Thanks for the clarification!
The only time I've ever used them is to speed up drawing. Bitmap.SetPixel is super slow compared to taking a pointer to the raw image data and writing there directly.
Let me offer an explanation: maybe the job he was applying for asked for knowledge and experience in Java, Spring, Hibernate, Grails, Javascript, SQL, CSS, writing stored procs with PL/SQL, performance tuning, node.js, and Git...and the binary trees/linked lists portion only pertains to Java (and maybe Javascript?). More specifically, maybe the guy just hasn't had the need, for whatever reason, to use a binary tree or a linked list recently. I doubt he runs around saying "it's April, I haven't used a TreeMap in a while, let me use one now so it's fresh in my mind for next year's interview".

The point I'm trying to make is that some requirements are very, very wide/broad. And then they'll take one piece of that broad pie and decide to go very, very deep.

And then there's the death knell...you spent time developing deep expertise in something no longer actively used. This applies more to frameworks than languages (i.e. Struts, Prototype, Dojo, etc.)

It's a no-win situation all around.

While I can't speak for the OP, in that situation, I would take this to mean that they aren't sure of the skills they actually need so they're asking general questions that may or may not reveal whether or not we (the company and myself) are a good match.

Granted, if they ask a few of those and then jump right in with more specific questions I would just count that as the qualifier/anti-BS filter.

If I was only given general softball 100 series CS course questions I'd probably end up trying to wrestle more info about the position out of the interviewer unless I was really hard up for a job and was willing to put up with potentially unfulfilling work for a while.

Edit: Grammar

>find invaluable in one of my software engineers -depending on the job-.

I think you kind of answered the question yourself. ;)

I'm actually insanely jealous of you if a "What the fuck" interview was about binary trees and linked lists. All my interviews have /started/ at that point and gotten way worse. I still get anxiety thinking about some of my job interviews.
May I ask what companies you've been asked these questions for?
Don't want to throw anyone under the bus, many of them are actually YC funded! I respect the companies a lot, but their interviews are incredibly stressful.
I'd be inclined to side with the interviewer on this one. Data structures such as binary trees and linked lists may be abstracted away by many modern frameworks, but every abstraction is leaky and if you aren't aware of what's going on behind the scenes, you can absolutely crucify your application's performance. Binary trees, linked lists, hashtables and so on have very different performance characteristics, and if you choose the wrong one for the wrong situation, you can end up with code that gets unbearably slow surprisingly quickly. The difference between O(n^2), O(n) and O(log n) can be massive on datasets of only a few thousand, and even small 20 person companies can end up having to deal with datasets much larger than that.

This is all fairly basic stuff that should be a core competency for every software developer, and the fact that it isn't is the reason why so many Flash- and JavaScript-intensive websites are such resource hogs. The kind of things that Google, Amazon and Twitter are into that you'll never EVER need in a small 20 person run of the mill software shop are things such as machine learning, compiler theory, Bayesian statistics, image recognition, and so on.

I don't disagree with your decision to leave, but it is possible that your interviewer was just a crappy interviewer and might not be a crappy colleague.