访谈期间用于编码测试的OOP问题

访谈期间用于编码测试的OOP问题,oop,Oop,作为第二次面试,我让人们坐下来写代码……我试图让问题真正独立于技术 我的编程问题并没有真正锻炼人们的OO能力。我倾向于尝试在2小时内解决编码问题。所以,我一直在努力寻找一个小到足以暴露人们OO设计技能的问题 有什么建议吗?这些不是专门针对OO的问题,但请查看其他问题 编辑:如何实现一些?我在这方面没有最好的知识,但似乎你会以一个问题的价格得到两个问题。您可以在一个问题中测试OO和设计模式 我有一套超简单的。这个想法主要是用它们来过滤掉那些真正不了解自己的人,而不是过滤掉摇滚明星 这些都是5分钟的

作为第二次面试,我让人们坐下来写代码……我试图让问题真正独立于技术

我的编程问题并没有真正锻炼人们的OO能力。我倾向于尝试在2小时内解决编码问题。所以,我一直在努力寻找一个小到足以暴露人们OO设计技能的问题


有什么建议吗?

这些不是专门针对OO的问题,但请查看其他问题


编辑:如何实现一些?我在这方面没有最好的知识,但似乎你会以一个问题的价格得到两个问题。您可以在一个问题中测试OO和设计模式

我有一套超简单的。这个想法主要是用它们来过滤掉那些真正不了解自己的人,而不是过滤掉摇滚明星

这些都是5分钟的白板式问题,所以它们其实没那么难。但是编写代码并通过它进行讨论的行为揭示了很多关于候选人的信息——并且对于通过谈话揭露那些本来可以说谎的人来说是非常棒的

  • 写一个以圆的半径为参数的方法,并返回圆的面积(你会惊讶于有多少人在这个问题上挣扎!)
  • 编写一个程序,从命令行接受一系列数字作为参数。把它们加起来,然后打印总数
  • 编写一个充当键控计数器的类(基本上是一个跟踪每个键“计数”次数的映射)

理想情况下,您希望提出一个看似困难的问题,但如果您从面向对象的角度考虑,它有一个简单、优雅、显而易见的解决方案

也许:

  • 我们需要控制对客户网站的访问
  • 每个客户可能有一个或多个人员访问该网站
  • 来自不同客户的不同人员可以查看站点的不同部分
  • 同一个人可以为多个客户工作
  • 客户希望基于人员、部门、团队或项目管理权限
使用面向对象技术为此设计解决方案


一个OO解决方案是拥有一个人、一个客户、一个帐户和AccountPermissions,其中帐户指定一个人和一个客户以及一个可选的父帐户。递归Account对象的使用会使原本繁琐的人员/团队/部门/项目结构崩溃。直接ERD解决方案可能会产生这种结构。并且令人震惊地证实了文章的说法。作为第二次跟进,我要求考生计算模拟时钟上指针之间的角度。我们安装了一台安装了VS2008的笔记本电脑,并将存根安装到位。他们所要做的就是填写执行情况


我总是对候选人在这两个问题上的糟糕表现感到震惊。真的

这是我在一些培训中使用的一个问题,看起来很简单,但在面向对象方面很棘手:

创建将正确表示以下构造的模型类:

  • 定义形状对象,其中对象是任何二维图形,并具有以下特征:名称、周长和表面积
  • 定义一个圆,保留并准确输出上述形状特征的值
  • 定义一个三角形。这一次,三角形的名称应该考虑是否为等边(所有3条边的长度相同)、等参线(只有两条边的长度相同)或不等边(没有两条边相同)
  • 您可以继续使用四边形(包括正方形、矩形、菱形等)和其他多边形


    他们解决上述问题的方法将揭示出理解OOP的人与不理解OOP的人的区别。

    简单的GUI怎么样。它有继承、覆盖,可能还有事件。如果您的意思是让他们作为测试的一部分实际实现,那么您可以给他们一个带有OnPaint()的空白windows窗体,并告诉他们去做。

    您可以做得比让他们设计一个带有单个进程实现的MapReduce库更糟糕。对于分布式实现,该接口仍然有效吗?什么是异常处理策略?是否应该对在管道中链接MapReduce作业提供特殊支持?输入和输出的接口是什么?输入是如何组合的?一个作业中的不同输入是否可以传递给不同的映射器?哪些违约是合理的


    Python中一个好的解决方案需要一页代码。

    设计社会保障应用程序是我在采访中问过很多人的问题

    这件事的好处是每个人都知道它是如何工作的,以及需要跟踪哪些事情。 他们还必须证明他们的设计是合理的,这真的帮助我进入他们的头脑:) (因为这里有很大的灵活性)


    亲切的问候,

    无论人们在采访中是否做了一些编码,我要特别问一下:
    告诉我你最近用面向对象编程解决的一个问题。你会惊讶地发现,人们常常无法回答这个简单的问题。很多时候,我会茫然地看着他们,或者他们会说“你是什么意思?我在.NET中编程,它完全是面向对象的。”

    2小时!?!为什么不把你的团队遇到的问题交给他们呢。这样你就可以得到2小时的免费工作!以前试过。。。。。结果往往是谈论太多问题领域,而不是解决任何问题。此外,如果你为许多不同的人设置了相同的问题,这会给你提供一个很好的比较基础。如果你打算否决并评论现有的答案,请将你的问题重新标记为“长OO”问题。单个问题2小时?你的白板有多大?Graphain:有人投了反对票……是的……我看了一下。。。