BitGo | SDE2 | Feb 2022 [Reject]
Summary
I interviewed for an SDE2 role at BitGo in February 2022. I successfully navigated through the HR and hiring manager rounds, but ultimately received a rejection after the final onsite technical rounds, despite solving most of the given problems.
Full Experience
I applied for the SDE2 position at BitGo. My background includes 5 years of experience in India and Abu Dhabi, with a focus on Distributed services, Kafka, and NoSQL/SQL databases, and I'm currently pursuing a Master's in Software Engineering at ASU. I felt confident with leadership principles questions.
The interview process started with a Round 1: 15-minute HR intro call, which I passed.
Next was Round 2: 45-minute call with the Hiring Manager. This round focused on my resume and work experience, and I successfully passed it as well.
The final stage was Round 3: Onsite rounds consisting of 3.5 hours, which included multiple technical sessions:
- Round 3.1 - 45 minutes: Data Merging
I was asked to merge two sorted arrays (Part 1a) and then generalize it to X sorted arrays (Part 2a), discussing space and runtime complexity for both. I initially used a merge sort approach, achieving O(N) time complexity. After discussion, I also considered an optimized approach using a priority queue. I made sure to discuss my solution before coding, which was helpful.
- Round 3.2 - 45 minutes: Stock Search by Prefix
This problem involved finding all stocks starting with a given string from a list of company names and their stock values. I immediately identified and implemented the most efficient solution using a Trie data structure, completing it within O(N) time complexity.
- Round 3.3 - 45 minutes: Remove Minimum Parentheses
I was given a string with alphanumeric characters and parentheses and asked to remove the minimum number of parentheses to make it valid, returning any possible result. I approached this using a stack to validate parentheses and iterate through the string, achieving O(N) time complexity.
- Round 3.4 - 45 minutes: Reorder Linked List
The final coding challenge was to reorder a singly linked list from
L0 -> L1 -> ... -> LntoL0 -> Ln -> L1 -> Ln-1 -> .... Unfortunately, I was unable to complete this code within the specified O(1) space and O(N) time complexity constraints during the interview.
Overall, I received a rejection.
Interview Questions (4)
Part 1a: Given 2 data arrays (size P and size Q) with sorted values, how do you get a merged sorted array?
Part 1b: What’s the space and runtime complexity?
Part 2a: Give X data arrays (with total element size Y) with sorted values, how do you get a merged sorted array?
Part 2b: What’s the space and runtime complexity?
There is a list of company names given with stock value. For example [("AA", 10), ("AAPL", 160), ("AMD", 115), ("AMZN", 2900), ("ABNB", 2900)]. You have to return all the stocks which start with a given string provided by the user. For example: findAllStockWithAA("AA") should output - AA, AAPLE.
Given a string with alphanumeric characters and parentheses, remove the minimum number of parentheses such that the resulting string is valid and then return ANY possible result.
A valid string is any assortment of alphanumeric characters with parentheses balanced:
(comes before)- Each
(needs a)
Examples:
s = "))))a("->"a"s = "((()"->"()"s = "c(ry(pt(o)"->"crypt(o)"or"c(rypto)"or"cry(pto)"
Given a singly linked list: L0 -> L1 -> ... -> Ln-1 -> Ln, reorder it to the format: L0 -> Ln -> L1 -> Ln-1 -> ...
Examples:
- Input:
L0 -> L1 -> L2 -> L3 -> L4 -> L5
Output:L0 -> L5 -> L1 -> L4 -> L2 -> L3 - Input:
L0 -> L1 -> L2
Output:L0 -> L2 -> L1 - Input:
L0 -> L1
Output:L0 -> L1