📜  微软面试经历 |设置 176(校内)

📅  最后修改于: 2022-05-13 01:58:18.727000             🧑  作者: Mango

微软面试经历 |设置 176(校内)

第一轮(编码测试):
这是在cocubes平台上进行的编码测试。给出了3个不同分数的问题:

2分:给定一个数字,我们需要找到它最接近的10的倍数。规则如下: 1. 如果单位位数小于 5,则返回小于给定数的 10 的最接近倍数,如果大于或等于 5,则返回大于给定数的 10 的最接近倍数。
例子:
输入:
144
156
输出:
140
160
这个问题真的很容易解决。通过使用模运算只是简单的实现。

3 分:给定一个数字 n,我们需要返回其中没有连续字符串的大小为 n 的可能二进制字符串的数量。
这是一个相当流行的动态编程面试题。 GeeksForGeeks 有一个解决方案。链接:https://www.geeksforgeeks.org/count-number-binary-strings-without-consecutive-1s/

5分:给定一个链表和两个整数M和N。遍历链表,保留M个节点,然后删除下一个N个节点,继续相同直到链表结束。这很容易。 GeeksForGeeks 有一个解决方案。链接:https://www.geeksforgeeks.org/delete-n-nodes-after-m-nodes-of-a-linked-list/

本轮评选出50名学生。

第 2 轮(GroupFly 轮):
这是一个笔和纸轮。我们需要解决纸上给我们的问题,并向我们附近的导师解释我们的方法。要解决的问题:打印具有给定总和的二叉搜索树中的所有路径。这很容易使用堆栈或向量来解决,并且具有递归和树的中序遍历的概念。破解本轮小贴士: 1. 写得好。好笔迹在某种程度上很重要。
2. 先写方法,好好注释你的代码。
3. Atlast写出你写的解的时间复杂度和空间复杂度。所有这些在一定程度上真的很重要。

24名学生被选中进入下一轮。
第三轮(技术面试):
这是在Skype上举行的。前半小时的讨论完全基于我工作的项目和实习
之上。她问我关于我在 IIT Kharagpur 所做的研究项目的详细解释,以及我在 Acadview 所做的机器学习实习。之后,她问了两个编码问题:它们是:
1.给定一个十进制数的排序数组,我们需要在其中找到一个十进制数 x。她要求我减少其中的比较次数。我真的很困惑,什么比二分搜索的 logn 方法做得更好。我给她讲了很多案例:
当元素可以重复时,我们需要找到第一个和最后一个索引。
她说她需要进一步优化。我真的很困惑该说些什么。
然后我说如果元素的数量很大,那么为了减少溢出,我们需要以其他方式计算 mid 以避免溢出问题。然后我告诉她她正在寻找的答案。如果要找到的元素大于数组中的最大数量,我们只需要返回 false。我知道这很幼稚,但这正是她想要的。 😛

2.给定一个链表,需要检测链表中是否存在循环。她要求我不要用著名的兔子和乌龟方法、堆栈方法或散列方法来处理它,而是以这样的方式修改链表的结构,并在节点结构中使用尽可能少的额外内存来检测循环中的循环单次遍历。为此,我在节点结构中使用了一个布尔变量,并在遍历过程中对其进行操作以找到循环。
我的方法给她留下了深刻的印象,并且在她查看了我的代码后似乎很满意。然后她让我等下一轮。

第四轮(技术面试):
这是一个 F2F 回合。
他先让我自我介绍,然后问我实习的情况。然后他问了我一个问题:

给定一组整数,任务是将其分成两组 S1 和 S2,以使它们的和之间的绝对差最小。这确实需要时间来向面试官解释我的方法。我首先从递归方法开始,然后继续使用自下而上的 DP 解决方案来解决问题。他真的就我的方法问了我很多问题,并给了我测试用例来验证我的方法。他终于对我的做法感到满意。
GeeksForGeeks 有一个解决方案。关联:
https://www.geeksforgeeks.org/partition-a-set-into-two-subsets-such-that-the-difference-of-subset-sums-is-minimum/

然后他开始问我面向对象编程的问题。问题是:
1. 解释内联函数。我们为什么要使用它?编译器在看到 inline 这个词时会做什么?内联函数什么时候会不利?
2. 解释抽象类。如果派生类中没有定义纯虚函数怎么办?
3. 著名的使用虚拟基类的钻石问题。然后,他继续研究数据库管理系统。问题是:
1. 解释数据库的工作流程。从软件资源规范到规范化。他只是问我步骤。
2. 接下来他问我所有形式的标准化,我们对此进行了详细的讨论。他问了我很多关于 BCNF 的问题。
接下来他转向系统设计:
给定一个像 Flipkart 或 amazon 这样的购物网站,您需要设计支付门户页面和
您将如何验证您输入的信息。
他给了我三种不同的付款方式:
1.借记卡
2. 信用卡。
3. 网上银行。
他还让我说出我将用来测试页面的每一种测试方法。我们对此进行了详细的讨论。网上银行部分是最具挑战性的部分。然后他问了一些我很容易解决的人力资源问题。


第五轮(技术兼人力资源):

面试官首先问了我在 IIT Kharagpur 的暑期实习。他从中提出了深入的问题。他真的很了解我使用的噪声模型和网络。
然后他问我关于机器学习实习的问题,并给出了一个现实世界的问题,用我知道的任何算法来解决它。
鉴于我们的大学门户网站,我将如何在 Twitter 中显示所有类别的热门新闻。我使用 K-Means Clustering 来解决这个问题。然后他问我它是如何工作的,我向他解释了质心移动方法。
他没有给出任何反应..:P

然后他转向操作系统:
什么是信号量?它是变量还是函数?它的原子操作是如何定义的?它如何用于解决临界区问题?它如何用于维护流程的执行顺序?
我给了他所需的答案。他似乎很满意。然后他问了一个问题:
顺时针旋转 N*N 矩阵。
这对我来说很容易,我向他解释了转置和反向行的方法。他对我的做法很满意。
他再次转向系统设计:
他让我设计一个 URL Shortenener,比如小 URL。
因为我没有很好地研究系统设计,所以我真的很挣扎,但我给了他散列和编码方法并尝试用它来处理它。他再次给出了中性的表情..:P
最后他问我家庭背景。关于我的爱好和我在其中赢得的赞誉。然后问了常见的人力资源问题,比如你的职业目标是什么?为什么选择微软?和所有。
然后我被要求等待。
最终选出了10名学生,我就是其中之一。这真的是我生命中最美妙的一天。 🙂