📜  微软数据平台团队面试经验(4 年以上)

📅  最后修改于: 2022-05-13 01:58:37.008000             🧑  作者: Mango

微软数据平台团队面试经验(4 年以上)

第1轮:

问题 1:反向链接列表(在 O(n) 时间内使用递归和迭代两种方法。)

问题2:解决编译依赖。

第 2 轮:

问题1:给定一个矩形坐标列表,找出有多少个矩形重叠。

问题2:给定一个不同大小的链接列表,代表长整数。使用 sum 的结果生成第三个链接列表。

(条件/限制:Linklist 有数千个节点,所以递归在这里无济于事,使用其他数据结构存储列表也无济于事)

第三轮:

问题1:解释内存文件系统,这是我在简历中提到的一个项目。

问题 2:雨水收集器

问题 3:字符匹配。 ('?' 可以匹配 0 或 1 个字符,'*' 可以匹配 0 或更多字符。)

问题4:设计一个简单的缓存。哪些可以存储有限数量的页面,哪些支持以下功能。

Fun1 :当您在缓存未命中时更新缓存中的条目时,在时间 T 之后启动一个计时器,该条目应被标记为陈旧条目。对于每个页面,您必须维护计时器。

Fun2 : 一次可以有多个用户使用缓存。

Fun3 : 查询应该在 o(1) 时间内。

第四轮:

问题1:给定一个缓冲区,将其视为单个实体。多个用户可以读写的地方。必须实现满足以下场景的同步方法。

您还有两个函数read(), write() 在这些函数中主要是 read_buffer() 和 write_buffer()函数,它们执行读取和写入操作。现在在读写包装器中编写同步方法。

S1 : 多个阅读器一次可以阅读。

S2:当读者阅读时,任何作家都不应该写。

S3 :一次任何单个写入器都可以写入缓冲区。如果任何一位写入者正在写入,则不应该读取,并且没有其他人应该写入缓冲区。

在实现逻辑时,还要考虑操作系统中的上下文切换。

问题2:查找给定号码是否为幸运号码。