📜  DE Shaw 面试经历 |第 23 组(全日制)

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

DE Shaw 面试经历 |第 23 组(全日制)

技术测试:

1. 给定一个由 '*' 和字符组成的矩阵,打印旁边有最多星数的字符(也包括对角线元素)。如果两个字符的最大计数相同,则按字典顺序打印最小的一个。

答案:简单遍历矩阵并检查条件

2. 给定一个范围为 (0 – 49) 的数字数组和具有起始索引和结束索引的查询,找到每个查询的最大元素。

(我应用了简单的蛮力并获得了部分分数)。

答:使用分段树数据结构或平方根分解。

替代解决方案:由于我们只有 (0 – 49) 范围内的数字,因此为每个值定义一个数组映射。对于每个值,将索引存储在相应数组中出现的位置。对于每个查询,从 49 到 0 开始并检查给定元素是否存在于该范围内。

10 个技术问题(数据结构和算法、计算机网络、DBMS、操作系统)

10个能力问题

12名学生入围面试。

技术第一轮:

这一轮是在海得拉巴办公室与一些员工的视频会议上进行的。他们让我在编辑器上编写每个问题的代码。

1. 给定一个连续的字符串流,找出任意时刻前 10 个最大的字符串。以下链接会有所帮助。

https://www.geeksforgeeks.org/k-largestor-smallest-elements-in-an-array/

2. 关于多处理和多线程的一些讨论。哪个是有效的——创建线程或创建新进程。然后,他们让我在线程上编写一个代码。

你有 3 个线程和一个全局变量——假设 count = 0。第一个线程用于增加计数,第二个线程用于减少计数,第三个线程用于打印计数变量。使用上述信息,打印以下模式:1 2 3 4 5 4 3 2 1

我使用信号量来限制线程调用的顺序并尝试构建解决方案,但我无法编写正确的代码。

3. 找到一个字符串的第 K 个排列。

例如字符串= ACBD 和 k = 0;答案——ABCD。

我最初对字符串进行排序并应用算法来查找给定字符串k 次的下一个排列。

复杂度:n * log(n) + k * n

他们要求优化我无法做到的解决方案。

5名学生被选为第二轮。

第二轮技术:

1. 他们问我关于我在沃尔玛实验室的实习项目。我从事中间件的工作,所以他们问我什么是中间件以及你在整个项目中做了什么工作。始终尝试在您的上下文而不是团队的上下文中回答。由于我的项目包括 http 请求,他们问了一些问题:

  1. 不同类型的http请求。
  2. GET、POST 和 PUT 之间的区别。
  3. HTML 请求中的标头 – 请求类型、Http 版本
  4. 数据格式——JSON,html请求中的内容类型——application/json

2. 给定一个大小为 n 的整数数组。如果 arr[i – 1] < arr[i] > arr[i + 1] for i in range 1 to n – 1 OR arr[i] > arr[i + 1] for i = 0 或 arr[i] > arr[i – 1] 对于 i = n – 1;

以小于 O(n) 的时间复杂度查找数组中的所有峰值元素。

如果数组包含像 4 6 8 9 3 2 这样的单峰元素,我提出了解决方案。然后他们给了我一个提示——你能应用你的算法来解决上述问题吗?我给出了打印任何峰值元素的解决方案。

https://www.geeksforgeeks.org/find-a-peak-in-a-given-array/

他们询问上述解决方案是否适用于每种情况。我回答是,因为它受到 2 个边缘条件的支持。他们删除了边缘条件并要求新的解决方案。我说那时只有 O(n) 解决方案。

3. 编写一个函数来给出幂(x, y)。

4. 给你一个只有一个存储单元的处理器。它在每一时刻从机器接收一个整数(第一个 1,然后是 2、3、……)。为处理器提出一种算法,使得 -

如果有人从处理器中提取一个整数,它将给出一个概率为 1 /(处理器从机器接收到的整数数)的整数,即

机器将 1 传递给处理器。如果从处理器中提取一个整数,它应该以概率 1 提取 1。

机器现在将 2 传递给处理器。如果一个提取,它应该以概率 1/2 提取 1,以概率 1/2 提取 2

机器通过 3. 1 的概率为 1/3,2 的概率为 1/3,3 的概率为 1/3。

请注意,您只有一个存储单元,因此您最多可以存储 1 个整数。

我给了他们一个方法。他们对此非常满意。

5.名人问题(使用stack解决)

https://www.geeksforgeeks.org/the-celebrity-problem/

人力资源回合:

告诉我一些关于你自己的事情,讨论持续了大约 10 到 15 分钟。

第 4 轮技术:

1. 关于中间件的问题(我的实习项目),为什么要使用中间件我们不能使用前端和后端执行相同的任务,为什么要不必要地添加一层。

2、TCP和UDP的区别。您将如何使用 TCP 提供的所有服务实现 UDP?

Ans:我们可以提前在应用层实现 TCP 服务,以便以后在传输层应用 UDP 服务。使用应用层本身从两端更早地建立可靠的连接。

3. 给定一个包含 3 列 product_id、product_type 和 country 的表 products。执行查询 –

从国家 = “印度”的产品中选择 *。

这将花费 O(n) 时间。尝试对此进行优化。

答:我使用了 B+ 树的概念和 B+ 树的索引。

4. 讨论操作系统概念,如交换、请求分页、操作系统如何选择所需的帧(回答页表的全过程、页面错误、受害者帧、页面替换算法、页表中的位如修改、读/写等)

5. 你有许多 6 GB 的文件,每个文件都有整数流。您的主内存中有 4 GB 的空间(主要用于换出、换入)。您必须将排序的整数序列存储在其他输出文件中的所有文件中。你会怎么做?

我给出了错误的解决方案,然后放弃了。

6. 截留雨水问题

https://www.geeksforgeeks.org/trapping-rain-water/

为您的项目做好充分准备,并尝试向他们传达您在项目中完成了大量工作的信息。

在每一轮的最后,他们会问你是否有任何问题。你应该准备一些好的问题。总能给人留下好印象。