News for hackers. Stuff that matters.
Re:Asana Engineering Interview Guide by dvt on Monday March 28, 2016 @06:11PM (#11377818)
I came looking for some new or interesting way of doing tech interviews, but it's the same typical SV bullshit. Lol: "Hashes, sets, heaps, binary trees, linked lists, all the usual suspects." Yeah, I spend most of my time fiddling with binary trees and hashes at the office, said no one ever. I'm a strong believer that there are two primary ways of testing someone's coding ability:

1) Open-source, or otherwise public, contributions.

2) Real-world take-home assignments.

I've opted out of interviewing people because it's such a miserable experience. I guess I'm just not a sadist that enjoys watching some poor 22-year old squirm in his chair because he can't remember what the upper bound on the insert operation of a red-black tree is.

What a joke.

Re:Asana Engineering Interview Guide by tptacek on Monday March 28, 2016 @06:58PM (#11378145)
I agree with this sentiment wholeheartedly but bounds on balanced binary trees are worth knowing (like lookup, it's log n), since that fact is one of just two reasons you'd ordinarily ever use a tree.

However, I will offer you some Interview Candidate Self Defense, which I'll repeat from something I yelled on Twitter a few weeks ago:

If interviewers ask you about bounds for data structures, pick a fight with them over hash table complexity. If they believe it's O(1), argue it's worst case O(n). If they want you to say worst case O(n), argue that it's in the real world always O(1). It doesn't matter which is right, because these kinds of questions aren't about technology, they're about status signaling. Be the alpha nerd!

As a bonus: interviewers are evaluating you for X-factors like "confidence". You know who never got dinged in an interview for lacking "confidence"? The person who yelled at the interviewer about hash table complexity.

Re:Asana Engineering Interview Guide by Eratosthenes on Monday March 28, 2016 @09:48PM (#11378977)
Adopt an aggressive posture. Maintain eye contact and repeatedly say "amortized complexity".
Re:Asana Engineering Interview Guide by selimthegrim on Monday March 28, 2016 @09:54PM (#11378997)
The Illustrated Tech Interview Survival Guide would like a word with you.
Re:Asana Engineering Interview Guide by adrianN on Tuesday March 29, 2016 @04:32AM (#11380218)
If they say average case O(1), worst case O(n), hit them with them with O(log n / loglog n) with high probability from a simple balls-into-bins type argument.
Re:Asana Engineering Interview Guide by nialo on Tuesday March 29, 2016 @08:24AM (#11380921)
Could you expand on the balls-into-bins argument here? It's not quite obvious to me, but I'd really like to understand.
Re:Asana Engineering Interview Guide by adrianN on Tuesday March 29, 2016 @08:52AM (#11381041)
Items are balls, slots in your table are bins. Hash functions are assumed to distribute them randomly (uniformly). See also the Wikipedia article on Balls-into-Bins.

https://en.wikipedia.org/wiki/Balls_into_bins

This reference from the wiki is good http://www14.in.tum.de/personen/raab/publ/balls.pdf

Re:Asana Engineering Interview Guide by bertr4nd on Tuesday March 29, 2016 @12:08AM (#11379426)
I assume you mean this tongue-in-cheek, but someone yelling at me in an interview is probably not going to score well on the "Do I want to work with them?" X-factor.

Of course, a well-informed discussion of hash table complexity would be pretty fun to hear from a candidate. It's always great when I learn something new in an interview.

Re:Asana Engineering Interview Guide by tptacek on Tuesday March 29, 2016 @01:05AM (#11379585)
I'm like 60% tongue in cheek, because the reality is, for every interviewer who will filter you for being too aggressive, two more will filter you for lack of confidence.
Re:Asana Engineering Interview Guide by sulam on Tuesday March 29, 2016 @01:19AM (#11379619)
I have never once filtered someone for lacking confidence. I have never seen someone filtered for lack of confidence by any panel I've been on or any panel I was the hiring manager for. At this point in my career I have interviewed ~1000+ engineers.

I think you're interviewing with the wrong people, or at the wrong places. Way too many people treat interviewing as a way of demonstrating intelligence via computer science trivial pursuit. 5 minutes with Google will demolish 99% of the questions you might ask if all you care about is getting correct code on the board. The interesting part is the process and discussion the code creates, not whether or not they know the secret handshake.

Re:Asana Engineering Interview Guide by tptacek on Tuesday March 29, 2016 @01:32AM (#11379659)
That's nice, but I have literally read interview feedback from very smart interviewers at multiple companies that vetoed candidates because "they didn't appear confident". This isn't something I'm making up: it's a real problem.
Re:Asana Engineering Interview Guide by sulam on Tuesday March 29, 2016 @01:38AM (#11379685)
I think we can both agree that interviewing is overdue for a radical reboot. Silicon Valley, disrupt interviews, please!

That said, there are places that don't interview the way you describe. I'm equally sure there are places that do (I vividly remember my Dropbox interview). My hope has always been that Darwin's Law will apply to such places over the long run, but instead I think what actually happens is that as these organizations grow the interview process just ends up being a diluted version of the same BS, which translates into "lowering the bar." Nevermind that your bar was curvier than Lombard Street.

Re:Asana Engineering Interview Guide by nottestuser on Tuesday March 29, 2016 @08:25AM (#11380926)
"Silicon Valley, disrupt interviews, please!"

They did and that's the problem ;)

Re:Asana Engineering Interview Guide by dbt00 on Tuesday March 29, 2016 @12:14AM (#11379453)
This is mostly good advice -- it's worth knowing both worst case and amortized average time -- but plenty of interviewers will filter you if you're being an aggressive asshole, even if you're right about facts.

Make sure you're considering what the workday environment is like (something you can usually tell from the prep materials or discussions with recruiters) and acting the way you think you'd act in that environment.

Re:Asana Engineering Interview Guide by benwaffle on Tuesday March 29, 2016 @02:32AM (#11379845)
>If they believe it's O(1), argue it's worst case O(n)

In the case that all your keys have the same hash, right?

Re:Asana Engineering Interview Guide by Rapzid on Tuesday March 29, 2016 @04:28AM (#11380203)
It seems to me this would entirely depend on the implementation and how collisions are handled.
Re:Asana Engineering Interview Guide by sorokod on Tuesday March 29, 2016 @05:44AM (#11380431)
In Java 8, collisions in Maps are stored in a tree structure so worst case is O(log n)
Re:Asana Engineering Interview Guide by logicchains on Tuesday March 29, 2016 @07:20AM (#11380688)
Is it a balanced tree? If not, worst case could still be O(n).
Re:Asana Engineering Interview Guide by Rapzid on Tuesday March 29, 2016 @11:33AM (#11382194)
Haha, that would be an odd set of data indeed. I have no idea how they implement it but I hope I have made a point(I feel I have). I wouldn't be too impressed with an interviewer or interviewee arguing one side or the other about the complexity of "unspecified hashmap implementation".

Too clever by half.

Re:Asana Engineering Interview Guide by thaumasiotes on Tuesday March 29, 2016 @05:30AM (#11380379)
Buckets. :)
Re:Asana Engineering Interview Guide by mintplant on Tuesday March 29, 2016 @02:58AM (#11379936)
Right!
Re:Asana Engineering Interview Guide by ryanSrich on Monday March 28, 2016 @06:25PM (#11377928)
On the flip side, Asana clearly indicates that they don't test candidates on day to day development. This is good, because now I know I would never work for Asana.

Those interested in non-applicable CS problems would probably love Asana. Although I'm not sure how any of this relates to a pretty basic project management app.

Re:Asana Engineering Interview Guide by dvt on Monday March 28, 2016 @06:26PM (#11377933)
Yeah, exactly! It's like fucking insane how these companies hype themselves up. All you are is a glorified to-do list, calm down, Asana.
Re:Asana Engineering Interview Guide by Aeolun on Tuesday March 29, 2016 @04:41AM (#11380247)
It is a very, very fancy to do list though.

To be honest, it was more usable when it was just released. The simplicity was one of the strong points.

Re:Asana Engineering Interview Guide by mpd on Monday March 28, 2016 @10:30PM (#11379115)
> This is good, because now I know I would never work for Asana.

I've actually used their product, and I'm in the same boat as you because of it.

Re:Asana Engineering Interview Guide by andersen1488 on Monday March 28, 2016 @09:04PM (#11378815)
Thanks for a dose of sanity. After a round of SV interviews this past week, I've vowed to never put myself through something like that ever again.
Re:Asana Engineering Interview Guide by sotojuan on Monday March 28, 2016 @10:10PM (#11379047)
I agree. I've been lucky to not have been asked any questions like these here in NYC—until now. The only reason why I am still going through it is because I really like the company and people, and they did ask me fair, on-topic questions in our first interview. But yeah, studying trees when I could be doing open source sucks.
Re:Asana Engineering Interview Guide by anarazel on Tuesday March 29, 2016 @03:47AM (#11380085)
Don't get me wrong. I don't like the way interviews are conducted much. Especially the "trying to trip up" part, and the focus on absolutely artificial problems.

But:

> Lol: "Hashes, sets, heaps, binary trees, linked lists, all the usual suspects." Yeah, I spend most of my time fiddling with binary trees and hashes at the office, said no one ever.

Actually, I spent a lot of time with stuff like that. And I'm certainly not alone. And a lot of the problems I deal with is where people haven't thought about algorithmic problems (complexity, constant factors like latency, cache efficiency, ...).

Now you can certainly argue that that's not the case for most SV jobs. And that you can re-train a lot of that on the job. And I'd agree to a good degree. But I think ridiculing the importance of such topics just mirrors the mistake the of the interviewing side.

Re:Asana Engineering Interview Guide by rifung on Tuesday March 29, 2016 @03:54AM (#11380102)
> Yeah, I spend most of my time fiddling with binary trees and hashes at the office, said no one ever.

There are a lot of people agreeing with you so I guess I'm just the outlier here but I don't see why you would not want people to know about hashmaps/binary trees. Sure we don't normally have to implement them ourselves but I imagine most people use them all the time.

Balanced binary trees are often used to implement Maps/Sets so by knowing what the time/space complexity of operations on them you should know how they behave. Knowing them off the top of your head also makes it easy to compare them to choose the optimal data structure for whatever it is you are doing.

I agree that open source or take home assignments are great for seeing how cleanly someone can code and perhaps this is not emphasized enough with our current interview "culture" but I don't think the other extreme of completely ignoring algorithms is a good idea either.

Re:Asana Engineering Interview Guide by dvt on Tuesday March 29, 2016 @04:06AM (#11380126)
> Balanced binary trees are often used to implement Maps/Sets so by knowing what the time/space complexity of operations on them you should know how they behave. Knowing them off the top of your head also makes it easy to compare them to choose the optimal data structure for whatever it is you are doing.

I don't see any virtue in knowing in-depth complexity analysis of any data structure off the top of your head. Sure, it's probably important to know that random access is faster in a hash map than a linked list, but generally questions are much more algorithmically in-depth. With that said, I know many people that would disagree with me and I think they are categorically wrong. Writing code is about building robust and scalable things. This involves planning and execution. Frankly, I don't think "tricky" algorithmic interview questions address either of those two.

And whatever, obviously to get a six-figure job (as I'm sure most people in this thread have), you need to drink the Kool-aid. But I'm not going to sit here and perpetuate this nonsense. Like I said, I don't even like interviewing people because it's expected of me to find annoying little logic or algorithmic puzzles that some poor guy or girl will struggle to solve.

Re:Asana Engineering Interview Guide by rifung on Tuesday March 29, 2016 @03:34PM (#11384231)
I'm not even sure we are agreeing or disagreeing anymore. I don't like tricky algorithm questions. Well that's a lie, I like them but I don't think they are appropriate for interviews.

On the other hand, I don't feel like knowing the time/space complexity of data structures you would normally encounter in day to day coding to be "tricky". I wouldn't expect people to know about suffix trees or segment trees for example.

> Writing code is about building robust and scalable things. This involves planning and execution.

I completely agree! But I would argue that's why it's important to know your common data structures because otherwise how can you plan? I do find most interviews awful because of the time pressure which is completely unrealistic. On the other hand, if I'm looking at code my coworker wrote and ask them why they decided to use an array instead of a linked list, I would hope they have an answer.