Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm looking to prepare for a job interview and I wanted to go over some good Object Oriented Design (OOD) questions.

Here are some of the OOD concepts that should give a good starting point:

  1. inheritance
  2. multiple inheritance
  3. encapsulation
  4. abstraction
  5. composition
  6. polymorphism
  7. overriding polymorphism

Would you please suggest any other OOD question(s)/topics that should be reviewed?

share|improve this question
add comment

migrated from stackoverflow.com Feb 11 '11 at 0:23

This question came from our site for professional and enthusiast programmers.

3 Answers

Adding to your list of items/topics, you should also consider giving a glimpse on following topics :

  • Data Hiding
  • Interfaces
  • Abstract classes
  • Overloading Polymorphism
  • Delegation (alternate to inheritance)

Also, I would suggest you to read some good OOD books like

  • Head First Object Oriented Analysis and Design
  • Design Patterns Explained - [Allan Shalloway]
  • Design Patterns : Elements of Reusable Object-Oriented Software - [Erich Gamma]

Also, have a look at this link.

share|improve this answer
add comment

Patterns. Design patterns, mostly, but also mega-patterns like MVC, MVVM and so on. Look at anti-patterns as well, like god object and tarball.

share|improve this answer
add comment

What is a singleton pattern? When/Why would you use it? What are the positives/negatives in using that pattern? What is a strategy pattern? When/Why... (etc) What is a factory pattern? When/Why... (etc)

Pick a couple of the more "common" patterns and see if they have at least been exposed to them. You can also give a small, bad programming example and have the candidate refactor it. You can see how they approach a problem.

Ask them to draw a picture of one of the patterns on a white board using UML (doesn't have to be perfect, but will show if they have actually used any of it).

When I interview developers I would ask them about version control systems. I didn't really care what they used, but that they actually did use them (and their attitudes towards them). I know that's not OOD, but I just threw my 2c in :)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.