SDE-1 的 Mind Tickle 面试体验(校内)
编码轮 - 在 90 分钟内,hackerrank 有 3 个问题需要解决:
1.https://www.codechef.com/problems/ABCSTR
2.给定一个整数数组,您必须通过递增元素并给出最小和来使所有元素唯一。
例如- 2 6 4 3 3 6
输出 - 27
解释- 2+3+4+5+6+7 = 27
3.给定数组的所有子集的总和找到数组。
例如-
样本输入 - 1 2 3 4 0 5 6 7
样本输出 - 1 2 4
解释-
子集-
{} - 0
{1} – 1
{2} – 2
{4} – 4
{1, 2} – 3
{1, 4} – 5
{2, 4} – 6
{1, 2, 4} – 7
4. https://www.geeksforgeeks.org/bitmasking-and-dynamic-programming-set-1-count-ways-to-assign-unique-cap-to-every-person/
我解决了第一,第二和第四个问题,并被选中参加面试。
排名前10位的学生被选中进行面试。
第一轮(技术):
首先,他询问了我的简历,并说:“介绍一下你自己”。
然后他询问了我的项目,关于它的数据库和安全性(只有基本的东西)。
然后他问了一个数据结构问题——
问题1.-给你一个由玩家和他们的分数组成的元组(比如- {Rohit, 8.6}, {Sachin, 9.2} ),我们必须设计一个可以执行以下操作的数据结构 -
更新-
1. 添加一个元组。
2. 删除一个元组。
询问-
3. 给定一个玩家的名字,返回其排名。
4.给定排名返回哪个玩家拥有该排名。
Ans-首先,我给了他一种使用数组和散列的方法。他告诉我要进一步优化,我给出了一种使用自平衡 BST 和哈希表的方法。他看起来很满意,很快就转到了下一个问题。
Ques2-给你一个大小为 M 的内存池,你必须实现两个函数 allocate 和 deallocate。 Allocate函数将内存分配给大小为 K(固定)的对象并返回基地址。 Deallocate函数将基地址作为输入并释放该空间。对象大小 K 是固定的。
Ans-关于最佳解决方案进行了长时间的讨论,最后我提出了一个带有链表和哈希表的解决方案。他对这个答案很满意。
第 2 轮(技术):
他从一些合乎逻辑的问题开始——
1.https://www.geeksforgeeks.org/puzzle-head-shot/
2.https://www.abc.net.au/science/surfingscientist/pdf/conundrum25.pdf
然后他让我在 DSA、OS、DBMS 和计算机网络之间进行选择。
我说DSA,他说告诉DSA以外的任何人。我选择了操作系统。
他从死锁开始,什么是死锁,什么是死锁的必要条件,什么是银行家算法。然后他问我什么是缓存,什么是LRU缓存,实现一个LRU缓存。
然后他转向 DBMS 什么是规范化,非规范化。什么是 ACID 属性,并解释它们是如何通过 RDBMS 实现的。提高查询性能的方法。
然后他问我是否知道我回答不知道的校验和算法。然后他问我是否知道 Shannon Fano 数据压缩算法,我再次回答不知道。然后他说给你的字符很少,并且有出现的概率,你已经设计了一种算法,将每个字符编码为具有最少位数的二进制表示。我想出了一个类似于霍夫曼编码的算法。然后他在他的笔记本电脑上打开了香农法诺算法的 GFG 链接,并让我理解这个算法。然后当我完成后,他让我比较两种算法并向他解释哪个更好。我花了一些时间,但最后他很满意。
第 3 轮(技术 + 行为):
最初有很多行为问题,我的爱好是什么,我喜欢什么运动等等。
然后他从操作系统的问题开始,什么是进程,什么是线程,它们的区别,什么是多线程。然后他让我给他解释一下虚拟内存和分页的概念,什么是倒置页表,什么是TLB,然后他问了一个问题,这是对第一轮第二个问题的轻微修改。然后他问我是否有关于进程同步的想法,我回答是,他让我为读写器问题编写代码。最后他告诉我他对我的表现很满意。最后他还问了一些行为问题,五年后我在哪里看自己,我的人生价值观是什么等。
判决选择。