📌  相关文章
📜  助理软件工程师的 ServiceNow 面试经验(校内)

📅  最后修改于: 2021-11-23 07:50:14             🧑  作者: Mango

第 1 轮(在线编程轮 – Hackerrank 平台):本轮包括 1 道编程题和 15 道选择题。这一轮持续了60分钟。在测试期间不能在选项卡之间切换。此外,将定期拍摄网络摄像头快照。

编码问题:

  1. 金融分析师负责以数组表示的盈利股票投资组合。数组中的每一项都代表相应股票的年利润。分析师收集所有达到目标利润的不同股票对。不同对是至少在一个元素上不同的对。给定利润数组,找出其中每对利润之和恰好等于目标总和的不同股票对的数量。

    例子:

    stocksProfit = [5, 7, 9, 13, 11, 6, 6, 3, 3]
    target = 12 profit's target
    • 有 4 对股票的利润总和等于目标 12。请注意,因为在 stockProfit 中有两个 3 的实例,因此有两个配对 (9, 3):stocksProfits 指数 2 和指数 7,以及指数 2和 8 个,但只能包含一个。
    • 有 3 对不同的股票:(5, 7)、(3, 9) 和 (6, 6),返回值为 3。

    函数说明:

    在下面的编辑器中完成函数stockPairs。

    stockPairs 具有以下参数:

    int stockProfit[n]:代表股票的整数数组

    利润

    目标:代表年度目标利润的整数

    返回:

    int:确定的总对数

    约束:

    1 \le N \le 5\times 10^5

    0\le stocksProfit[i] \le 10^9

    0\le target \le 5\times 10^9

    解决方案:

    有几种方法可以解决这个问题。最好的方法之一是使用哈希。其他方法包括排序和两点技术。

第二轮(技术面试 1 – 60 分钟):

  • 说说你自己
  • 共享了一个指向协作工作区的链接,两个或更多人可以在其中编写/查看其他人编写的代码。
  • 以下是被问到的问题

    给出了一个小的编码片段,发现并纠正错误。

    unsigned int i = 0;
    for(i = 100; i >= 0; i--) {
        printf(“%d\n”, i);
    }
  • 给定一个元素未排序的链表,任务是删除重复项

    版本 1:不使用额外空间(可能会影响时间复杂度)

    版本 2:可以使用额外空间并可以创建新列表

    版本 3:可以使用额外空间但不创建新列表

  • 给定一个由小写英文字母组成的长度为 N 的字符串,任务是计算每个字符的频率恰好为 K 的子字符串的数量。

    版本 1:对所有子串进行暴力破解 – O(N^3)

    版本2:稍微优化一下—— O(N^2)

    版本 3:超级优化的方法 – O(N\times D)  在哪里D  是字符串存在的不同字符的数量 – 即,26

    我还告诉她为什么我的方法会奏效,告诉她这是我之前在 Geeksforgeeks 上改进的问题

  • 讨论我的一个项目——如果我要扩展我的项目,我会实现什么功能?
  • 面试官问我有没有什么问题

我能够轻松解决所有问题,面试官印象深刻。

第 3 轮(技术面试 2 – 60 分钟):

  • 说说你自己
  • 分享了一个到 Collab 的链接,它包含了我在上一轮技术面试中的所有代码。
  • 以下是所问的问题: 给定一个包含 2-9 位数字的字符串,返回该数字可以表示的所有可能的字母组合。以任何顺序返回答案。下面给出了数字到字母的映射(就像电话按钮上的一样)。请注意,1 不映射到任何字母。

    Input: digits = "23"
    Output:
    ["ad","ae","af","bd","be","bf","cd","ce","cf"]
  • 版本 2:您还提供了一个单词列表;您的任务是找出上面生成的输出中将出现多少个单词
  • 跟进:你能做到吗O(N\times M)  时间,其中 N 是单词数,M 是单词长度的最大值,假设字符串数字的长度不会超过 15
  • 问题 2:树中两个节点的最低公共祖先

    版本一:二叉搜索树中两个节点的LCA(利用BST的性质)

    版本 2:二叉树中两个节点的 LCA(使用递归)

    版本 3: N 叉树中两个节点的 LCA(单查询)

    版本 4: N-ary Tree 中两个节点的 LCA(多查询)——可以使用 Euler Tour + RMQ 解决

  • 讨论我的两个项目——我们为什么要做这些项目的简要想法,我们是如何做的,项目范围等。
  • 你有任何问题吗?

我能够解决所有问题,这是一次非常好的体验。当我在解决键盘问题的第 1 版时遇到困难时,面试官帮助了我。

第 4 轮(HM 面试轮 – 90 分钟):

基本的人力资源问题

  • 你有没有觉得不舒服?
  • 当你感到不舒服时你会怎么做?
  • 疫情期间你是怎么度过的?
  • 你打疫苗了吗?
  • 您对本公司了解多少?
  • 告诉我一些关于你的大学的事情
  • 你什么时候在大学里享受最好的时光?
  • 你在大学里有没有感到不舒服?
  • 你当时做了什么?
  • 你如何说服一个有 60 名学生的班级参加一个会议? (他们不会听你的,他们已经有75%的出勤率,惩罚会带来混乱——你将如何说服他们?)

一些技术性的东西

  • 告诉我你的项目
  • 谈论您的项目中使用的数据库模式
  • 如果你想扩展你的项目,你更喜欢垂直缩放还是水平缩放,或者两者兼而有之?
  • 基于系统设计的问题——功能需求、UI 设计、数据库模式、负载平衡等。
  • 你有任何问题吗?

再次,面试官印象深刻,这是一次非常友好和健康的谈话。

一些关键要点:

  • 面试官随时为您提供帮助。每当您遇到困难时,请务必提出问题/提示。确保您理解问题陈述。
  • 练习编码问题。 Hackerrank、GeeksforGeeks 和 Leetcode 收集了大量面试中提出的问题。
  • 做很多有趣的项目。项目为简历增加了巨大的价值。
  • 永远不要谈论你的弱点。永远不要给他们拒绝你的理由

判决:被选为助理软件工程师角色