这个问题是在我朋友的一次面试中被问到的。因为我要进行同样的采访,所以正在准备它。
我有一个 Customer 类和 Order 类。Q1)我应该在哪里写一个方法来查找客户下的订单数量。Q2)我应该在哪里写一个方法来找到超过5个订单的客户数量。
这个问题是在我朋友的一次面试中被问到的。因为我要进行同样的采访,所以正在准备它。
我有一个 Customer 类和 Order 类。Q1)我应该在哪里写一个方法来查找客户下的订单数量。Q2)我应该在哪里写一个方法来找到超过5个订单的客户数量。
Q1) 客户类别。它涉及单个客户,因此涉及单个实例。无论如何,这样的类通常会维护一个订单列表。
Q2)跳出框框思考。我将方法放在客户和订单之外,但它当然必须查询管理所有客户的任何类。在最简单的情况下,它会在查询每个客户实例以了解它包含多少订单时建立一个列表。
这有很多变体(例如缓存和维护运行总计),具体取决于目标和约束,例如响应效率或及时性,如果您给出一个简单的答案,您应该用这一点对其进行限定。
例如,如果 5 个订单是一个额外收益的级别,那么客户对象应该在每个订单下达时对其进行跟踪,并在超过阈值时通知其他类。
另一方面,如果这是一个数据分析查询,那么它会像我在 Q2 的第一个简单答案中给出的那样进行得更多,因为实际数量会随着不同的查询而变化。有人可能正在分析,看看他们应该为额外的好处设置什么水平。
很大程度上取决于目标和限制,通过提出这一点,你可以向面试官表明你有一个不局限于单一观点的分析思维。
通常面试问题不是关于“这个人能找到答案”,而是关于“这个人如何找到棘手问题的答案”。 他们会收集更多信息吗?他们是否意识到所涉及的问题?像 Q2 这样的问题在某种程度上是一个技巧,因为这两个问题都温和地引导受访者思考“两者中的哪一个”,而不是更广泛的范围,包括一些尚未提及的第三类。
祝你好运,欢迎来到 Stacks。