第1轮:
在线回合中有 3 个问题,0.2 个问题与简单数组操作相关,1 个 bst。
那些至少做 2 个问题的人被选为其他轮次。
第二轮:
这是团体飞行,我们被问到了 2 个问题。
第一:有一个已排序但在一端旋转的数组。您必须在该数组中找到给定的元素。
预期时间复杂度:logn。
我使用二进制搜索给出了解决方案。
参考:https://www.geeksforgeeks.org/search-an-element-in-a-sorted-and-pivoted-array/
第二个问题:
检查给定的树是 BST 。
第 3 轮:
技术回合:
他问了我到目前为止我所做的项目。我只是向他解释了我的Python网络抓取项目。然后他去提问了。
第一:你得到一个 bst,你必须打印其值大于或等于当前节点的所有节点的总和。(这必须对 bst 中存在的每个节点进行)
他让我把代码写在纸上。
我的方法:首先使用中序递归函数计算 bst 中节点的总和。
初始化 prev_sum=0;
再次按顺序遍历树,维护一个 sum_prev,它正在添加节点值。打印 sum-prev_sum。 prev_sum+=node_value
int SUM=0;
无效总和(节点*根)
{
如果(根==空)
返回;
总和(左根)
SUM+=root->数据;
总和(根->右)
}
int prev_sum=0;
无效解决方案(节点*)
{
如果(根==空)
返回;
解决方案(根->左)
打印(总和-prev_sum)
prev_sum+=root->data;
解决方案(根->右);
}
他让我在一个循环中尝试它。我在一个循环中使用:https://www.geeksforgeeks.org/add-greater-values-every-node-given-bst/
基于 kadane 算法的第二个问题。https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/
第 4 轮:
第一个问题最大和数组的最小长度。
我使用 kadane 的算法给出了这个解决方案,并将 prev_minimum_length 保持为一个变量
第二个问题:二叉树的右视图
我使用级别顺序(队列)给出了我的解决方案
https://www.geeksforgeeks.org/print-right-view-binary-tree-2/
她让我把代码写在纸上。
她问我关于我的项目。
第5轮:
高级 SDE 工程师接受了我的采访。
他首先询问了我和一些随机的东西,爱好等等。
然后他问了我一个问题:
给定一个地球/二维无限矩阵中的 n 个点。找到离给定点最近的点。
o(n2) 解决方案不是预期的。
我通过为每个点制作一些瓷砖来接近它。然后我告诉他,我们可以先在给定点附近的近 8 个方格/瓷砖中搜索它。然后他指出了一些错误,并要求我在朝着正确的方向前进时多考虑一下。
然后我告诉他我将根据 x 变量和 y 对点进行排序,然后限制我在由该点界定的区域中搜索最近的点。
他告诉我不要编码,因为我已经在所有回合中编码了。
我所有的面试都很顺利,15 天后结果出来了,我被选中了。
只关注面试特定问题、操作系统、DBMS 和数据结构。
在去面试之前阅读一些面试经验。
感谢geeksforgeeks提供这么好的准备面试的平台。