微软面试经历 |设置 90
我最近参加了微软的一次面试。以下是我的经验:
第1轮:
这是一个书面回合。每个人都被问到以下两个问题:
- 查找距离给定节点 k 处的所有节点
- 给定一个数组,排列元素,使得通过连接元素形成的数字最大。例如:输入 = [9, 93, 24, 6],输出应为:[9,93,6,24]。这是因为如果你连接所有的数字,993624 是可以形成的最高数字。
本轮比赛时间为 40 分钟。但是,如果您要求,他们会给您额外的时间。这一轮结束后,午餐供应。
第 2 轮:
- 这是一个面对面的回合。几乎第一轮的每个人都被要求参加 F2F 面试。简单介绍后,他问了我这个问题:
- 给定一个包含大量数据的数组(例如 n,其中 n 可以达到一百万),数组中的值在 1-k 的范围内,其中 k<<
O(k) 额外空间。 - 他问了另一个关于线程安全单例类的问题,并让我为它编写代码并解释它。
- 然后问了几个问题,为什么微软和类似的东西。
第三轮:
我不记得正确的问题,但它是关于数组和交换并找到可能的最低成本的东西。
第四轮:
- 最长回文子串集 1
但是,面试官对代码不感兴趣。他让我为这个问题做一个TDD。所以他让我为这个问题写测试用例。他想看看我是否真的可以分析并找到这个问题的各种可能的案例。经过一番努力,我能够找到各种不同类型的测试用例。我给出了一个蛮力解决方案。
第五轮:
- 两个元素之间的最大差异,使得较大的元素出现在较小的数字之后
但是,我给出了与本页中提到的解决方案不同的解决方案。
第六轮:
- 编写String类的实现。实施您选择的任何四种方法。
- 为 linux 的 tail 方法编写代码,您必须从末尾读取一些 x 行的大文件,而无需读取整个文件。我给出了一些基于索引的解决方案。面试官非常友好,在找到解决方案方面提供了很多帮助。
由于面试结束时已经很晚了,他们安排了一辆出租车让我回家。
总的来说,体验非常好。面试官和HR都很友好。
微软的所有练习题!