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

📅  最后修改于: 2021-11-18 02:17:45             🧑  作者: Mango

ServiceNow 于 8 月访问了我们的校园,担任助理软件工程师。计算机科学、电气与电子工程、电气与通信工程以及电气与仪器工程有资格申请其简介。 CGPA 的截止值为 7。

第1轮:第一轮是网上Hackerrank测试,有60分钟的时间。它由 1 个编码问题和 15 个 MCQ 组成,这些问题由来自操作系统、DBMS、算法等主题的问题组成。

  • 编码问题正是这样的:https://www.lintcode.com/problem/1915/

总体而言,测试难度适中,编码问题希望我们编写最佳解决方案,否则有几个测试用例没有通过。 MCQ 很简单,如果您了解 OS、DBMS 等 CS 基础知识,则可以轻松解决它们。

20名学生入围下一轮。

第 2 轮(技术面试 1)——这一轮本来应该持续一个小时,但对我来说却持续了 1 小时 40 分钟。面试官很友好,一开始问了几个基本问题:

  • 你了解缓存吗?
  • 你将如何实现 LRU 缓存? (无需代码,只需解释您将使用的数据结构以及原因)

我在实现 LRU 缓存的方法中也使用了哈希表,因此有一些后续问题:

  1. 哈希表会发生冲突吗?
  2. 你怎样才能最大限度地减少碰撞?
  3. 如果真的发生碰撞,你将如何解决这个问题?

在此之后,我被问到基本问题:

  • 什么是双端队列以及它是如何实现的?
  • BFS和DFS的区别?

在此之后,他转向 DSA 问题,我被问到两个问题:

  • https://www.geeksforgeeks.org/stepping-numbers/
  • https://leetcode.com/problems/house-robber-iii/

我能够用最有效的解决方案解决这两个问题,而无需提示。这些问题是故意留下开放式的,我应该询问边缘情况和其他限制。只有函数必须写在 CodePad 上,我应该干运行我的代码。我还被问到相同的时间和空间复杂性。
在此之后,他在结束采访之前问了几个问题:

  • 什么是堆数据结构?什么是时间复杂度?
  • 你知道数据库管理系统吗? SQL 和 NoSQL 有什么区别?你认为 YouTube 使用什么,SQL 还是 NoSQL? (答案-两者的结合)

他问我是否有任何后续问题,我确实问了一些与公司有关的问题。

第三轮(技术面试二):本轮时间限制,持续约1小时10分钟。 DSA 问题直接跟随一般介绍。我被要求打开我选择的代码编辑器,并询问以下问题:

  1. 使用 2 个堆栈实现队列。
  2. 你将如何实现一个支持前后推送和弹出的队列? (Deque)(面试官期待单链表方式)

我最初给出了一个解决方案,该解决方案将 O(1) 从后面推和弹出,O(N) 从前面推和弹出。然后他问我是否可以进一步优化它并使所有操作的 O(1)。我被卡住了,他提示为不同的操作维护两个单独的链表。我能够成功地建立在提供的提示的基础上,并处理了人们会遇到的所有边缘情况。他对我的做法很满意。

下一个 DSA 问题是一个反转链表的简单问题(一次迭代)。在此之后,我被问到与 C++ 中的垃圾收集、堆内存、堆数据结构相关的基本问题。我还被要求解释如何实现 Heap 数据结构,并被要求编写代码以从给定数组构建堆(主要关注 Heapify函数)。之后,他问我有没有什么问题,我接着问了一些关于公司的问题。此回合结束后。

第 4 轮(招聘经理轮):这是另一轮技术 + 人力资源轮,持续了一个小时。招聘经理是一位经验丰富的人,他通过询问 C++ 问题(例如垃圾收集、OOP 概念、 Java和 C++ 之间的区别以及为什么Java独立于平台而 C++ 不是)来测试我的语言基础。
发布这篇文章,我被要求设计 Netflix。主要关注的是数据库模式的实现。我无法解决很多问题,但他给了我提示并帮助我找到了解决方案。我认为主要的重点是检查我将如何解决这个问题,他对此很满意。
我还被问到我可以将哪些数据结构用于平台上提供的各种服务。
发表这个讨论,

  • 我被问到一个简单的概率谜题:https://www.geeksforgeeks.org/puzzle-21-3-ants-and-triangle/

我能够在一分钟内解决它,他很高兴。在完成基本的人力资源问题之后,例如您的优势、劣势是什么,请解释您在生活中遇到的危机以及您是如何克服它的。如果您今天没有被选中参加 ServiceNow,您会怎么做?在我问了他一些关于公司的问题后,采访结束了。

判决:选择

一共选择了5名学生,面试过程充满挑战。然而,面试官很友好,每当我遇到困难时都会帮助我。

附加建议:回答时要清楚,尽量不要说得超过要求。很多时候,人们可能会使用一个技术术语,面试官可能会选择并询问您。此外,如果您无法解决问题,请不要惊慌,寻求提示并尝试按照提示来构建解决方案。祝一切顺利!