Service Now 面试经验 |在校园
第 1 轮:这是一个在线测试,有 25 个 MCQ 和 1 个编码问题。时间限制:1:30 小时
MCQ 基于排列和组合、正则表达式、糟糕的基础知识、DBMS、操作系统和算法。所问的编码问题是以下问题的变体:
https://www.geeksforgeeks.org/next-smaller-element/
本轮结束后,20名学生入围面试。
第 2 轮:技术第 1 轮。时间限制:约 1-1:30 小时
首先是介绍,然后他问我一个算法问题。
你有一个字符串数组,如果一个字符串的最后一个字母与另一个字符串的第一个字母相同,我们可以连接两个字符串。例如 ABC CDE 可以连接成 ABC-CDE。现在,您必须找出是否可以通过以这种方式连接字符串来形成循环。
示例输入:array=[“ABC”, “CDE”, “EFA”]
输出:是的
示例输入:array=[“ABC”, “CDE”, “EFG”]
输出:否
我告诉他,我们可以简单地制作一个图,通过连接每对可能的字符串,然后我们只需要使用任何标准算法进行循环检测。然后他让我在图中编写循环检测代码。他感谢快速响应,并对我的代码感到满意。然后我被问到以下DP问题,
沿着一条河流的宽度,有 n 块石头排成一排。踩在石头上可能会有风险,因为一旦你踩到它们,它们就有可能沉没。所以,给你一个大小为 n 的数组,其中第 i 个元素表示当你踩到那块石头时不下沉的概率。此外,这些石头的距离并不相等,因此给您另一个数组,其中第 i 个元素表示第 (i+1) 个石头和第 i 个石头之间的差异。如果你最多可以跳l,求过河的最大概率。
我告诉他,这是一个 DP 问题,可以认为是标准 LIS 问题的变体。他对这种方法感到满意。然后他就我的项目问了一些问题,这些问题并不深入。
20人中有14人进入下一轮。
第 3 轮:技术第 2 轮。时间限制:45-60 分钟
我被问到以下算法问题。
给定一个整数数组,删除所有子集,总和为零并打印剩余元素。如果有多个可能的解决方案,请打印任何一个。
示例输入:[1, 2, -4, 4, 2, 0, -3, 5]
示例输出:[2, 5]
我告诉她,我们可以对原始数组求和,让和为 S。现在给定数组的最小子集与 sum 等于 S,肯定是解决方案之一。并且,这可以使用标准 dp 方法来解决,在数组中找到给定总和的子集。她对这种方法感到满意,并没有要求我编写代码。
然后她问我 Oops、OS(死锁、调度、虚拟内存)、DBMS(规范化、1nf)的基础知识,以及计算机体系结构的一些基本概念。
然后她让我为 Uber 应用程序设计一个系统,我给她看了 ER 图,她很满意。然后我被问到与我的项目有关的问题。
14人中有8人进入下一轮。
第 4 轮:技术第 3 轮。时间限制:30-45 分钟
我被问到以下树问题,
https://www.geeksforgeeks.org/print-k-sum-paths-binary-tree/
我告诉他,我们可以用标准的回溯方法来解决它。他让我写整个代码,我能写出来。他又问了我一个算法问题,
给你一个矩阵,所有行和列都已排序。打印给定数字的每次出现的索引(行,列)。
我告诉他,在最坏的情况下,它只会是 O(n*n),但如果你只是想让我避免不必要的比较,可以使用 break 语句和修改列的范围来实现。他对这种方法感到满意,并要求我对其进行编码。
然后我被问到以下谜题,
https://www.geeksforgeeks.org/puzzle-9-find-the-fastest-3-horses/
我知道解决方案,我直接回答了。
然后他又问了我一个谜题,https://www.geeksforgeeks.org/puzzle-20-5-pirates-and-100-gold-coins/
我不知道这个谜题,我花了两三分钟告诉他我的方法,97 1 1 1 0 是我的分布。他说,你可以再优化一点,我想出了答案 98。他很欣赏我处理这个问题的方式。
第五轮:人力资源轮。时间限制:10-15分钟
她问我,面试经历如何,你喜欢我的简历中提到的关于课外活动的过程和一些一般性的事情。
包括我在内的我们 3 人得到了实习机会。
谢谢geeksforgeeks!