微软面试体验(全日制校园)
微软于 2018 年 8 月到访 BITS Pilani 海得拉巴校区进行实习,具体流程如下:
第 1 轮:在线编码,75 分钟,来自问题库的 3 个编码问题(入围 65/~150 个)
使用的平台是Co-Cubes 。共提出 3 道题,分别为 2 分、3 分和 5 分,难度不一。
- 给定一个数字,将其四舍五入到最接近的 10 倍数。 https://www.geeksforgeeks.org/round-the-given-number-to-nearest-multiple-of-10/
- 给定一个日期,找出如果 1990 年 1 月 1 日是星期一,那将是哪一天。类似于 - https://www.geeksforgeeks.org/find-day-of-the-week-for-a-given-date/
- 给定一个链表,打印 m 个节点,删除 n 个节点等等。 https://www.geeksforgeeks.org/delete-n-nodes-after-m-nodes-of-a-linked-list/
还被问到的其他一些问题是
- 给定一个网格,每个单元格由正点、负点或无点组成,即零点,找到从 (0, 0) 到达单元格 (m-1, n-1) 的最小初始点,并具有一些约束。 https://www.geeksforgeeks.org/minimum-positive-points-to-reach-destination/
- 给定一个数字字符串“str”和一个整数“n”,通过从字符串中删除“n”个数字而不改变输入数字的顺序来构建可能的最小数字。 https://www.geeksforgeeks.org/build-lowest-number-by-removing-n-digits-from-a-given-number/
第 2 轮:小组飞行轮,45 分钟,2 道编码问题,书面轮(~20/65 入围)
这是一个书面回合,我们希望编写功能齐全的代码,没有任何错误和错误。必须解释使用的库函数(如果有的话),并且如果可能的话,也必须为此编写代码(不是那么严格)。伪代码和算法也是允许的。所做的所有假设也必须得到解释。
- 打印给定模式的第 n 行
- 1
- 11
- 21
- 1211
- 111221
- 312211
- 13112221
- …
https://www.geeksforgeeks.org/look-and-say-sequence/
- 给定一组数字,以产生最大值的方式排列它们。
https://www.geeksforgeeks.org/given-an-array-of-numbers-arrange-the-numbers-to-form-the-biggest-number/
第 3 轮:技术面试 1,~1:15 小时
面试官非常友好,首先问了一些与我的简历和暑期实习有关的问题。然后他从一些基于数据结构和算法的问题开始
- 给定一个 Unix 文件路径作为字符串,尽可能高效地对其进行规范化
例如,“/abc/def/../..”在标准化时会产生“/”,“/ghi/jkl/./..”会产生“/ghi”
https://www.geeksforgeeks.org/simplify-directory-path-unix-like/
我给了他一种使用堆栈的方法,他对此很满意。角落案例非常重要。
- 给定一个多项式表达式,尽可能有效地简化它,并按变量的递减幂对其进行排序。
例如 5x^12 + 6x^10 + 4x^5 + 6x^5 + 3x^3 + 2x^3 + 9 将导致 5x^12 + 6x^10 + 10x^5 + 5x^3 + 9
我为他提供了 3 种方法,一种是树,一种是最大堆,最后一种是链表,考虑到所有极端情况,并在时间和空间复杂度方面不断优化代码。他似乎对我的做法很满意。
- 给定对链表节点(不是头节点)的引用,删除该节点。 https://www.geeksforgeeks.org/in-a-linked-list-given-only-a-pointer-to-a-node-to-be-deleted-in-a-singly-linked-list-how-你删除它/
接下来,他转向 DBMS 和操作系统。有人问了一些 SQL 查询和同步问题,并要求我解释同步中的生产者-消费者问题。还提出了一些 ML 问题。
然后面试官继续我的项目,我被要求为我的一个项目绘制详细的 ER 图。
第 4 轮:技术面试 2,~1:15 小时
一些与项目相关的问题与一些谜题一起被问到。还询问了一些基本的编码问题。
这一轮是技术和人力资源的混合,因为有很多与简历相关的问题。我被要求详细解释我在暑期实习中所做的项目,我使用了哪些技术,团队结构,项目设计以及我们选择上述细节的原因。
第 5 轮:人力资源/设计轮,~1:30 小时
这一轮基本上是人力资源和创意设计轮的混合。面试官想检查候选人是否可以针对任何给定问题进行开箱即用的思考,并提出独特的优化解决方案。
像设计一个奇观,库存管理系统这样的问题被问到了很多 DBMS 理论,比如 3 模式抽象,数据独立性,ACID 属性,并发控制,3 层,2 层架构。我被要求画出设计过程的每一个阶段。
最终选了4位候选人,我就是其中之一!!!
一些与编码面试相关的技巧对我帮助很大
- 与某些公司不同,面试官非常友好且知识渊博,并试图了解您的解决方案,而不是将他们的解决方案强加给您。
- 面试官寻找的第一件事是信心。几乎每个入围的人都拥有高超的计算机科学知识,但如果他/她不能自信地说话,或者在面试时保持沉默,他们就会被当场拒绝!即便是组飞后得分最高,先完成了HR轮的人,也因此被拒绝了。
- 在面试过程中犯错是可以的,他们是来纠正和帮助你的,但更重要的是继续说话,让面试官知道你脑子里一直在想什么。
- 继续谈论你的思考过程,并告诉面试官你脑子里在想什么。不要坐以待毙。
- 始终告知他们您在编码之前所做的任何假设和您的语言偏好,然后继续。始终尝试包括 Corner Cases 。它们非常重要。
- 是的,一件事,除了在线编码回合,总是在编码时写评论。我再说一遍,总是为你所做的任何事情写评论。这很重要,尤其是对于小组飞行。
- 为每一轮面试官准备2-3个问题。如果它与公司,京东有关并表现出您对它们的兴趣,那就更好了。
- 你应该知道简历上写的每一件事。可能会要求您详细说明任何事情。 5 分钟内不要写任何你不能说的东西。
- 重要的科目包括 DSA、DBMS、OOPS、OS、TOC 以及某种程度上的网络。学科选修课也很重要。
- *Vital Info – Co-Cubes 仅显示 3 个测试用例,其余全部隐藏。所以尽量让你的代码尽可能高效和优化,包括所有的极端情况。
- 尝试在计算机和纸上练习编码。你会更好地理解代码的细微差别。
- 实习!尝试获得暑期实习。你将在那里做的工作将成为你简历中的一个重要话题。如果你拿到了PPO,那就冷静一下,否则经验还是很宝贵的。简历很重要,请多花点时间好好写。
谢谢!