微软采访 |第 27 组
第 1 轮:(1 小时)
===============
- Q1。设计一个像Java一样的垃圾收集器。您将如何检测依赖的参考循环?
Hist:类设计,不相交图的循环检测算法(连接图列表) - Q2。在 O(logn ) 复杂度的有序旋转数组中查找元素。
第二轮:(1.h 15min)
====================
- Q1。给定一个具有重复元素的排序数组,如何在 O(logn) 中找到给定元素的第一个索引。
为它写代码。更改条件以找出该元素的最后一个索引。
[提示二进制搜索] - Q2。你有一本单词词典。给定一个单词, print all anagram are in dictionary 。说明用来解决这个问题的数据结构。
- Q3。设计一个芯片加密系统。它将执行以下操作:
- 取用户的一句话
- 通过一些私钥或公钥密码术或任何其他算法加密单词。
- 通过 TCP 或 UDp 或 SSL 传输加密字。
- 使用 OOD 设计类图。您使用哪种设计模式来实现这一点。
第三轮:(1.h 15min)
====================
- Q1。在一个平面中,给出了 n 个点(X 和 Y)。你将如何找出最大的共线点。扩展这个算法。它用于 3D 平面中的点(x,y,z)。
- Q2。反转一个 32 位整数。为它写代码。
- Q3。多线程有什么不同的问题?互斥量和信号量有什么区别。
- Q4。你有一个包含百万字的文件。在该文件中查找最常见的 10 个单词。您可以将所有单词存储在内存中的节点。
(注:最小堆 + 列表)
第四轮:
跳过……🙂
第 5 轮(2 小时 30 分钟)
====================
- Q1。你会得到一个文本,其中所有空格、句号和所有标点符号都被删除。您想通过在单词之间放置空格来重构文本。
给出了一个 dict 并且还给出了以下 API。- 决定文本是否可以转换为带有有效单词的句子。
- 找出有多少种方法可以重建文本。
- 找出可用于此重建的最小空间数。
- 对于案例 (c),找出您想放置空格的索引。
- 现在将文本恢复到句子中。
- 后续问题:
- 1. 为什么贪心技术对此不起作用?
- 2.是的!回溯将起作用,使用回溯有什么问题?
- 3. 说明并解释解决方案是如何从动态表中收缩出来的?
- 4. 为 (c),(d),(e) 编写正确的工作代码。
- Q2。给定一个 BST,用总和 S 找出从根到叶的最小长度。注意:
- 从根到叶节点的路径。
- 路径的节点总和为 S
- 如果存在多个这样的路径,则打印最小长度路径。
- 用于该算法的 BST 而不是 BT 的优势是什么,它如何提高性能。在 BST 中,是否需要探索双方?
- 为它编写工作代码。
状态:已选中! (面试电话是针对 SDE-I,但他们为我提供 SDE-II(L61) 职位)
微软的所有练习题!