作为第二次采访,我让人们坐下来编写代码......我试着让问题真的与技术无关.
我的编程问题,我没有真正运用人们的OO能力.我倾向于尝试在2小时内解决编码问题.所以,我一直在努力找到一个足够小的问题并且足够参与其暴露了人们的OO设计技巧.
有什么建议?
这是我在一些培训中使用的一个问题,看起来很简单但是非常难以操作:
创建将正确表示以下构造的模型类:
定义一个Shape对象,其中对象是任意二维图形,并具有以下特征:名称,周长和表面区域.
定义一个圆,保留并准确输出Shape的上述特征的值.
定义三角形.这次,三角形的名称应该考虑它是等边的(所有三边是相同的长度),等腰(只有两边是相同的长度),或斜角(没有两边是相同的).
你可以继续使用四边形(包括正方形,矩形,菱形等)和其他多边形.
他们解决上述问题的方式将揭示了那些了解OOP的人与那些不了解OOP的人.
理想情况下,您希望提出一个看似困难的问题,但如果您以OO术语思考,则需要一个简单,优雅,明显的解决方案
也许:
我们需要控制对客户网站的访问
每个客户可能有一个或多个人访问该站点
来自不同客户的不同人员可能能够查看该站点的不同部分
同一个人可能为多个客户工作
客户希望根据人员,部门,团队或项目管理权限
使用面向对象技术为此设计解决方案
一个OO解决方案是拥有Person,Customer,Account和AccountPermissions,其中Account指定Person和Customer以及可选的Parent Account.使用递归的Account对象会破坏直接ERD解决方案可能产生的麻烦的人/团队/部门/项目结构