We have been on a recruitment drive for the last month or so and its been quite a frustrating experience. Our recruitment process for junior developers involves a written test, technical interview and a HR interview. We have found a lot of candidates have cleared the written test and are able to answer technical questions with regards to definitions and syntax of programming languages. They do this with ease and its a very text book like answer. If you wander into the domain of making them think by twisting a regular problem slightly they are taken completely by surprise.
I think this is due to the way we are taught in India. We are very good as long as one does not deviate from the bookish suggested approach of understanding and solving anything. We are taught how to "by-heart" everything even if one does not understand it. For example, my 4 year old daughter is forced to learn Hindi poems each 4 lines long even though she does not know what the words in the poem mean. All you have to do is give her the cue word and the rest of the poem flows out fluidly. And this has been my experience in the interviews as long as you stick to the tried and tested questions you will get very text book like answers.
From our experience we have realised that its easier to train a developer that can think on their own and can look up a million resources on how to write the program once they have identified the solution. If a developer cannot think of the solution on their own then you end up helping them to come up with the solution and also helping them to solve it which takes up a lot of ones time. Also it is very hard to teach someone how to think. It is relatively easier to teach them how to program or the syntax.