微软面试经历 | 4.5年经验
最近接到微软的电话。 HR 询问了我目前的工作和经验,并为我提供了 Microsoft 招聘程序的更新。该过程包括5轮(1轮编码,3轮技术讨论,1轮管理讨论)。
编码轮:- 本轮包括 2 个关于 codility 平台的问题。问题很简单,一个是调试,一个是你必须编写代码。
这一轮过后,我接到一个电话说微软会有一天的流程,一天四轮面试。
第 1 轮——这一轮包括 2 个问题
- 我将获得 24 小时日历的时间段可用性,随机时间段将到来,我必须编写一个 API,如果时间段可用,它将预订时间段,如果时间段不可用,则返回 -1。 API 应如下所示:- int checkAvailability(int start, int end)
我还必须检查重叠条件,经过一段时间后,数据将被发送到另一个 api,它将在 24 小时内返回可用的时间段。问题的一部分是:- https://www.geeksforgeeks.org/merging-intervals/。定义时间的数据类型(这是对上一题的增强)。 - 在二叉树中找到距离叶子 k 的所有节点。 https://www.geeksforgeeks.org/print-nodes-distance-k-leaf-node/
第 2 轮——这一轮从我对项目的讨论开始(15 分钟讨论)。之后,我们继续设计记事本类型的编辑器。该编辑器由以下 API 组成:-
- a - 插入(插入单词)
- b -删除(字符串单词)
- c -copy(int 指针)
- d -粘贴(整数指针)
- e -undo(允许 10 次操作)
- f -redo(允许 10 次操作)
需要设计类图、组合和功能。
第三轮——这一轮包括关于我的项目所涉及的技术的技术讨论。
- 后来我们转到二叉树,他让我写下水平顺序遍历、倾斜顺序遍历的代码。
- 之后他要求降低空间复杂度。我已经着手解决它并对其进行编码。请检查问题的链接以供参考。 https://stackoverflow.com/questions/59582406/level-order-tree-traversal-without-using-additional-memory
第 4 轮——这一轮更像是行为+技术轮。我被问到的主要是 HR 问题,还有 2 个关于编码的技术问题。
- (最大连续子数组)https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/
- 以相反的顺序打印重复元素的出现。输入:- 1 2 3 3 2 1 4 4.,输出:- 4 1 2 3
判决:- 选择。
自信而积极,不要急于解决问题,向面试官索取更多信息,提出有效的问题。要有礼貌。
多练习!祝一切顺利!