If you are interviewing for a OOP development position, you should be able to answer at least the following questions. These are not language specific.

List the identifying characteristics of the following:

For all of the above that you could name, give a functional example.

My current experience interviewing candidates for several Java development positions tells me that people with strong Java but little or no C++ cannot explain multiple inheritance except to say by rote "Java doesn't have it but instead you use interfaces." But they don't know what it *is*.

Similarly their exposure to templates and operator overload may be lacking. OTOH candidates strong in C++ but not Java may not recognize interfaces by that name.

I suggest instead questions like "Describe an is-a and a has-a a relationship, and give an example of each?" and "Tell me about a book about OOD or OOP that you've used recently?"

See Interview answers for OOP programmers for a bit of help.

public rant OOP extends Previous {

I got my job because I drink beer and I like sport.
I glossed over my programming abilities in the interview for my current job and basically talked about about life and what the company actually does. I figured they'd read my cv, what's to tell? While I was extremely lucky to find such a cool company to work for, my experience in both video and IT is that no one wants the genius with all the right answers who bores everyone senseless.

But Seriously ....
inheritance - getting cool stuff when your ancestors die.
polymorphism - changing to or from the form of a parrot (requires extreme concentration).
encapsulation - putting powders or oils in plastic or gelatine containers for future ingestion.
aggregation - Pissing everyone off. (often by always being right)
multiple inheritance - The result of an unsolvable mass murder of ones relatives.
interfaces - Corners and edges of 3D objects.
templates - Temp workers who never get put on staff because they can't show up to work on time.
operator overload - The result of sufferering extreme sleep deprivation and answering phone calls from angry clients at eleven in the morning while still working after an all night session fixing bugs left by the boring guy with all the answers becuase the girl from the agency is probably still asleep.

I suppose in the interests of being informative i should say "DOn'T FoRgET TO bE HuMAn!"
..... which is to err .....

} catch (Exception err) {
  System.err.println("interviewers don't understand IT.....");
  System.out.println("you watching, employers ? huh? huh ??!??");

I've interviewed a fair number of people applying for OO developer positions and the concepts moa listed are definitely ones that I would expect the applicants to know about. The exception might be templates, but that's mainly because we don't hire many C++ developers these days...

If you're the interviewer, you might want to start out with two other questions before going into those details, though:

A) What is the difference between a class and an object?


B) Give me an example of a development task where you wouldn't recommend using OO.

Why these two? Because the answers you get will tell you a lot about the experience of the person answering.

If you get a long and complicated answer to question A, the applicant is probably not very comfortable with OO concepts yet. On the other hand, if the applicant oversimplifies or avoids the trickier parts, he might not even have understood the basic ideas behind OO. The last case is unfortunately common among developers who have gone directly from C to C++ or made another similar switch from a non-OO language.

Question B is thrown in to see if the applicant is overly enthusiastic about OO. If the answer is "there is nothing that can't be built with OO," you probably have a very inexperienced OO-developer on your hands. When you just have finished learning a new language, the novelty of it tends to make you think you can solve anything with this wonderful new tool. Experienced programmers tend to be a lot more pragmatic.

BTW, my answer to question A would be: "An object is an instance of a class. A class is an instance of the class 'Class'." Can you guess my favorite OO language?

Log in or register to write something here or to contact authors.