Servicenow - IC3 Interview Experience

servicenow logo
servicenow
Senior Software Engineer (IC3) - Full stack EngineerHyderabad5.6 years
April 24, 20255 reads

Summary

I completed seven rounds of interviews for a Senior Software Engineer (IC3) - Full stack Engineer position at ServiceNow in Hyderabad, ultimately receiving an offer despite a challenging and lengthy process, which included multiple coding and system design rounds.

Full Experience

Company : Service Now Location : Hyderabad YOE : 5.6 years Position : Senior Software Engineer (IC3) - Full stack Engineer

Round 1 - Coding

Question 1 : Leetcode 11. Container With Most Water

Solved it using standard 2-pointer solution for this problem

Question 2 : ⁠⁠Given 2n numbers, check if we can divide them into n pairs with each pair containing same element : Eg. [3,2,3,2,2,2] - [3,3], [2,2],[2,2] - Return true

Used a set and looped through the array and inserted the element if it does not exist in set and removed the element from set if it exists already. Returned true if set is empty at the end.

Few questions on Javascript :

-> Output based questions around Promises, setTimeout, this keyword, || operations on different data types.

Answered all these questions correctly

Open ended design based question :

Design database schema and APIs for handling Credit and Debit transations in a bank

This section went well too as I incorporated all the follow up questions in my design

Round 2 - Coding

Question 1 :

Akash wants to distribute candies on his birthday. There are A people and he has two types of candies. B candies of the first type and C candies of the second type.

He wants to distribute candies in such a way that no person has candies of both types and each person has at least one candy.

Let X denotes the minimum candies among all people after distribution of candies.

Find the maximum X.

Eg. A=4 B=4 C=5

Output = 2

Solved it using binary search over range of possible valid answers. Interviewer was satisfied with the approach, sample test cases passed.

Question 2 :

Given an array A, find the nearest smaller element G[i] for every element A[i] in the array such that the element has an index smaller than i.

More formally, G[i] for an element A[i] = an element A[j] such that j is maximum possible AND j < i AND A[j] < A[i]

Elements for which no smaller element exist, consider the next smaller element as -1.

A = [1, 6, 5, 9, 10, 8, 11, 10] Output = -1 1 1 5 9 5 8 8

Proposed brute force initially and then improvised it using stack.

Round 3 - System Desgign (UI)

Design a configurable/Reusable table component - Discussion was more around what things I will be considering to make it as flexible as possible, how would the contract look like, handling complex cells in the table etc.

Overall went well, discussion felt healthy.

After these rounds, I was told that this position got cancellend and was told I was being mapped to a different position open with another team for which I have to give another round of system design and coding round since that team wanted it. Usually service now has 2 coding, 1 system design and 1 hiring manager rounds but had to given additional rounds due to this change

Round 4 - System Design

Build a messaging service - Design APIs, Database schema and Queries, basic code to process certain pieces of logic in these APIs etc

Overall went well, it felt like interviewer seemed satisifed at the end.

Round 5 - Coding

721. Account Merge

Solved it brute force using two hashmaps initially and then proposed and wrote pseudo code using dfs and interviewer looked okay at the end

Round 6 - Hiring Manager (US) General discussion about my experience, their team, and surprisingly a coding question :

227. Basic Calculator

Something similar to this but input won't have extra spaces. I did not have to solve it entirely, had to discuss the approach and it was a friendly discussion.

Round 7 - Hiring Manager (India)

General discussion about working culture, career, my past experience and projects.

Finally received the offer. Compensation details here - https://leetcode.com/discuss/post/6660684/servicenow-senior-software-engineer-ic3-22guq/

It was little exhausting as I had to give same rounds multiple times. I felt I was lowballed in the offered compensation especially after clearing so many rounds and servicenow compensation standards.

But having an offer after months of search finally feels like a relief.

Interview Questions (10)

Q1
Container With Most Water
Data Structures & AlgorithmsMedium

Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i are (i, ai) and (i, 0). Find two lines, which, together with the x-axis, forms a container, such that the container contains the most water.

Q2
Check if Numbers Can Be Divided into N Pairs of Same Elements
Data Structures & Algorithms

Given 2n numbers, check if we can divide them into n pairs with each pair containing the same element. Example: [3,2,3,2,2,2] -> [3,3], [2,2],[2,2] -> Return true

Q3
Javascript Output Questions
Other

Output based questions around Promises, setTimeout, this keyword, and || operations on different data types.

Q4
Design Database Schema and APIs for Credit/Debit Transactions
System Design

Design database schema and APIs for handling Credit and Debit transactions in a bank.

Q5
Maximize Minimum Candies per Person (Two Types)
Data Structures & Algorithms

Akash wants to distribute candies on his birthday. There are A people and he has two types of candies. B candies of the first type and C candies of the second type. He wants to distribute candies in such a way that no person has candies of both types and each person has at least one candy. Let X denotes the minimum candies among all people after distribution of candies. Find the maximum X. Eg. A=4 B=4 C=5 Output = 2

Q6
Nearest Smaller Element to the Left
Data Structures & AlgorithmsMedium

Given an array A, find the nearest smaller element G[i] for every element A[i] in the array such that the element has an index smaller than i. More formally, G[i] for an element A[i] = an element A[j] such that j is maximum possible AND j < i AND A[j] < A[i] Elements for which no smaller element exist, consider the next smaller element as -1. A = [1, 6, 5, 9, 10, 8, 11, 10] Output = -1 1 1 5 9 5 8 8

Q7
Design Configurable/Reusable Table Component (UI System Design)
System Design

Design a configurable/reusable table component. The discussion focused on considerations for flexibility, the component's contract (API), and handling complex cells within the table.

Q8
Design a Messaging Service
System DesignHard

Design a messaging service, including its APIs, database schema and queries, and basic code to process certain pieces of logic in these APIs.

Q9
Account Merge
Data Structures & AlgorithmsMedium

Given a list of accounts where each account consists of a name and a list of emails, merge these accounts. Two accounts belong to the same person if they have some email in common. Note that emails are case-insensitive. After merging, each account should consist of the name and a list of sorted unique emails. The accounts should be sorted by name and then by the first email in each account.

Q10
Basic Calculator II (similar, no extra spaces)
Data Structures & AlgorithmsMedium

Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces. The integer division should truncate toward zero. The input expression does not contain extra spaces, similar to LeetCode problem 227.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!