微软面试经历 |设置 179(校内)
第0轮:编码轮
3个编码问题:
平台 cocubes(用户界面非常糟糕,准备在无法放大的非常小的文本编辑器中进行编码)。
1.查找字符流的ASCII值的平均值(1分)。
2.评估一个给定的由数字和运算符组成的中缀表达式。
3.链表问题:在奇数位置插入倒置的节点列表。
1->2->3->4->5 到 1->5->2->3->4
(其他问题是){
2.正则表达式匹配
找出在给定的字符串中存在多少个匹配 10*1 的子字符串。
3. 修剪 BST,使其仅包含具有给定范围内的值的节点。
}
第一轮:笔和纸轮
给出了 2 个问题,预计将编写正确的代码。
1.火车到达和离开时间已经给出,你必须计算最大值。需要站台,这样火车就不必等待了。
2.设置所有树节点的next指针。
(下一个指针应该指向同级当前节点的右节点)。
第 2 轮:技术面试 1
- 问了我的项目。
- 从 preorder 构造 BST 并对其进行优化。为它编写正确的代码。 (我也和面试官讨论过为什么复杂度不能比 nLogn 降低)。
- 将矩阵旋转 90 度(她问我是否已经完成,我回答是,她给了我一个更简单的)。
- 检查树的所有叶节点是否位于同一级别。也写代码
.
第三轮:技术面试2
1.要求我为 hashmap 写一个 random() 以在 0(1) 时间内返回一个随机键。
他帮助我完成了它,我在构建解决方案时谈到了解决方案的所有优点和缺点。
2.让我写代码来构造Trie。
3. 问我作为应用程序级程序员计算网络带宽的问题。
BW=数据传输/时间延迟(他问但我不同意,我谈到了所有延迟和重新传输以及时间延迟所涉及的东西,而不是他暗示文件读/写)
所以应用观点::
时间延迟=文件读/写时间+传播延迟
所以BW =数据传输/传播延迟。
4. 给了我 25 匹马的问题,我礼貌地回答说我已经知道了。
5. 然后他问我如果每个人要互相比赛,会有多少场比赛。
答案:nc2。
6. 一场比赛如果有淘汰赛,有多少场比赛。
答案:n/2+n/4+n/8+……+n/2^logn
第四轮:技术暨HM面试
- 讨论项目,我做了什么以及我的队友做了什么。我从中学到了什么。
- 中缀表达式求值。他问为什么你需要 2 叠。
- 设计模式
- 我在项目中使用了什么设计模式
- 你对单例设计模式了解多少
- 编写代码来实现单例设计模式
- 我写了 4 种方法以及它们的优缺点。
- 为一个呼叫中心编写一个函数getCallHandler(),该呼叫中心由 10 个员工 1 个领导 1 个呼叫中心负责人组成。
- 只有在没有员工可用的情况下,才必须将电话转给主管,只有在没有员工和主管可用的情况下,才必须将电话转给呼叫中心负责人。
- 然后他问我的解决方案什么时候会失败,我谈到了多线程程序和共享变量的竞争条件。
- 他让我编写代码来同步它。
- 询问我使用的操作系统以及我是否使用过它的任何 api。问了我关于ubuntu的问题。
- 为什么我想加入微软?
- 你喜欢什么技术?
建议:
1.不要花太多时间写代码,全程保持沉默。写一半的代码,讨论你的方法和它的缺点。他们甚至可以通过查看您写一半的代码来节省编码。
2. 如果你不能假装你已经做了一个问题,那么直接告诉面试官。
3. 与面试官讨论你的想法和方法,如果他们不知道你卡在哪里,他们将无法帮助你。这也给他们一种印象,即你可以与其他人一起解决问题,或者你可以合作(团队合作者)。