第 1 轮(1 小时):
这一轮是基于编码的,面试官问了 2 个编码问题。这两道题都是中等难度。
一季度。给定一些字符串数组。查找字符串子集的最小大小,使计数 > 数组大小的 50%。
例如:[“鞋子”、“脸”、“比萨”、“covid”、“鞋子”、“covid”、“covid”、“脸”、“鞋子”]
答案是[“covid”,“鞋子”]。说明:字符串的频率如下:
鞋子:3,Covid:3,“脸”:2,“披萨”:1
所以 3(shoes) + 3(coivid) = 6 大于 (9(数组的大小)/2) 即数组的大小。
提示:按频率降序对它们进行排序。
我最初用 dp 方法解决了这个问题(前一天练习了 dp)。我的 dp 方法是创建 dp[sum][size],然后找到分析值的解决方案。面试官让我写代码,我写了。然后他说你把问题弄复杂了,这是一个简单的问题。解决方案立即打动了我,他再次要求我编写代码。
(现在还剩 15 分钟。)
Q2。他向我解释了这个问题。给你一个数组,唯一的操作是从头或尾挑选元素。使用准确的 k 操作获得可能的最大值。
例如: arr = {1, 7, 8, 3, 4, 4}, k = 3
答案是 1+7+8 = 16。
我再次使用 dp 😛 解决了这个问题。我告诉他递归关系 dp[i][j][k] = max(arr[i] + dp[i+1][j][k-1], arr[j] + dp[i][j -1][k-1])。他同意并让我想出一个优化的方法。我花了大约 2 分钟,但什么也想不出来。他建议我考虑使用该物业。我得到了提示并获得了解决方案,即我们只能从左侧或右侧选择连续元素。对于 0 <= x <= k,答案是 (left[x] + right[kx]) 的最大值。
第二轮(1小时):
我期待这一轮再次成为编码轮。但令我惊讶的是,这是一个设计回合。然后他问我是否熟悉 RDMS 和 MySQL。我已经很紧张了,因为我不太擅长数据库。然后他描述了问题陈述:
您需要设计一个具有给定属性的博客站点:
1. 用户可以创建一个博客(包含多个段落)。
2. 用户可以查看他的所有博客。
3.用户可以添加评论(博客中每个段落的多个评论)。
它或多或少是这样的(忘了最后一点)。我必须做数据建模。然后他让我概述执行上述操作的功能。我只需要写函数名、参数和返回值。(不是查询,甚至不是伪代码🙂)。然后他做了一些优化,比如分页视图的选项。在不使用数据库写操作的情况下高效获取下一页。
第 3 轮(3.5 小时):
这是我见过的最独特和最长的一轮。面试官首先让我做自我介绍,并告诉他我在 Nutanix 的实习经历。然后他给了我以下纸牌游戏模拟的问题陈述。他让我实施纸牌游戏。我问他是否希望我使用 OOP,他点点头。因为,我没有太多使用 OOP 编写代码的经验(不要评判我:P),我告诉他这可能需要一些时间。他说没关系,只要你用完代码就给我打电话,然后他就挂断了电话。我给他打了两次电话,只向他展示了错误的输出。他给了我最后的机会向他展示正确的输出,最终它按预期工作。大约有 400 行代码,他似乎非常相信,我们还讨论了可以使用的不同策略。首先他看到了输出,然后他浏览了整个代码。
我也在这一轮中被选中。