SWE Intern 的微软面试体验
部门:信息技术
- 批次:2023
- 公司名称:微软
- 实习角色:SWE实习生
- 您的角色领域(软件/咨询/核心电子设备等) :软件截止:CGPA >= 7.5
面试过程(有多少轮,几轮) : 1轮编码和3轮面试(2轮技术和1轮人力资源)
流程各个阶段提出的问题:在在线评估中,我们被问到了 2 个 DSA 或竞争编程类型的问题,其中一个是 greedy,另一个是 dp。
第一轮技术:
- 你将如何将一棵树从一个程序转移到另一个程序? (我在树中使用文件处理和索引来回答)
- 以及关于上述问题的一些后续问题(如更高的效率、易于计算、不同的场景、时间和空间复杂性。)
- 验证可能包含数字的字符串表达式,“*”表示乘法,“/”表示除法,“+”表示加法,“-”表示除法,以及一些括号。我想出了一个堆栈方法。然后他让我编写相同的代码(不需要运行它)。我已经对其进行了编码,他很满意,但只是运行它进行测试,它工作正常,但在极端情况下失败了。然后他让我调试。花了2-3分钟,但发现了错误。我刚刚更改了代码,它运行良好。但是,没有必要运行代码。您也可以在文本编辑器或 doc 文件中编写代码
第二轮技术:(对我来说是技术+人力资源)
- (从一个 HR 问题开始)你在这 2 年的大学里学到了什么?
- 你将如何检查一棵树是否平衡?
- 我知道这个概念,但以前从未编码过。我告诉了我的方法,他对此表示同意。并要求我编码。我做到了,但是以蛮力的方式。他问我这是否是最佳方式。然后我想出了一个 O(n) 时间,O(n) 空间的 DP 方法。当我在那个问题上应用 dp 时,他非常满意。然而,最优解具有 O(n) 时间和 O(1) 空间。他让我想想这样的解决方案。我要求提示。然后我想出了最优化的方法。
- 选择结果背后的原因(哪些技能对您获得工作的帮助最大?) :数据结构和算法(DSA),竞争编程(CP),沟通技巧
- 准备策略(你如何为非面试轮做准备?你为面试轮做的准备如何演变?) :
编码轮:
- 我没有单独准备编码轮,因为我经常参加竞争性编程(CP)比赛,这让我对编码轮有足够的信心。
- 由于经常进行竞争性编程,我擅长调试,这在编码回合中帮助了我很多。
技术面试:
- 对于技术面试,我在面试前将近一个月练习了来自 Leetcode 和 GfG 的 DSA 问题(同时进行了某种修改)。
- 我已经修改了整个面向对象编程(OOP),因为有些公司确实会就此提出问题。在准备实习季节的时候,我和几个朋友进行了结对编程,这帮助我更快更有效地学习。
- 即使在今天,我大部分时间都在做结对编程,而不是单独练习。结对编程非常有用,也是一种非常有效的编码模式。我在面试前 1 个月学习了一些主题,包括动态编程(DP)。由于我的时间较少,无论我解决了什么 DP 问题,我都以两种方式(即自上而下和自下而上)进行。这帮助我在更短的时间内变得擅长它。
人力资源回合:进入人力资源回合。我在 youtube 上观看了一些模拟面试,这让我对 HR 回合有了一些了解。我准备好自信并以结构化的方式说话。但我没有通过 HR 轮。我是在第二次技术面试之后被选中的。
- 但是,我的面试官问了 1 到 2 个 HR 问题。
- 他问我“在这两年的大学里你学到了什么?”。
- 我也为 HR 问题做好了充分的准备,例如“介绍一下你自己”、“我们为什么要雇用你?”、“你的优势和劣势是什么?”、“你为什么想加入我们公司?”等等
- 我制作了一个投资组合网站和 2 个 ML 项目。
- 准备资源——
- 必要的资源(必须做的) :
- Leetcode 和 GFG(用于 DSA),
- Javatpoint.com(用于 OOP),
- 高级资源(可以做) :Codeforces,
- 实习经历(如已完成) :
您想与学生分享的任何其他内容:专注于 DSA 和您的沟通技巧。一些公司还询问 OOP 问题。在学习任何东西时,一致性最重要。结对编程非常有效。竞争性编程在编码轮次、DSA、压力处理、问题解决和调试方面有很大帮助。
其他建议:
- 与面试官沟通好
- 自信点
- 适当的计划和奉献精神有助于破解任何公司
- 不要忽视 CGPA 和 Sem 考试。由于 CGPA 截止(校内实习),许多优秀的学生无法申请许多公司。尝试使 CGPA 高于 8。