To set some context this question is designed to gauge the abstract and critical thinking of a generally inexperienced developer. I don't usually use this for very experienced developers, but may if I think I'm getting shallow or suspicious answers.
Here's what I start with:
I'm friendly but not at all helpful while I do this.
- I draw it out by hand on a whiteboard or on paper
- I verbalize the relationships
- I offer to explain the notation and meaning of "is-a"
- I ask them to think out-loud
- I hand them the writing instrument
- What's good? What's bad? What would you change?
- A "Deer" is an animal also.
- A "Cow" could be "Food" for a "Tiger".
Again, I ask them for their impressions.
If they don't get to it themselves I make sure to ask the following questions:
- What happens if a "Deer" is passed to the eat method of a "Cow"?
- How would you change the model to handle or avoid that problem?