📜  微软面试经验|设置125(IDC校园内)

📅  最后修改于: 2021-05-04 15:58:25             🧑  作者: Mango

Microsoft IDC面试经验

线上回合

平台:CoCubes
格式:3个编码题
时间:75分钟

他们有一个问题库,并向每个学生随机分配了三个问题(2 + 3 + 5分)。

  1. 给定一个整数N和一个整数M,输出一个最接近N的数字,该数字可以被M整除。
    Input: N = 15, M = 7
    Output: 14
    
    Input : N = 17, M = 3 
    Output : 18
    

    O(1)中的期望解

  2. 给定字符串O和1,输出所有1的子字符串的最大长度。
    Input: 1011010111101
    Output: 4
    
    Input : 0110111110111101
    Output : 5
    

    GeeksforGeeks链接
    O(n)中的期望解。

  3. 最长算术级数的长度

    O(n ^ 3)中的期望解

团体飞行回合:

    40名候选人入围了团体飞行比赛。
    问题数:2
    时间:75分钟。
  1. 问题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. 问题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)中存储点和输出查询。

个人面试
团体飞行后选出了50%的候选人,即20名学生。

第1轮:

    面试官拿了我的简历,最多看了2秒钟,让它远离了。然后,他提出了一个谜题
  1. 您可以使用以下运算符:+ – * /()
    插入这些运算符的几个以使给定的行成为有效的数学表达式
    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提供了极大的帮助。感谢其他学生分享他们的采访经验。 🙂

相关实践问题

最近号码
Microsoft的所有练习题!