微软IDC面试经验(全职)
Round-1(在线测试)
第一轮在线是在 Co-Cubes 上,由 3 个编码问题组成(测试时间:75 分钟):-
- 给定一个字符串,找出其中第一个不重复的字符。 (2 分)
https://www.geeksforgeeks.org/given-a-string-find-its-first-non-repeating-character/
- 给定一个格式为 (DD/MM/YYYY) 的日期,找到星期几。 (3 分)
- 在 M 个节点之后删除 N 个节点。 (5 分)
https://www.geeksforgeeks.org/delete-n-nodes-after-m-nodes-of-a-linked-list/
这一轮之后,大约有40人被选中。
第二轮(笔试)
本轮包括 2 个编码问题(45 分钟)
- 给定一个 unix 路径作为字符串,找到目录的当前路径。
例如:“a/./b/../c” – “a/c”
我使用了 Deque 的概念,虽然它可以通过堆栈来解决。
- 给定一个数字,计算解码次数。
https://www.geeksforgeeks.org/count-possible-decodings-given-digit-sequence/
给出了一些额外的案例,必须处理。
建议:- 在代码完成后明确提及时间和空间复杂度。避免任何剪裁和错误。
时间非常少,需要良好的时间管理。
这一轮之后,大约有 15 人被选中。
第三轮(技术面试)
1)我的项目中的问题。他向我询问了我的暑期实习和选拔程序。然后他向我询问了我的项目,包括工作流程、效率考虑和各种典型问题。我都回答了。
2)他给了我第一个问题。在一个议会中,有 500 个选区,每个选区都有一个投票权,可以投 [0, m] 票。告诉哪个选区会赢。在议会中,获得超过 50% 选票的选区将成为赢家。我生成了各种测试用例并确认了他的答案。我传达了我处理所有极端情况的方法。他对我的做法很满意。
3)给定一个整数数组,找出可以组成的最大数。我再次生成了各种测试用例来确认问题。后来,我讨论了我的方法并被要求编写代码。他通过采取各种测试用例进行检查。
4)后来,他让我实现井字游戏,并讨论了要实现的最佳数据结构。
面试官真的很乐于助人,回合结束得很好。
Round-4(技术面试)
1)给定N-ary树,找到连续整数的最长路径的长度。我讨论了我被要求编写代码的方法。
2) 给定对 [m, n] 使得在比赛中,m>n 的位置,即 m 在 n 之前完成比赛。找出所有玩家完成比赛的顺序。作为一个运动员,破解这个并不难!
面试官似乎很满意。我在等待下一轮。
提示:- 始终讨论您想到的第一种方法,然后考虑优化的解决方案。
这一轮之后,大约有9人被选中。
第五轮(人力资源 + 技术)
1)给定一个字符串,用地图中存在的值替换子字符串。我讨论了这种方法,其中一个测试用例失败了,我被要求重新考虑我的解决方案。我讨论了另一种他说好的方法。
2) 来自项目的问题。我在 Rails 上使用 ruby 做了一个项目。我被问到一些可以作为开发人员在网站中实施的安全检查以及各种 gems 实施。讨论一直持续到黑客攻击,我试着回答他们。面试官问了我一些关于我其他项目的基本问题。
最后,我是四个选择之一!