I can't understand why I am asked to resolve some tricky/stupid/unreal algorithm using Java in a job test. I am missing something?? I know that the code has to be as efficient as possible and the pragmatism is cool and so on.<p>I just think that what Java is looking for is getting away from all of that. And there are a lot of better solutions for this kind of jobs like C, or even R.<p>I think the nature of the problems to solve in Java are not related with this complex algorithms. I mean, I have been training myself in generics, OOP, SOLID principles, Clean Code, Design Patterns, TDD, BDD and some others for the last three years.<p>How I am supposed to show my skills in one hour resolving a low level algorithm in a web IDE (this particular case)? All my "low level thinking" is pretty oxidized.<p>Maybe I am just wrong. A novel speaking.
Because programmers love to be huge dicks to one another and it is unfortunately widely supported behaviour in the community.<p>In no other field is it really acceptable to ask a candidate to solve issues that have nothing to do with the job, I liken it to asking your prospective surgeon how they'd fix a leaking faucet, or a plumber how they'd repair a ruptured artery.<p>However I am most definitely in the minority, most programmers thing it is perfectly fine and normal that you have to study obscure CS curricular whenever you apply for a programming job. Then never ever use that same material again while at that job.<p>Sorry you had to interview at a dicky company, just do what I do, reject them as somewhere you want to work and move on. It speaks volumes of the atmosphere (e.g. unrealistic expectations, treating people badly, arrogant/pompous employees, etc).
It really depends on the company and your role.<p>If you are entry level, I can see testing you on this since it should be fresh in your mind from school and you probably know nothing anyway.<p>If you have been coding for 5-6 years doing annotations and configuration heavy java code. Chances are you remember nothing and will need to study up. To me, this is completely useless and if your job doesnt entail doing this, I have no idea why they ask these questions.<p>I think what would be a far better option would be to ask you a few algorithm questions, give you a packet to study, then invite you back to test again. Because in my mind the biggest indicator of success as a programmer is the ability to learn new things in a short period of time.<p>I think this is why companies like google still ask these questions (in addition to being a remnant from the times when every developer at google worked intimately with complex data structures) is that they want to see if you can learn it. I don't think anyone there has delusions that anywhere close to 100 percent of their accepted applicants knew this stuff before the interview process, but again I think they want to know if they can learn it quickly
I often ask on interviews about binary search and hash tables. These are things which we use very often in libraries, and aren't that complicated.