这里讨论的所有答案都只是我在采访中给出的答案
(不要判断它的正确性,这些只是告诉你面试中会问的问题类型)。
在直接进入答案之前,请尝试解决这些问题。
技术测试-
1. 找出可以重复形成完整矩形的最小面积图案(l, r 小于或等于100)
2.在二进制字符串翻转k位后找到最长的连续块
我在两个问题中都使用了蛮力(第一个完整的,第二个部分的)。
如果您不知道优化的解决方案(对于难题),我会建议您直接使用蛮力。不要浪费太多时间来构建优化的。
技术面试 1-
1. Networking中的请求类型。(如果你在简历中写过web开发)
ans: GET 和 POST,他们也询问了其他方法。
2. b/w GET 和 POST 请求的区别。
ans: GET 方法中 url 中的查询字符串。但他们问了更多我不知道的差异。
3. URL 中的最大字符数
ans:256(小心,他们会通过问一些问题来建议你,你必须抓住这些建议)
我从这个问题中得到了这个提示,并立即回答说 url(GET 方法) 中的字符数可以是 256,但在查询字符串中的字符数是无限的。
4. 通过将数组划分为多个子数组来查找大型数组的标准差。
答:首先我讨论了标准差公式,然后是标准差的实际含义(与平均值的变化)。
(我建议了一些方法,但那是不正确的。)
他们再次要求做同样的事情来寻找均值。
我这样做并解释了它们,这再次暗示了上一个问题。
(我明白了并给出了方法,他们感到满意。)
用上述方法求解一般数学公式。
答:我说过,对于任何数学公式,你都必须将其转换为某种性质
本质上是可加的(通过执行一些操作),获取完整数组的值
然后再次将其转换为所需的。
5. 圆圈拼图
答案:https://www.geeksforgeeks.org/puzzle-round-table-coin-game/
6.编写heapify算法
void heapify(int heap[], int ind) {
if (ind > size) return;
int small = ind, l = 2 * ind, r = 2 * ind + 1;
if (heap[ind] > heap[l] && l heap[r] && r <= size) small = r;
if (small != ind) heapify(heap, small);
}
7.给定递归程序中的问题和优化代码(递归)
int sum(int x) {
if (x == 1) return x;
return x + sum(x - 1);
}
答:
如果 x <= 0 那么这可能会进入无限循环
如果 x 非常大,则此函数将使用系统堆栈中的大量空间
我建议直接使用公式 (x * (x + 1)) / 2,但他们要求优化递归解决方案
然后我建议
int sum(int x) {
if (x <= 1) return x;
int a = sum(x / 2);
if (x & 1) return 2 * a + (x / 2) * (x / 2) + x;
else return 2 * a + x / 2 * x / 2;
}
8. 删除链表中的循环
ans:我问的是链表是单指针还是多指针。
他们说单身
我问没有循环,他们说有多个循环。
我回答不可能在单链表中出现多个循环。
9、c++设置(如果简历中提到c++)
ans:所有元素都是唯一的,并按顺序排列。
10.实现Set c++并优化操作(INSERT、DELETE、UNION、INTERSECTION)
ans: 花了一些时间然后建议BST,因为所有元素都已经按顺序排列了
(inorder traversal) in BST and insert, delete operation in log n time。
他们询问并集和交集的时间复杂度,
我说n log n(这是不正确的),后来我更正了自己并回答了O(n)。
然后他们问如果树倾斜怎么办,然后我更改了数据结构并提出了一些新方法,他们不满意然后我说自平衡树(这就是他们想要的)。
11.什么是AVL TREE(它是如何平衡的)
ans: 讨论了它的属性和(LR, RL shifts)
12. DATABASE 中数据是如何处理的(如果提到 dbms)
答案:B+树
然后讨论B+树、它的特性和它的用途。
技术面试 2-
1. 讨论我的项目。
2. Java (在哪里使用)(如果提到了Java )
3. OOPS 概念(多态、继承、接口、实现)
4. 谜题:给定一个时间数组(整数)。在最短的时间内将该阵列转移到河的另一边。(假设一次最多两个元素可以在船上行驶)。
答案:取一个数组 [1, 2, 4, 7]。请注意,如果 {1, 2} 在船上行驶,那么它们将只需要 2(max(1,2)) 个时间单位(而不是 1+2)。
然后我建议首先将 {1, 2} 发送到其他大小,然后 1 返回(所用时间为 2(going) + 1(coming))。
然后发送 {4, 7} 和 2 将返回(时间为 7(going) + 2(coming))。
然后再次发送 {1, 2}(所用时间为 2(进行中))。
总时间 – 2+1+7+2+2 = 14 个单位。
通常,首先发送最小的两个,然后将最小的(右侧)取回。在下一步中,发送最大的两个并取回最小的元素(右侧)。重复此操作,直到传输完整阵列。
5. 线程(编写一个显示线程创建的程序)(如果您不太了解线程,可以跳过它)。
6. 找出#DEFINE SQUARE(x) x * x 中的问题
ans:让我们假设有一个函数(fun()) 返回整数值。那么 SQUARE(fun()) 将被扩展为 fun() * fun()。
它有两个主要问题
* 一是它增加了时间复杂度。
* 它可以改变一些指针,全局数据(基本上是共享内存)。
另一个问题是在 SQUARE(i++) 中,它将扩展为 i++*i++ 这也是有问题的。
另一个是 SQUARE(3+2),扩展到 3+2*3+2 结果为 11(这是错误的)。
上述问题的解决方案是将定义更改为
#define SQUARE(x) (x) * (x)
7.用树和图解释DFS。(解释并举例)。
8. 在图中找到循环并讨论后边。
9. 什么是静态、全局、自动和外部变量和函数以及它们的使用位置?
10.讲解整个C编译过程
(一定要研究这些基本主题。)
11. SQL(查找Marks列中所有数据的第二个最小值,哪个学生的总分最低,找到一个学生的总分及其id)
12. 什么是数据库中的索引,全部解释一下?它们是如何存储的以及为什么?(仅当在简历中提到 SQL 时)。
13.以上所有事情在Python(使用dict)。
14. Python的yield 和 generators。
人力资源面试——
1. 你的面试怎么样?
2. 这是你的第一次经历吗?它怎么样?
3. 介绍一下你自己。
4. 为什么选择 DE Shaw?(试着说服你对他们的公司非常感兴趣)。
5. 说说你的长处和短处。
6. 这些问题你准备好了吗?
7. 你什么时候发现自己的弱点?
8. 你是否准备了专用于面试的弱点?
如果你愿意,那么在每一轮之后,你可以向受访者提出一些问题。
例如。你可以询问他们公司使用的技术、语言或环境。
祝你面试好运。