职位:软件开发实习生
初步回合:
入围名单是根据GPA进行的。尚未得知确切的截止值, 但我想它必须在〜8.50左右。
在线回合:
本回合针对Hackerrank, 分为3个部分:
第1节:能力倾向测试, 每20分钟15个问题
第2节:涉及MC, 涉及OS, DBMS, OOP, C ++, 基于Java的问题的技术MCQ, 15分钟内完成15个问题
(这两个部分的难度级别根本都不是根据相应部分给出的时间而定。我期望如此, 因此我没有顺序浏览, 而是滚动浏览它们, 只关注那些可以快速解决的问题。大多数学生总共只能解决10个问题)
第3部分:编码问题, 每45分钟2个问题
Q1。你会得到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合作过)
第二次采访:
- 什么是OS中的多线程?
- 你能否举一个OS使用多线程的示例? (我不记得任何这样的例子, 但是我给了他们一次应用多线程的情况)
- 你使用什么操作系统?为什么你更喜欢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的提示。此后, 我能够快速解决它)