📜  2019年灰橙面试经历

📅  最后修改于: 2021-09-23 05:13:51             🧑  作者: Mango

应该有4轮。 1 编码和 3 面对面。
第一轮: Hackerrank,4 道编码问题和 1 小时限制。没有必要通过所有 4 个问题。如果其中 2 人通过了所有测试用例,则该轮结束。
问题 1 – 查找与给定数组中的每个元素对应的 2 轮车和 4 轮车中的任何一个。示例:输入:[6, 3, 2]
输出:[2, 0, 2]
解释:对于 6:1 辆 4 轮车和 1 辆 2 轮车。对于 3:不可能所以 0。对于 2:只有 1 辆两轮车是可能的。

问题 2-从给定数组中查找所有奇数因子的总和。示例:输入:[1, 6, 9]
输出: sum = 1(1) + 4(1, 3 for 6)+13(1, 3, 9 for 9) = 18

问题 3- https://www.geeksforgeeks.org/minimum-swaps-required-group-1s-together/

由于时间限制,我无法参加第四个问题。

第二轮:面对面
,4 个问题。
第一个问题:给定一个总和和一个输入数组。找出输入子数组可以形成给定和的所有可能方式。请注意,您可以重复输入数组的任何编号。次。
示例:输入:sum=14,数组[]={1, 5, 8}。输出:5种方式:{1, 5, 8}, {5, 5, 1, 1, 1, 1}, {8, 1, 1, 1, 1, 1, 1}, {5, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
我尝试使用迭代并开始在白板上编写示例和代码,但无法得到答案。面试官问我是否可以使用递归?我尝试使用 O(n^2) 方法,但仍然只有一半。
解决方案在这里:https://www.geeksforgeeks.org/ways-sum-n-using-array-elements-repetition-allowed/

第二个问题:找到将 BT 转换为 BST 所需的最小掉期。
我用中序排序方法回答。
解决方案在这里:https://www.geeksforgeeks.org/minimum-swap-required-convert-binary-tree-binary-search-tree/

第三个问题:读写器问题多线程。为它编写代码。

第四个问题:SmartPointer 问题。我用代码解释了 smartPointer,它如何自动管理内存,因为析构函数总是删除分配的 ptr 内存,我们不需要显式调用析构函数,因为当对象超出范围时它会自动调用。
所以,在这个问题中提出的下一个问题是,如果析构函数可以自动调用,那么为什么我们不为每个类实现相同的
(即删除析构函数中分配的内存)然后smartPointer与每个类的不同之处。那么为什么我们需要 smartPointer。这让我很困惑。

我没有进一步的回合。

一切顺利!