I've noticed that in most technical phone screens, programming questions tend to focus on inheritance. For instance:
- If a class is intended to be inherited, what should you do with the destructor? (Answer: make it virtual)
- What's the deal with public/private access?
- What's "protected" for?
- Etc. etc.
It strikes me that there are more meaningful questions to ask these days. And, IMHO, reliance on inheritance as the primary design solution to an OO problem is a bit problematic. Am I wrong? Is knowledge of inheritance quirks the best way to assess technical skill?
Commenters have asked me to explain in more detail why I think reliance on OO-based questions is problematic. Let's see... Basically, my thinking is that there are plenty of cool, non-OO questions you could ask. For instance:
- (C++) What's the difference between a map and a multimap?
- (C++) What are the two different kinds of things you can use as template arguments?
- (C#) What's an extension method?
- (Perl) What restrictions, if any, exist on the number of arguments a function can take?
- (Python) What are the different ways you can use import, and what are the consequences of those tactics?
I submit that the above questions are also pretty decent weed-out questions. So my question for this forum is: Why don't phone screeners ask questions like those above?