📜  微软面试经历|第 53 集

📅  最后修改于: 2021-09-17 16:03:45             🧑  作者: Mango

第 0 轮 –
BST 中的第二个最大元素

对整数数组进行排序,使得 –
– 所有奇数都在左侧并按升序排列。
– 所有偶数都按降序排序,并从奇数结束的地方开始。
例如——
I/P – 2, 3, 4, 5, 8 , 10, 12, 11
O/P – 3, 5, 11, 12, 10, 8, 4, 2

我使用快速排序分区逻辑来分隔奇数和偶数,然后对两半进行快速排序。

第1轮 –
假设 RAM 大小为 1024 字节。系统上运行着多个进程。您的应用程序将获得此信息 –
(Thread Id, Memory Block, time, R/W) – 它本质上告诉线程 T 在时间 t 正在使用内存块 M 并且操作可以读或写。

内存冲突定义为——
– 令 x 为标准时间单位。
– 同一位置的多次读取操作不会引起冲突。
– 在 x+5 到 x-5 之间对位置 M 的一次写操作将导致线程在时间 x 访问位置 M 时发生冲突。
– 示例 – 如果线程 T1 在时间 x+1 访问内存位置 M,并且如果线程 T2 在时间 x+6 之前访问位置 M,则 T1 和 T2 是冲突的候选者,给定其中之一,然后执行写操作。

您将获得访问内存位置的线程列表,您必须找到冲突。

例子 –
(1, 512, 1, 右)
(2, 432, 2, W)
(3, 512, 3, 右)
(4, 932, 4, 右)
(5, 512, 5, W)
(6, 932, 6, 右)
(7, 835, 7, 右)
(8, 432, 8, 右)

O/P –
线程 1 & 3 与线程 5 冲突
所有其他操作都是安全的。

第 2 轮 –
https://www.geeksforgeeks.org/turn-an-image-by-90-degree/

层序遍历 ->
使用队列
使用递归

第 3 轮 –
http://stackoverflow.com/questions/746082/how-to-find-list-of-possible-words-from-a-letter-matrix-boggle-solver
> 我的解决方案是改变这个 – https://www.geeksforgeeks.org/mobile-numeric-keypad-problem/

第 4 轮 –
3D boggle 解算器和 3D 字谜解算器。
设计数据结构来存储并给出解决方案。

微软的所有练习题!