Answers:
与人讨论开放式设计问题。查看他/她如何建立系统模型,提出什么样的问题,设计如何响应新信息而变化。
史蒂夫·耶格(Steve Yegge)在他的一篇博客文章中提到的一个很好的例子是,要求人们提出XML的对象模型。
对所有最流行的设计模式都有很好的了解,可以证明候选人实际上正在寻找解决其设计问题的方法。
能够讨论它们并知道何时应用它们,这很好地表明了他理解它们。
询问他过去的经历中的用法也可能会有所帮助。
阅读《 Head First设计模式》一书。本书中的所有示例均始于面向对象的问题,而最终以“设计”模式结束。他们还说明了为什么某些OOP的概念会取得有限的结果,以及为什么某些比其他的要好。
即使是《设计模式》这本书,也充满了OOP的问题:-)
从简单开始:OOP到底是什么?
您可以从询问OOP的基本前提开始:抽象,多态性,继承和封装。深思熟虑的好食物,可以使他们热身。
给他们一个问题
接下来,向他们提出可能涉及模式的问题。不必命名或使用模式,但是如果他们在该领域有经验,他们的方法可能会产生一些效果。
也许是动态文本输入验证。您希望能够逐个字符地验证输入的字符,以查看它是有效的日期,时间还是ISO8601格式的日期和时间。每次按键,您都会获得输入字符串的副本,并且可以返回布尔值以指示文本是否至少以一种格式保持良好。请他们讨论并使用OO设计原则草绘设计。
等你聊完了
如果他们了解OOD,那么您将有一个很好的主意。
再次给他们同样的问题,但是这次要求不同的设计
现在,要求他们在不使用观察者模式的情况下重新设计系统(如果他们提到过)-他们可能选择采用责任链方法或命令模式。您并不在乎哪个,您知道他们对所涉及的原理有合理的了解。
即使他们不采用基于模式的方法,只是聆听他们试图将问题分解为相关功能的方法,也会产生您所追求的结果。