Coinbase | IC5 | India

1. Pair Programming Rd 1
Q. Implement a class to query a list of items. The items are transactions with (id, timestamp, userId, currency, amount) and you can query by time range, userId, currency. It's fine to store the items in memory and loop over them for this interview, but do consider the items may be coming from a database.

This seemed a weird and unclear problem statement. I wondered what exactly they were looking for - if I wrote modular clean code following OOP, or if I wrote a multi-threaded client etc. The interviewer was cold\unresponsive and when I asked clarifying questions he didn't give clear answers. Got pretty unnerved at this point - knew this round was screwed. Wrote some function signatures thinking he might give hints and it turned out he was looking for pagination support. Coded up a function which takes as input an filter, goes over the in-memory list of transaction items and returns a paginated response. Took care the code was clean, had a base filter class which could be extended to build different kinds of filters etc. We ran the code at end and except a few minor compilation errors it worked fine. At the end, was thinking maybe this round didn't go so bad.

2. System Design
Design a credit card application system
The interviewer was friendly this time. Went through the usual process of gather functional\non-functional requirements, scale estimation, High-level design, drill down. expalain tradeoff with various design decisions, how to scale certain components etc. At this point we were about 40 mins into interview, I had spoken a lot and the interviewer was listening attentively but not cross-question anything I said. At the end, he asked 2-3 clarifying questions on my design and ended the interview. Felt, this round mostly went ok

3. Pair Programming Rd 2
Given a list of transactions in format (id, fee, size) and a blockSize, choose a subset of them so they they fit with blockSize and fee is maximized. A greedy solution was ok although it might not be most optimal. Coded up the greedy solution using heap - had to fix a few bugs when we ran it. Was asked a followup - the transactions can now have parent-child relationships, i.e for a child transaction to complete a parent transaction must be completed first. Talked about how we can modify the greedy solution to handle this and coded it up. He ran it against a new test case and it worked well but pointed out a flaw in the logic which would give an incorrect result for certain cases. I acknowledged the flaw and discussed with him how it can be fixed.

4. Behavioural
Round with an Engineering Manager where she delved into my work experience and projects. I have decent work experience but screwed this up because I hadn't practiced behavioural questions. I fumbled in my answers and started going into technical details, instead of giving concise answers in STAR format.

As expected, got a reject email one week later.

Comments (9)