Graduate programmers in fact may not be experienced programmers, to whom trivial problems require trivial solutions that became second nature from years of coding. I expect a graduate programmer to be exact, careful, attentive and... slow (within reason). In fact few things would please me more than an interviewee showing some attitude and frowning if I tried to rush him.
Finally, as for PhD's forgetting basic stuff. In a lecture at a some university, Stroustrup was interrupted once or twice (can't quite recall) and told by a student to correct basic syntactical mistakes he had just made. Recently I couldn't remember the syntax to include a C code block on C++ and felt tremendously embarrassed a few months ago when interviewing a potential candidate for a C# position, he produced an answer to a question in hexadecimal that I couldn't tell if was right.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
I think that is fine. Anyone who programs every day makes syntax and/or logic errors every day. Particular features like extern "C" are things that you can find out when needed especially when you have this vague memory that something like that exists. Stumbling when you have to mentally convert from one base to another is no shame if you can convert it on paper or write a program to perform the conversion.Originally Posted by Mario F.
So, if you get a FizzBuzz question right, well and good. On the other hand, a syntax or logic error (or being remiss on error checking, for that matter) can provide you with an opportunity to demonstrate how you react to feedback on the correctness of your program, and show your debugging skills. If an interviewer does not take advantage of that, I would question if it were an interview or just a programming quiz session.
Based on what they considered the right answer, I'm guessing they were looking for someone who could see a sequence of events in the most uncomplicated way possible... which, for a coder or technician is a very good job skill to have.
In my experience over-simplification per your original answer is just as bad as over-complication per most of the answers they got.
Not to say your answer is wrong mind you... it's not... It's just not the one they were looking for.
(Of course, not being in on the creation of the test, I can only speculate about what they were actually thinking.)
1. You don't exactly have to pass with flying colours to graduate.
2. Finding code that you can copy and paste from somewhere ,or an algorithm you can adapt from wikipedia, or someone you can pay to do the work for you, is all too easy. You can clearly scrape by without having to think much at all.
3. "graduates" probably includes those that graduated and then got employed in a totally unrelated line of work and forgot half of what they learned.
4. "majority" simply means greater than 50%. It might be 50.1%
5. Interviews can be very stressful for some, turning an otherwise average level programmer into someone somewhat imcompetent.
6. Believe it or not, an entire 3 or 4 year degree may not involve the student actually using the modulus operator even once in any of their programs.
Advice: Take only as directed - If symptoms persist, please see your debugger
Linus Torvalds: "But it clearly is the only right way. The fact that everybody else does it some other way only means that they are wrong"
especially #5. After 10 years of using SQL every day at work I couldn't remember how to construct a simple DELETE statement in a job interview
When I interview graduates for a coding position I use the FizzBuzz test (in any language or just peusdo-code).
Last time I did interviews not one applicant (out of the dozen I interviewed) got the code 100% correct.
I had an applicant with a masters who could not even start (could not create a for loop).
I hired the one who was very disapponted when I told him that he had got it wrong and asked me to show him where (his loop ran for 101 numbers not 100).
I asked him to test the edge cases and he happily corrected the error himself.
It proved to me that he cared about his code and wanted to get it right everytime (something that is very important in asset protection systems).
"Man alone suffers so excruciatingly in the world that he was compelled to invent laughter."
"I spent a lot of my money on booze, birds and fast cars......the rest I squandered."
"If you are going through hell....keep going."
In response to the original post, that's astounding. I know a lot of students copy/paste but didn't know it was that bad. I mean, I'm pretty sure all of us here can write that program in under a minute.
In my experience people will take any shortcut they can find, even knowing in advance that it will lead to a bad outcome.
I don't recall the author but : "Given the opportunity to behave stupidly, most people will do exactly that."