微软面试经历 |第 56 组(适用于 SDE 2)
第一轮(F2F)1小时:
————————————-
1. 给定一张有很多像素的图像,找出所有强连接的像素对。
2. 给定一棵具有数千个节点的 N 叉树,将不共享公共路径的叶节点配对。即两片叶子只有在它们没有先前配对中使用的共同边时才能配对。
For example,
A
/ | \
B C D
/ / | \
E F G H
Leaf nodes: E, F, G, H & D
Possible Pairs in O/Ps:
a) (E-F), (G-H) or
b) (E-G), (F-H) or
c) (E-H), (F-G) or
d) (E-D), (F-G) or
e) (E-D), (G-H) or
f) (E-D), (F-H) or
g) (D-H), (F-G) or
h) (D-G), (F-H) or
i) (D-F), (G-H)
注意:如果我们配对(加入)比如(EF),那么我们不能配对(DG)或(DH)中的任何一个,因为它们共享从 A 到 C 的公共路径。
i.e. E-B-A-C-F —> (E-F) pair
D-A-C-G —> (D-G) pair
D-A-C-H —> (D-H) pair
所以上述情况是不可能的
我尝试使用几种解决方案。
后来使用了数学归纳法(根据他的提示)
基本上,n = 2 叶节点的配对是正确的
假设存在 n = 2k 叶节点的配对 (k > 0)
现在您需要证明存在 n = 2k+2 个叶节点的配对
所以基本上你只需要看看你可以以不同方式插入新节点的情况
我可能会尝试为此撰写一篇文章。
这两个问题都询问了代码。
第二轮 (F2F) 45 分钟 - 1 小时:
——————————————————
1. 给定一棵树和指向树中某个节点的指针,打印与该节点处于同一级别的最左边的元素
2. 给定一个 C 字符串,将其转换为它的 ascii字符串。例如:“CAR”->“676582”(C-67、A-65、R-82)
条件是你必须用 C 语言编写它并且你必须在原地完成它。
3. 关于程序、进程间通信、pthreads、 Java垃圾收集器等的大量问题持续了大约 20 分钟
第三轮(F2F)1小时:
————————————
1. 反向链表中的 k-alternate 节点
2. 给定两个字符串s1 和 s2,查找 s1 中是否存在包含 s2 字谜的子串(O(n))
3. 给定 10,000 个微软员工的日历对象的输入,输入是一个时间间隔 T 和一个employee[] 数组,找到employee[] 数组中的所有员工在最短时间间隔T 内空闲的第一个间隔(即安排会议)
我使用 B+ 树和哈希做这个问题,有人告诉我可以使用最大流量算法。
第四轮 (F2F) 招聘经理 - 1 小时:
——————————————————————
1.项目/以前的工作
1. 设计whatsapp的后端系统:(我们应该能够每秒处理100万个请求并以最小的延迟传输数据)
我使用了很多分布式系统概念,如消息队列、分片、CDN、监控、InnoDB/MongoDB 等
强烈建议准备有关可扩展性和分布式系统的问题。
这个网站帮助了我很多,我希望其他人也能找到他们梦寐以求的工作!
谢谢极客🙂