微软全职面试(校园)
第一轮(75 分钟)
CoCubes 上托管的在线编码轮次:
- 四舍五入到最接近的 10s 倍数。如果给定数字的个位 10 26==>30
- 打印给定数字的下一个最小回文数。
例如 51==>55 66==>77 99==>101 - 遍历链表中的 m 个节点,直到链表末尾,删除 n 个节点
第二轮(团体飞行)30分钟
- 问题 – 给定一个 BST 打印出所有根到叶路径的总和等于给定数字的路径。
另外,编写一个完整的程序,其中包括树的构造,然后找到路径。这是一个书面回合,有一个问题我们必须编写完整的程序。向讲师询问有关问题的问题非常重要,以充分了解问题以及他们的实际需求。不要着急,因为仅仅解决并不重要,您的解决方案必须是正确和优化的,因此非常建议您将您的方法告诉您的导师。我想说这一轮的决定因素通常归结为你对问题的清晰度和解决方案中要求的东西,有时他们甚至要求写下算法,测量时间复杂度,给出适当的测试用例,然后写一个 !!干净的代码!!!! (是的,笔迹和清晰度很重要,否则他们甚至可能不会阅读您的论文,他们也是人类)
第三轮(F2F)
- 检测链表中的循环
- 查找旋转排序数组中的旋转计数
- 编写一个函数来检查字符串和数字的回文。 (使用函数重载完成)
- 给出多态性的实际例子,来自农业、商业、游戏、健康、航运业。我给他举了一个游戏行业的例子,在游戏中,当玩家击中任何表面时,都会执行不同的功能。这个问题测试你的思维能力,所以要创造性地回答这些问题。
- 使用 7 个单位的金棒向员工付款? (拼图)https://www.geeksforgeeks.org/puzzle-4-pay-an-employee-using-a-gold-rod-of-7-units/
- 解释堆排序的算法并实现它
- 实施 YouTube 所以他告诉我主要关注如何处理可扩展性、性能和可用性。要解决设计问题,您需要了解您可以通过制作项目或练习设计问题来开发的概念。所以我告诉他,为了处理性能,我会使用多线程、缓存、分布式计算等。为了处理可用性,有副本服务器、松散耦合系统等可扩展性、多数据库、水平粉碎、 Vertical Shradding, Lazy Loading 他问了我更多关于客户端应用程序(Web 或本地应用程序)设计的问题
这一轮过后,我直接被送进了最后一轮……幸运的我
第四轮(技术+人力资源)
- 他让我告诉他一些关于我自己的事情,并同时查看我的简历。从我的实习和项目中问了我很多问题。所以只写你非常了解的东西。就像这一轮的 90% 都集中在我的简历上
- 然后他让我设计一个聊天机器人,因为我的简历中有一个类似的项目。他说要对系统的不同组件进行高级设计。
- 将矩阵顺时针旋转 90 度
- Python中的内存管理是如何完成的,或者Python和 C 中的内存管理有什么不同
- 过去 3 个月你学到了什么新技术
.