微软IDC面试经验
在线回合
平台:CoCubes 格式:3个编码问题 时间:75分钟
他们有一个问题库,每个学生随机回答三个问题(2+3+5分)。
- 给定一个整数N和一个整数M,输出一个最接近N的数字,该数字可以被M整除 .
Input: N = 15, M = 7 Output: 14 Input : N = 17, M = 3 Output : 18
O(预期解决方案1)
- 给定一个O和1的字符串,输出所有1的子字符串的最大长度。
Input: 1011010111101 Output: 4 Input : 0110111110111101 Output : 5
Geeksforgeks链接 O(n)中的预期解。
- 最长算术级数的长度
O(n^3)中的预期溶液
团体飞行:
- 40名候选人被列入飞行小组的候选名单。 问题数量:2 时间:75分钟。
- 问题1:
在字符网格中查找一个单词 这个问题是对上述问题的修正。我们可以在所有8个方向上移动,也可以进行之字形穿越。我们必须返回一个坐标列表(i,j)来找到遍历。如果可能进行多次遍历,请返回任意一次。
Input: Grid: a b c d b d e e f g r k s g s s String: geeks Output: (2,1), (1,2), (1,3), (2,3), (3,2)
我用DFS解决了这个问题。
- 问题2:
想象一个欧几里德平面和该平面上的N个点(x,y)。你会得到一份这样的要点清单。然后,您将收到查询,以确定平面中是否存在特定点。 相应地输出TRUE或FALSE。
0
Input: Points: (2,1), (1,2), (1,3), (2,3), (3,3) Query1: (2,3) Output1: TRUE Query2: (2,2) Output2: FALSE
他们希望我们优化查询。我使用无序的_映射来存储点,并在O(1)中输出查询。
个人面试 50%的候选人在小组飞行后被选中,即20名学生。
第一轮:
- 面试官拿走了我的简历,最多看了2秒钟,然后把它藏了起来。然后他问了一个谜题
- 您可以使用以下运算符:+–*/() 插入几个这样的运算符,使给定的行成为有效的数学表达式 1 2 3 4 5 6 7 8 9 = 100.
注意:如果我们不插入1和2之间的任何内容,它将变为12。1到9的顺序必须保持原样。
Solution: (1 + 2 + 3 + 4) * (-5 + 6) * (-7 + 8 + 9) = 100 I gave the above solution within 2-3 min. He immediately told me to give one more solution. I again took 2-3 mins to come up with one more solution. Alternate Solution: 123 - (4 + 5 + 6 + 7) - (-8 + 9) = 100
-
- 设计一个电梯系统。我们讨论了这个问题大约45分钟。
- 有多少部电梯? 答:N部电梯。N不止一个。
- 有几层? 答:M层。
- 我们是每层电梯都有一个按钮,还是每层电梯都只有一个按钮? 答:只有一个按钮控制所有电梯。
- 我们需要考虑电梯中允许的最大数等吗? 答:没有
.
在设计系统的过程中,我问了几个其他问题。
他想让我回答的事情:
- 我们应该使用什么样的算法来控制电梯的移动?
- 要使用的数据结构
.
- 算法的优化。一个可行的算法是不够的。必须对其进行优化,以实现高效使用、时间和节能。
后续问题:
- 我将如何处理并发请求?
- 不使用时,电梯将停在哪一层?为什么?
- 一天中的所有时间都是一样的吗?为什么?
- 我会在白天和晚上使用相同的算法吗?
- 我计划如何节省电梯运行功率?
- 如果其中一台电梯出现故障,我的算法会起作用吗?
- 如果一个按钮在任何楼层被按下两次,我的数据结构能处理吗?
- 我得到了一年的电梯使用数据。我将如何使用这些数据来优化算法以提高效率?
你会使用任何ML/AI工具来优化这个问题吗?怎样
还有很多问题我记不清了。我必须为每一个设计决定给出一个理由。然后他让我为它编写面向对象的代码。
解决方案:我有一个中央管理类来管理所有的电梯,每个电梯都是一个线程。所有数据都存储在中央管理器中。我将传入的请求存储在平衡二叉搜索树中。我为每个请求分配了一个优先级,如果它来自电梯内部或电梯外部,等等。
我问了他几个澄清问题,他回答得很好。面试官很专业,乐于助人。
他非常专业,经验丰富。他对我的回答印象深刻。我写代码时,他在笔记本电脑上填写了我的反馈。在我写完代码之前,他说我已经写完了。不需要编写代码。
这一轮过后,我直接被送到了招聘经理那里。对少数人进行了一到两次技术采访。
第二轮(招聘经理):
- 他是一位在微软工作了13年以上的资深人士。他非常冷静友好。 他开始问我是否有关于微软的问题等。我告诉他我没有任何具体问题,但我很好奇微软IDC做了哪些工作,正在做的最有趣的项目是什么,等等。他告诉我,现在一切都很有趣。他向我介绍了IDC的各个部门,以及他们在做什么样的项目。然后他问我关于我梦想中的公司。我告诉谷歌。然后我们讨论了谷歌和微软的利弊。他几乎没问其他问题,比如我最喜欢的主题是什么,等等。也没问后续问题。他说现在可以解决一个技术问题了。
问题:这是一个很长的问题陈述,解决方案归结为 拓扑排序 .我给了他解决方案,他让我写代码。
他相信了这套准则。然而,他告诉了我一件关于我的代码的小事,这本可以写得更优雅。我同意他的看法。
然后我们讨论了我的项目。他让我告诉他我在班加罗尔三星研究所实习期间做的项目。他还询问了我的个人项目,并跟进了相关问题。然后他问我有什么问题要问他。我说不。
我很惊讶我只能打两轮,所以我问他在这之后是否还会有更多的回合。他说我做得很好。放松
候选人的个人面试次数从2到4次不等。
结果:选中。 Geeksforgeks在我的准备过程中帮了我很大的忙。感谢其他学生分享他们的面试经验。
如果你喜欢Geeksforgek并想投稿,你也可以使用contribute写一篇文章。极客。组织或通过电子邮件将您的文章发送至contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。