Well, obviously not everybody knows everything and if you're a great candidate but you've never had gc issues with the jvm, any good interviewer will shrug and move on. Also, and I hope this was obvious, but my comments were directed at experienced engineers and new grads are graded differently. But knowing basic data structures? That's doesn't make a good candidate, that's a low bar of a prerequisite. And if you haven't put the effort in to learn at least one editor -- and I don't care of it's vim, emacs, eclipse, visual studio, intellij, etc -- really well, I'll give you a thumbs down. I'd expect someone to know how to use bash and the unix toolchain as well -- the ability to use the shell + command line tools will save you lots of time, and I'd be pretty pissed if I saw a coworker blow a day writing in java what would take 5 minutes in {bash, command line utils, ruby, perl, awk}.
I expect particularly people whose strongest languages are java or c++ to know about design patterns. Saying you hate them and giving a good reason (I agree) is fine. But you ought to know what some of the common ones are.
Similarly for generics -- most good java engineers have probably wondered at some point why eg if AA is a subclass of A, why ArrayList<AA> is not a subclass of ArrayList<A>. There are lots of different designs for generics, with different strengths and limitations, and I would be surprised if a great candidate hadn't been exposed to more than one design and spent some thought or an afternoon reading language blogs.
Etc etc for gc.
tl;dr -- knowing basic data structures doesn't impress me; if you don't, we'll just end the interview early and have a discussion with our internal recruiters into how the fuck such a bad candidate got brought in. And my description above is what it takes if you want me to go over to the vp of engineering or cto and say do whatever it takes to hire this person.
I expect particularly people whose strongest languages are java or c++ to know about design patterns. Saying you hate them and giving a good reason (I agree) is fine. But you ought to know what some of the common ones are.
Similarly for generics -- most good java engineers have probably wondered at some point why eg if AA is a subclass of A, why ArrayList<AA> is not a subclass of ArrayList<A>. There are lots of different designs for generics, with different strengths and limitations, and I would be surprised if a great candidate hadn't been exposed to more than one design and spent some thought or an afternoon reading language blogs.
Etc etc for gc.
tl;dr -- knowing basic data structures doesn't impress me; if you don't, we'll just end the interview early and have a discussion with our internal recruiters into how the fuck such a bad candidate got brought in. And my description above is what it takes if you want me to go over to the vp of engineering or cto and say do whatever it takes to hire this person.