Summary
I successfully navigated through a multi-round interview process for an IC4 role at Coinbase in India, which included online assessments, behavioral, tech execution, and domain-specific interviews, ultimately leading to an offer.
Full Experience
I applied for the IC4 role at Coinbase through LinkedIn in January 2025. The interview process was comprehensive and challenging, consisting of several rounds which I ultimately cleared to receive an offer.
Round 1 - Logical Reasoning OA
This initial online assessment focused on basic mathematical problems and image pattern recognition questions. It was a standard test of logical abilities.
Round 2 - Code Signal OA
In this round, I was tasked with implementing a Key-Value Store that could handle two keys: a primary key and a sub-key. The problem had four levels of complexity. It shared similarities with the LeetCode "Time-Based Key-Value Store" but introduced the additional layer of a sub-key. The required operations included retrieving all values for a main key, getting the latest value for a specific key-sub_key pair, fetching a value at a given timestamp for a key-sub_key, and deletion operations for both main keys and sub-keys.
Round 3 - Foundational Interview
This was a standard behavioral interview round where I discussed my past experiences, how I handled challenges, and my approach to teamwork and problem-solving.
Round 4 - Tech Execution Interview
This round was heavily focused on practical coding problems, particularly around iterators, and progressed through multiple levels:
- Level 1: I had to write an alternate iterator for a list of lists. This was conceptual similar to the Zigzag Iterator on LeetCode, but instead of just two lists, my solution needed to accommodate 'n' lists within the main list. For example, given
lists = [[0, 1, 2], [], [3, 4], [5]], the expected output was0, 3, 5, 1, 4, 2. - Level 2: My next task was to implement a range iterator that could correctly handle negative step values. An example provided was
start = 0, end = 10, step = 2, which should produce[0, 2, 4, 6, 8, 10]. - Level 3: I then wrote a basic list iterator for a simple list, such as
list = [0, 1, 2, 3, 4, 5], to iterate through its elements sequentially. - Level 4: The final challenge in this round involved modifying the iterator class from Level 1. Instead of taking a list of lists, it needed to accept a list of diverse iterator objects (which could be instances of my previously built range iterator and list iterator) and print the numbers in an alternating fashion from all contained iterators.
Round 5 - Domain Interview
In this round, I was presented with a list of transactions and asked to design and implement a generic search API. This API needed to filter transactions based on a combination of specific fields and values, supporting operations like "=", ">", "<", etc. It was an open-ended problem, so I had to define the input structure for the filters myself.
The follow-up discussion revolved around pagination:
- I explained what pagination is and why it's a necessary feature in many applications.
- We discussed various techniques used for implementing pagination.
- I detailed how to choose an appropriate cursor ID column when implementing cursor-based pagination.
- Finally, I had to enhance my search API code to incorporate support for cursor-based pagination.
Overall, the interviewers were very helpful and supportive, providing guidance whenever I encountered difficulties. The recruiter was also excellent, keeping me well-informed with frequent updates and constructive feedback throughout the entire process.
Interview Questions (6)
Implement a key-value store that supports two keys (a main key and a sub-key) and timestamps. It should allow storing multiple values for a key-sub_key pair over time. The system needs to support operations such as:
- Return all values associated with a main key.
- Return the latest value for a specific main key and sub_key.
- Return the value for a specific main key and sub_key at a given timestamp.
- Delete a main key.
- Delete a sub-key (implying deleting all entries for that sub-key under any main key).
Write an alternate iterator for a list of lists. Similar to the ZigZag Iterator (LeetCode), but instead of just two lists, it should handle 'n' lists. The iterator should yield elements from the lists in an alternating fashion, skipping empty lists.
Example: lists = [[0, 1, 2], [], [3, 4], [5]]
Output should be: 0, 3, 5, 1, 4, 2
Implement a range iterator that supports both positive and negative steps.
Example:
start = 0
end = 10
step = 2
Output should be [0, 2, 4, 6, 8, 10]
Implement a basic iterator for a given list.
Example:
list = [0, 1, 2, 3, 4, 5]
Output should be: 0, 1, 2, 3, 4, 5
Modify the N-ary ZigZag Iterator class (from Level 1) to accept a list of iterator objects instead of raw lists. The input list can contain a mix of different iterator types (e.g., custom Range Iterator, List Iterator). The goal is to print numbers in an alternating fashion across these diverse iterators.
Design and implement a generic search API that can filter a list of transactions based on a combination of specific fields and values. The filters should support operations like '=', '>', '<', etc. The input structure for filters is open-ended, requiring the candidate to define it. Example Transactions:
[
{id: 1, time: 1, userId: 1, amount: 10},
{id: 2, time: 2, userId: 3, amount: 10},
{id: 3, time: 3, userId: 4, amount: 11},
{id: 4, time: 4, userId: 2, amount: 12}
]
Follow-up questions include:
- Explain pagination and its necessity.
- Discuss various techniques used for implementing pagination.
- How to choose a cursor ID column when using cursor-based pagination?
- Enhance the implemented code to support cursor-based pagination.
Summary
I interviewed at Coinbase for a role, where I was tasked with designing a food delivery application and later solving a follow-up problem on order analytics within a given time range.
Full Experience
I had my interview at Coinbase, specifically Round 1 which was focused on Domain. During this round, I was challenged to design a food delivery application. The primary requirements for this design included implementing methods to efficiently find the minimum price for a specific food item available on the menu. Furthermore, the application needed to determine and display the nearest restaurant serving that particular item, based on the user's current location. A follow-up question involved processing an order list, which included timestamps, to calculate various metrics within a specified time range. I needed to find the total number of orders, the average order value, and the overall total order value within that duration. For my solution, I focused on writing production-grade ready code, ensuring that all potential edge cases were thoroughly addressed. I used Java and developed over 200 lines of code to tackle the entire problem.
Interview Questions (2)
I was asked to design a food application. I needed to implement methods to find the minimum price for a particular food item from the menu. Additionally, based on the user's location, the system had to find the nearest restaurant that serves that item.
Given a specific time range and an order list containing timestamps, I needed to find the total number of orders within that given range. Additionally, I had to calculate the average order value and the total order value for all orders placed within the specified time period.
Summary
I successfully navigated the interview process for a SWE Intern position at Coinbase in San Francisco for Summer 2020 and ultimately received an offer. The interview included initial online assessments, an HR phone call, and two technical rounds, one focusing on front-end development and another on data structures and system design.
Full Experience
I applied to Coinbase on December 23rd, and shortly after, I received a link to complete a Triplebyte test. I opted for both front-end and back-end domains, answering 35 questions for each test on December 29th.
My second round was a 30-minute HR phone call where they asked general questions about my resume, projects, and past experience. We also discussed my interest in Coinbase, other offers I might have, and how I learned about the company.
The third round was a 1-hour screen share technical interview. Since I had front-end experience, the interview focused on that domain. I was asked to code a part of the Coinbase Pro UI using HTML, CSS, and React on Codepair by Codepen. Unfortunately, I faced some technical difficulties and couldn't see my code output, which was quite frustrating for a front-end task. I promptly sent an email explaining the situation and was rescheduled for another coding round.
The rescheduled third round, 'part 2', was also a 1-hour screen share technical interview. This time, the focus shifted to LeetCode-style questions. I was given one debugging question and one coding question: to create a hashmap using an array. Additionally, there was a system design question about an e-commerce website.
Finally, I received an email asking for a convenient time to call, and they extended an offer over the phone. I was thrilled to get in! They detailed all the offer specifics during the call. My overall interview experience was very positive; the recruiters were always quick to respond, and during the screen share round, my interviewer was incredibly helpful, guiding me to analyze my code's efficiency and putting me at ease despite my nervousness.
Interview Questions (3)
Code a part of Coinbase Pro UI using HTML, CSS, and React.
Create a hashmap using an array.
Design an e-commerce website.
Preparation Tips
After clearing the HR round, I realized I needed to intensely study React, as I wasn't proficient enough to feel comfortable using it in an interview setting. I was relieved when the second technical round allowed me to use Python for coding. I also reviewed Glassdoor for insights, finding that many questions were design-based. With very limited time, I went through all the design questions and solutions available on LeetCode.