职位:软件开发实习生
地点 : Arcesium, 海得拉巴
初赛:
入围名单是根据GPA完成的。不知道确切的截止时间,因为它没有透露,但我想它必须在 ~8.50 左右。
在线回合:
这一轮是在 Hackerrank 上,它分为 3 个部分:
第 1 部分:能力倾向测试,20 分钟内完成 15 个问题
第 2 部分:涉及 OS、DBMS、OOP、C++、基于Java的问题的技术 MCQ,15 分钟内 15 个问题
(这两个部分的难度完全不是根据相应部分给出的时间。我期待这一点,所以我没有按顺序进行,而是滚动浏览它们,只关注那些可以快速解决的问题。大多数学生总共只能解决 10 个问题)
第 3 部分:编码问题,45 分钟内回答 2 个问题
一季度。给你 N 个不同的硬币。在一次移动中,您随机选择一枚价值 X 的硬币,然后将所有价值 X-1 和 X+1 的硬币连同硬币 X 一起取出。当没有硬币可供选择时,游戏结束。找出您可以完成游戏的最大移动次数。约束条件:1 <= N <= 10^5
Q2。给定一个仅由小写字母组成的字符串S 和与每个字母对应的点数组。您必须找到以相同字母开头和结尾的子字符串可以获得的最高分数。约束:1 <= |S| <= 10^5 -10 <= 点 <= 10
第一次采访:
问题主要是根据我的简历。我做过两次实习,所以他们问了我在那里的项目和我的经历。他们问了几个问题,比如,
- 你的兴趣是什么 ?
- 什么是你最喜欢的科目 ? (我按顺序排列它们:DSA、OOP、DBMS、OS)
- 他们问我为什么我对 OOP 的排名如此之高?
- 系统设计 :
有人问我将使用哪些类来设计像 VIM 这样的文本编辑器。文本编辑器应该具有正常的功能,如删除、插入、保存和跳转到一行。
我还被问到如果我希望其他开发人员能够为我的文本编辑器设计插件,我会怎么做。
- 编码问题:
给定 N 个矩形的左上和右下坐标,判断任意两个矩形是否重叠。
- 他们问我关于 No-SQL 数据库的问题。 SQL 和 No-SQL DB 之间的区别以及用于存储它们的数据结构。哪个更有效率? (之所以问这些问题,是因为我在简历中提到我曾与 MongoDB 合作过)
第二次采访:
- 什么是操作系统中的多线程?
- 你能举一个操作系统使用多线程的例子吗? (我不记得任何这样的例子,但我给了他们一个我应用多线程一次的情况)
- 你使用什么操作系统?你为什么更喜欢 MacOS? Windows 已经提出了 WSL 为什么不使用它? (幸运的是,我之前用过 WSL,所以我知道它的所有缺点)
- 为什么使用分页?为什么使用虚拟内存?什么是需求分页?
- 解释聚集索引和二级索引之间的区别?
- 使用两个堆栈实现一个最大长度为 N 的队列并为其编写代码(我给了他们一个使用动态堆栈的解决方案,但并不满意。所以我告诉他们我们可以使用一个大小为 N 的数组来存储两个堆栈和他们很高兴 )
- 打印二叉树的右视图
- 对于两个表,我被要求写一个与 JOINS、GROUP BY 相关的 SQL 查询
- 如果我要在这个查询中添加一个“WHERE”子句,结果会发生什么变化,为什么? (基本上他们想知道“WHERE”子句和“HAVING”子句之间的区别)
第三次采访:
-
- JavaScript 是静态类型语言还是动态类型语言?两者有什么区别(因为我在简历中提到了 JavaScript)
- 编码问题:
您将获得一本最多包含 15 个字母单词的词典。此外,您还会从同一词典中获得两个单词 W1 和 W2。以 W1 作为源词,您必须到达 W2。一种操作涉及用任何其他字母替换一个字母,以便结果字符串也存在于字典中。我们必须找到达到 W2 所需的最少操作次数。保证解存在。
示例测试用例:
字典:[‘abc’, ‘abd’, ‘abb’, ‘acb’]
W1:’abc’ W2:’acb’
答案:2(’abc’ -> ‘abb’ -> ‘acb’)
(最初,我使用 Trie 给出了一个解决方案,但它并不完美。他们给了我使用 Graphs 的提示。之后我能够快速解决它)
- 谜 :
一个人有一把最大容量为 6 发子弹的左轮手枪,但他只有一颗子弹。他给了你两个选择,要么他先在空中扣动扳机,然后向你射击,要么直接瞄准你射击。你会选择什么?