I take interview for my company. During interview I've faced many candidates having 1 to 3 years of experience in their field. Typically, they had experience in C#, Java, J2ME, iOS and similar platform. Few had working experience in C and/or C++. I'm a C++ programmer but typically I don't ask very C/C++ specific questions during interview. I test their ability to write and understand programs.
I did observe that many candidates have basic knowledge about programming. They understand and can write easy programs in their chosen language. They can solve most of the problems I ask. To my surprise, most candidates fail in specific type of question: bitwise thinking. They fail to write a code that swaps MSB with LSB of a 16 bit integer (like, given 0xABCD, make it 0xCDAB). They fail to write code that toggles a bit in an integer. Etc. If I show them the code involving bitwise operation and ask them to write what the code does, they fail to answer, given that I tell them to ask me if they've any question about syntax.
I found that they fail to understand that inside computer memory every number can be thought as decimal, hexadecimal, binary, or in any other base. Some of them got scared if I show an example in binary.
There is no doubt that when we'll hire these candidates, they won't be working with bits - at least directly. They don't need to solve any bitwise problems while working in our company. And their performance is promising at what they do. But I can't think about a programmer who can't think bitwise.
Should I discard these candidates? Or give them a chance?