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 缓存的方法中也使用了哈希表,因此有一些后续问题:
- 哈希表会发生冲突吗?
- 你怎样才能最大限度地减少碰撞?
- 如果真的发生碰撞,你将如何解决这个问题?
在此之后,我被问到基本问题:
- 什么是双端队列以及它是如何实现的?
- 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 问题直接跟随一般介绍。我被要求打开我选择的代码编辑器,并询问以下问题:
- 使用 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名学生,面试过程充满挑战。然而,面试官很友好,每当我遇到困难时都会帮助我。
附加建议:回答时要清楚,尽量不要说得超过要求。很多时候,人们可能会使用一个技术术语,面试官可能会选择并询问您。此外,如果您无法解决问题,请不要惊慌,寻求提示并尝试按照提示来构建解决方案。祝一切顺利!