有一家咨询公司打来电话,从 naukri 门户网站选择了我的个人资料,并打电话给我关于高盛的 C++ 开发人员和 3-5 年的经验。
第 1 轮:黑客排名轮
本轮包括 2 道黑客等级问题,时间为 2 小时完成本轮
- 查找给定矩阵中位置元素的数量。如果在相应的行或列中出现多个位置元素,则返回 -1。 (这个问题与 GeeksForGeeks 上给出的相同,除了位置元素出现的条件:find-number-of-positional-elements)
我能够使用相同的方法解决这个问题 - 根据输入对字符串编码/解码。输出应基于密钥。用户有以下 3 个输入:int(操作 o-for encode,1-for decode)
字符串(输入字符串- 要编码/解码的单词)
字符串(编码/解码的关键,例如 123)eg
输入:
0
打开
123
预期输出:
打开对于编码,输出中的字母应根据键重复,例如在上面的示例中,o 重复 1 次,p 重复 2 次,e 重复 3 次 &字符串的其余部分与输入中的相同。如果 key 较大,则忽略超过输入字符串长度的额外字母。类似的解码方式。在所有异常的情况下返回-1。
我能够解决这个问题,但测试用例一直失败,直到我意识到在输入字符串进行解码时,用户可能会输入一些错误的字符串,这些字符串无法使用给定的键进行解码,就像键是 123 一样,输入字符串是“oppxn”。现在字符串中没有出现 3 次,因此在这种情况下应该返回错误。
这两个问题的所有测试用例都通过了,后来我接到了一个关于编码器垫轮的电话。
第 2 轮:编码器垫轮
面试官预计会在上午 11:00 打电话,但我在 11:20 接到电话,面试官很有礼貌,花了大约 5 分钟时间完成问题并提供了一个问题给我。
- 查找整数数组中的第一个非重复字符。这个问题类似于 geeksforgeeks 中给出的问题:第一个非重复字符
最初我使用 2 个复杂度为 O(n^2) 的数组解决了这个问题,但他告诉我简化然后我能够在 O(2n) 中这样做。解决了这个问题后,我又被问到另一个问题 - 给定一个包含不同单词的单词(字符串)字典,您将获得一个输入字符串,例如“abd”。您需要在提供的字典中找到可用的最大单词,可以使用输入字符串的字母来制作。返回的单词只能包含与输入字符串给出的字母相同的出现次数,即如果一个字母被给出一次,那么在输出中它应该只存在一次。例子:
- 字典{“to”、“banana”、“toe”、“dogs”、“ababcd”、“elephant”},输入字符串是“eot”。输出应该是“脚趾”
- 字典与示例 a 中指定的相同,但输入字符串是“ogtdes”,输出是“dogs”和“toes”
我无法解决这个问题,我告诉他蛮力方法,但这非常模糊,我认为他对我印象不深。他告诉我 HR 会回复我,但我没有接到任何电话。