Linkedln | SSE | INFRA [Ghosted]
Summary
I interviewed for an SSE role at LinkedIn with 5 years of experience. The process involved multiple coding and system design rounds, including a re-attempt after receiving initial 'weak hire' feedback. I showcased strong problem-solving skills in several coding challenges and presented detailed system designs, but ultimately faced ghosting after the final HLD round, leading to an implied rejection.
Full Experience
I applied for an SSE position at LinkedIn via LinkedIn Easy Apply, having 5 years of experience.
Screening Round:
This round began with a discussion about one of my projects. Following that, I tackled a coding problem which was Nested List Weight Sum II (https://leetcode.com/problems/nested-list-weight-sum-ii/description/). I was able to solve it quickly with an optimized approach. We also covered standard questions on OS, CN, and Java basics. The feedback was a 'Strong hire' for my performance.
Coding Round 1:
The first coding round presented two problems: All O(1) Data Structure (https://leetcode.com/problems/all-oone-data-structure/description/) and Binary Tree Upside Down (https://leetcode.com/problems/binary-tree-upside-down/description/). I received 'Weak Hire' feedback, primarily because my solution for the second problem was not identical to the LeetCode solution, and the panel found it difficult to understand my approach without listening properly.
Coding Round 2:
In the second coding round, I solved Max Consecutive Ones III (https://leetcode.com/problems/max-consecutive-ones-iii/description/) and a standard topological sorting problem. I was able to solve both problems, leading to 'Strong hire' feedback.
Hiring Manager Round:
This round focused on discussions about my past projects and my motivations for wanting to join LinkedIn. I had a compelling project to explain that involved a good amount of business, product, and technical complexity. The feedback was 'Strong hire'.
High-Level Design (HLD) Round:
The HLD problem was to design a system for handling Top K articles shared over various time intervals (1 min, 5 min, 1 hour, 24 hours). I discussed using techniques like count-min-sketch, maps, and heaps, explaining the drawbacks of each. I addressed counter increment lock contention issues by proposing aggregations at the API gateway and Kafka consumers to reduce database operations. For the 24-hour handling, I suggested MapReduce or Spark. I also identified system bottlenecks like duplicate Kafka events and database recovery, referencing standard DDIA concepts. My approach was similar to the one found here: https://serhatgiydiren.com/system-design-interview-top-k-problem-heavy-hitters/. However, I received 'Weak hire' feedback, with the panel criticizing aggregations at the API gateway as business logic, despite discussing tradeoffs during the interview.
After a week, HR informed me about the two 'Weak hire' feedbacks and offered me one more chance, consisting of another coding and HLD round.
Coding Round 3:
In this second attempt at a coding round, I faced two problems: Insert Delete GetRandom O(1) - Duplicates allowed (https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed/description/) and Find the Celebrity (https://leetcode.com/problems/find-the-celebrity/description/). I solved both completely with 15 minutes remaining, which I considered a 'Strong hire' performance from my end.
High-Level Design (HLD) Round (Re-attempt):
This round involved designing a KV storage system, specifically considering only a single VM with disk and equal get, put, delete operations. I started by explaining why MySQL wouldn't be suitable due to B+tree issues and internal fragmentation. I then detailed an LSM-based approach, discussing segments, layered Bloom filters, segment compaction, internal fragmentation, and write amplification in SSDs, essentially navigating through the entire LSM concept. We also had a good discussion on database recovery after a crash using WAL and disk. The panel then changed the problem statement to handle 10GB blob values. I adapted my approach to convert large files into smaller chunks based on disk free space, with similar changes to caching and pointers between chunks to reduce disk seeks. The panel wasn't satisfied with this, and the interview ended abruptly as we were already running late. Given the high bar at LinkedIn Infra, I considered this a 'Weak hire' from my perspective.
After another week, I tried reaching out to HR but received no reply, which I take as a rejection. The grind continues.
Interview Questions (9)
You are given a nested list of integers. Each element is either an integer, or a list -- whose elements may also be integers or other lists. The depth is the number of 'lists' between the integer and the root. Implement a function to return the sum of all integers in the nested list weighted by their depth. For this problem, depth is defined going from outer to inner. Specifically, the weight of an integer is 1 + (max_depth - its_depth), where max_depth is the maximum depth of any integer in the nested list.
Design a data structure that supports the following operations in O(1) time complexity: inc(key) - Increases the count of an existing key by 1. If a key does not exist, inserts the key with a count of 1. dec(key) - Decreases the count of an existing key by 1. If a key does not exist, do nothing. If a key's count becomes 0, remove it. getMaxKey() - Returns one of the keys with the maximal count. If no element exists, return an empty string. getMinKey() - Returns one of the keys with the minimal count. If no element exists, return an empty string.
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that shares the same parent node) or empty, flip it upside down and turn it into a tree where the original right nodes are now left leaf nodes and the original left nodes are now right leaf nodes. For example: Input: [1,2,3,4,5] Output: [4,5,2,#,#,3,1] (visually, root 4, left 5, right 2. 2's left is 3, 2's right is 1.)
Discuss your motivation for joining LinkedIn and what attracts you to the company and its mission.
Suppose you are at a party with n people labeled from 0 to n - 1 and among them, there may exist one celebrity. A celebrity is someone who is known by everybody else but does not know anyone in return. If there is a celebrity, there can be only one. Implement a function to find the celebrity. You are given a helper function knows(a, b) which returns true if a knows b, false otherwise.
Design a Key-Value storage system that operates on a single VM with disk. Assume equal distribution of get, put, and delete operations. Explain why traditional databases like MySQL might not be suitable for this use case. Propose an alternative architecture and discuss key aspects such as handling large (10GB) blob values, internal fragmentation, write amplification, and database recovery after a crash.