Microsoft 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
GeeksforGeeks链接
O(n)中的期望解。 - 最长算术级数的长度
O(n ^ 3)中的期望解
团体飞行回合:
- 40名候选人入围了团体飞行比赛。
- 问题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
-10 ^ 6 <= x,y <= 10 ^ 6 Input: Points: (2,1), (1,2), (1,3), (2,3), (3,3) Query1: (2,3) Output1: TRUE Query2: (2,2) Output2: FALSE
他们希望我们优化查询。我使用unordered_map在O(1)中存储点和输出查询。
问题数:2
时间:75分钟。
个人面试
团体飞行后选出了50%的候选人,即20名学生。
第1轮:
- 面试官拿了我的简历,最多看了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东西来优化此问题吗?如何?
还有很多我不记得的问题。我必须给出每个设计决定的理由。然后,他要求我为此编写面向对象的代码。
解决方案:我有一个Central-Manager班来管理所有电梯,每个电梯都作为线程工作。所有数据都存储在中央管理器中。我将传入的请求存储在“平衡二进制搜索树”中。无论是来自电梯内部还是电梯外部,我都会为每个请求分配优先级。
我问了他几个澄清的问题,他很好地回答。面试官很专业而且乐于助人。
他非常专业,经验丰富。我的回答给他留下了深刻的印象。当我编写代码时,他在笔记本电脑上填写了我的反馈。在我写完代码之前,他说我完成了。不需要编写代码。
- 几部电梯?
在此回合之后,我被直接派往招聘经理。很少进行一两次技术面试。
第二轮(招聘经理):
- 他是在微软工作了13年以上的资深人士。他很酷,很友善。
他首先问我是否对微软有任何疑问,我告诉我没有任何具体问题,但我很好奇Microsoft IDC从事的工作是什么,正在做的最有趣的项目是什么等等。他告诉我,现在一切都很有趣。他向我介绍了IDC的各个部门以及他们正在从事什么样的项目。然后,他问了我梦dream以求的公司。我告诉谷歌。 then然后,我们讨论了Google和Microsoft的优缺点。他问了几个其他问题,例如哪个是我最喜欢的主题,等等。关于这些问题,很少有人跟进。他说好的现在解决了一个技术问题。
问题:这是一个漫长的问题陈述,解决方案归结为Toposort。我给了他解决方案,他告诉我编写代码。
他对代码深信不疑。但是,他告诉我关于我的代码的一件很小的事情,可以写得更优雅一些。我同意他的看法。
然后,我们讨论了我的项目。他告诉我告诉我我在班加罗尔三星研究院实习期间所做的项目。他还询问了我的个人项目,并跟进了有关这些项目的问题。然后他问我是否对他有任何疑问。我说不。
令我惊讶的是,我只需要进行两轮比赛,所以我问他之后是否还会再进行一轮比赛。他说我做得很好。放松。
候选人的个人面谈次数从2-4次不等。
结果:已选择。
在我准备过程中,GeeksForGeeks提供了极大的帮助。感谢其他学生分享他们的采访经验。 🙂