📜  微软面试 SDE 实习生 2019

📅  最后修改于: 2021-11-16 07:55:57             🧑  作者: Mango

第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提供这么好的准备面试的平台。