📜  微软面试经历 | Set 99(IDC 和 IT 校园内)

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

微软面试经历 | Set 99(IDC 和 IT 校园内)

最近,微软访问了我们的校园,为他们的 IDC 和 IT 部门招聘实习生。
第1轮

    这是在 HackerRank 上举办的在线编码回合。时长 75 分钟,共 3 分钟
    编码问题。
  1. Q1:给定一个整数链表,编写一个函数来就地修改链表,使所有奇数出现在修改后的链表中所有偶数之前。偶数和奇数的相对顺序应该保持不变。
    例如:
    Input: 1->8->2->10->5->4->7->6->NULL
    Output: 1->5->7->8->2->10->4->6->NULL
    
  2. Q2:给定一个浮点数,在不使用内置 sqrt()函数的情况下计算其平方根。
  3. Q3:给定一个模式字符串和一个测试字符串,实现RegEx子字符串匹配。如果模式前面有一个 ^,它将与起始位置匹配。同样,如果它前面有一个 $,它将匹配结束位置。如果不存在这样的标记,它将检查模式是否是测试的子字符串。
    例如:
    ^coal
    coaltar
    Result: True
    $tar
    coaltar
    Result: True
    abcd
    efgh
    Result: False
    

    大约50人有资格进入下一轮。从三个问题的总共40个测试用例中,成功通过20个测试用例确保了资格。这三个问题都有棘手的、隐藏的边缘情况,很少有候选人能在一个问题中通过所有测试用例。

第 2 轮——笔和纸轮:给出了两个编码问题,其解决方案是用笔和纸提交。本轮共分配 45 分钟:

  1. Q1:将正方形图像顺时针旋转 90 度
    类似问题:GeeksforGeeks 链接。
  2. Q2:给定一个整数数组和一个目标和,编写一个函数来检查是否存在一对和等于目标的整数。使用额外的空间尽可能降低时间复杂度。

    本轮共有17名学生晋级。

第 3 轮 - 个人面试 1:这是一个技术轮。对兴趣和项目进行了简短的讨论,然后是两个编码问题:

  1. Q1:编写一个函数来反转字符串中单词的顺序
    我最初的解决方案有一个小错误,后来我修复了。
  2. Q2:给定一个链表和一个整数 n,编写一个函数从链表中删除每个第 n 个节点。
    For Example, 1->2->3->4->5->6->NULL n=3;
    Result: 1->2->4->5->NULL

第 4 轮个人面试 2:这是第二轮技术。关于课程作业的简短讨论之后是三个编码问题。

  1. Q1:给定一棵二叉树和一个目标总和,返回所有具有目标总和的从根到叶的路径。解决这个问题后,面试官询问了一些可以用来测试代码是否完美运行的案例。一旦他满意,他就修改了问题,现在想检查是否有任何节点到叶路径具有目标和。我简要讨论了我的方法,这已经足够好了。
  2. Q2:给定一个长度为 n 的字符串,生成该字符串所有可能的子字符串。我最初误解了这个问题,认为字符串的所有 2n 可能组合。看到这个问题的解决方案,面试官说我把解决方案复杂化了,再次解释了这个问题。他似乎对我给出的最终解决方案很满意。
  3. Q3:假设您必须构建一个 API,允许客户从所有可用的酒店中预订酒店。您将如何解决该问题以及您将为每个功能使用哪些数据结构。这是一个 OOP 问题,他正在寻找一种可以让客户查看酒店详细信息并预订一家酒店的类设计。

第 5 轮 - 个人面试 3:

    这是 HR 回合。就项目进行了详细的对话,然后是基本问题。
  1. 他问我读了哪些书,大学期间完成的最艰巨的任务是什么,在这期间遇到了什么问题。
  2. 之后,他问我在数组中搜索元素的最佳方法是什么。这是一个相当模糊的问题,我回答说,对于较小的数组,线性搜索会足够有效,但对于较大的数组,二分搜索会更有效。
  3. 然后我被要求实施一个图书馆系统,该系统允许任何人发行或归还一本书并找到相应的剩余会费。随着时间的推移,他不断添加某些功能,这些功能将通过根据需要修改类来实现。

    最终,共有 5 名候选人入选 MS-IDC,3 名候选人入选 MS-IT。

    总而言之,这对我来说是一次难忘的经历。从开始到结束的整个过程非常专业,面试官很友好和支持。他们更感兴趣的是看候选人如何实际应用他/她知道的概念,而不是看他/她知道多少不同的概念。
    我对其他候选人的建议是在此过程中保持冷静,并始终保持自信。保持你的基础知识,学习从头开始开发解决方案,而不是记住几个困难的算法。提供正确的方法和清晰的思考比实际提供完美的解决方案更重要。

微软的所有练习题!

相关练习题

反转给定字符串中的每个单词