Seriously, it becomes very stupid, a new profession has came: The Interview Specialist.
Seriously, it becomes very stupid, a new profession has came: The Interview Specialist.
I can't blame other people for studying for tests, I can just blame the tests.
For solving these kind of problems knowing a bunch of known algorithms won't take you too far. They will only be useful in the beginner stages, but as you progress you need to invent new algorithms, make modifications to the existing algorithms (so they test that you really understand the idea behind them), combine different algorithm design techniques, etcetera.
They are often a good proxy to test how creative in problem solving you can be, not just mere rote memorization of algorithms and how good are you at remembering known algorithms.
Yet, if I gave engineering interviews impromptu I am pretty sure I will fail many of them. It's a weird situation in the industry when an experienced person has to go through a bootcamp to revisit/ memorize rather trivial stuff to get a job for which he may well be overqualified.
It's usually a symptom of a bad company culture to be honest when the people making hiring decisions feel the need to "spread" it around so as not to take the blame for those few bad hires that will inevitably happen.
As engineers we all know that bugs happen and shrug, feel bad for a bit and move on. When someone else makes a bad hiring decision, these same engineers grab the pitchforks demanding to know why they weren't consulted.
It's kind of silly when you think about it as human behavior is much more complex than software. Hiring is hard.
So, instead of testing what you current know, many companies look to evaluate the way you think and your potential to learn. I'm sure that the current methods of doing this aren't perfect, but I think they're a hell of a lot better than asking me minute Hibernate details when I haven't used Hibernate in years.
I currently prefer overall design questions. The type where the interviewer proposes an overarching problem, and you have to design a full system to handle it (not a difficult algorithm necessarily, but the data structures and classes involved). Mix this with a bit of actual coding, and I think the interviewer can get a decent idea of your skills.
- Win32 API
- Write device drivers WDM or other
- .NET / ASP.NET
- Java standard library
- Sockets, UNICODE
- DOM, HTML, CSS, Javascript
These things take a lot of time to learn properly. You have to read for a long time and know a lot of things. It's not true to say that anyone with algorithm smarts can do this.