goDaddy | SDE2 | Feb 2022 [Reject]

godaddy logo
godaddy
SDE IICA5 yearsRejected
April 12, 202237 reads

Summary

I interviewed for an SDE2 role at GoDaddy in February 2022. The process involved multiple rounds covering data structures, algorithms, and system design, ultimately resulting in a rejection.

Full Experience

My interview journey at GoDaddy for an SDE2 role in February 2022, while I was pursuing a Master's in Software Engineering from ASU, involved several challenging rounds. I brought 5 years of experience from India and Abu Dhabi, along with solid experience in distributed services, Kafka, and Zookeeper. I felt confident in discussing leadership principles and my experience with both SQL and NoSQL databases. The interview location was CA.

The process began with Round 1, a standard HR interview covering my resume, salary expectations, background, location preferences, sponsorship needs, and my tech stack knowledge.

Round 2 was a 1-hour session with a Director of Engineering. We discussed my projects, and then I tackled a coding challenge. I was asked to implement a stack data structure from scratch, without using any built-in collections. It needed to support push, pop operations, and have an unlimited size. I successfully completed this task.

Later, in another technical round (possibly Round 3 given the numbering), I faced a problem where I needed to find the number of occurrences of string s2 as a subsequence in string s1, where the letters in s1 didn't need to be consecutive. I solved this problem using a backtracking approach.

A subsequent Round 3 focused on implementing a HashMap completely from scratch. The requirements included implementing get, put, delete methods, a hash function, and handling collision resolution when multiple keys hash to the same bucket. I completed this by utilizing a LinkedList for collision resolution.

Round 4 was a combined coding and system design round within an hour. For the coding part, I was asked to construct a comparator capable of sorting an array of version number strings in ascending order, providing an example of how ["4.5.1","10","0.99","4.5","1.0.0.1"] should be sorted to ["0.99","1.0.0.1","4.5","4.5.1","10"]. The system design challenge involved designing a system to receive and re-distribute transaction events at a high rate (3000 messages/minute, 2KB each), with strict requirements for reliability, 7-year auditability, multi-distribution (push/pull), and security for producers and consumers. I was encouraged to use a whiteboard and consider any available tools.

Finally, Round 5 was another coding round. The problem required me to construct a method to find all possible unique permutations of a given string, showing examples like permute("abc") resulting in ["abc", "acb", "bac", "bca", "cab", "cba"] and permute("aba") giving ["aba", "aab", "baa"]. Despite clearing most of the rounds, I was ultimately rejected.

Interview Questions (6)

Q1
Implement Stack from Scratch
Data Structures & AlgorithmsMedium

Implement a stack data structure from scratch without using any built-in collections classes. The implementation should support push, pop operations, and have an unlimited size.

Q2
Count Occurrences of Subsequence
Data Structures & AlgorithmsHard

Given two strings, s1 and s2, find the number of occurrences of s2 as a subsequence in s1. The letters of s1 do not need to be consecutive to form s2. Implement the getSubsequenceCount function that returns a LONG_INTEGER. Parameters are s1 (STRING) and s2 (STRING).

Q3
Implement Hash Map from Scratch
Data Structures & AlgorithmsHard

Implement a hash map data structure from scratch. The implementation should support get, put, and delete operations. It also requires implementing a hash function and handling collision resolution when two values yield the same hash code.

Q4
Sort Version Numbers
Data Structures & AlgorithmsMedium

Construct a comparator that can be used to sort an array of version number strings in ascending order. For example, sorting ["4.5.1","10","0.99","4.5","1.0.0.1"] should result in ["0.99","1.0.0.1","4.5","4.5.1","10"].

Q5
Transaction Event Distribution System Design
System DesignHard

Design a system to receive and re-distribute transaction events at a rate of approximately 3000 messages per minute, with each message being about 2KB in size. The system must meet the following requirements:

  • Reliability: No event that is successfully received can be lost.
  • Auditability: Maintain a historical record of every event for 7 years for regulatory purposes.
  • Multi-Distribution: Be able to forward events to multiple consumers via both push and pull mechanisms.
  • Security: Only authorized producers can insert events, and only authorized consumers can receive events.
I was encouraged to use a whiteboard to diagram the solution and was told that any tools/technologies were available.

Q6
Unique String Permutations
Data Structures & AlgorithmsMedium

Construct a method that, given a string, finds all possible unique permutations of that string. For example:

  • permute("abc") should return ["abc", "acb", "bac", "bca", "cab", "cba"]
  • permute("aba") should return ["aba", "aab", "baa"]

Preparation Tips

My preparation involved leveraging my existing 5 years of experience, which included significant work with distributed services, Kafka, and Zookeeper. I also felt confident in my ability to discuss leadership principles (LPs) and had solid experience with both SQL and NoSQL databases, which formed a strong foundation for the technical and behavioral aspects of the interview.

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!