Pluang | SDE-3 | JAVA Backend | Interview Experience
Summary
I recently had an interview for an SDE-3 Java Backend role at Pluang, which lasted approximately 60-90 minutes. The round extensively covered Data Structures & Algorithms, including specific LeetCode problems, and deep dives into System Design concepts centered around Kafka and Redis.
Full Experience
My interview for the SDE-3 Java Backend role at Pluang started with a typical introduction where we both shared backgrounds, and I discussed my current role, project tech stack, and responsibilities for about 15 minutes.
Following the introduction, the interviewer moved on to Data Structures & Algorithms. I was given two well-known LeetCode problems. The first was Evaluate Reverse Polish Notation, which I successfully implemented using a Stack. The second problem was Koko Eating Bananas, for which I presented a binary search approach.
The discussion then shifted to System Design, specifically focusing on Kafka. I was asked a series of questions:
- What is Kafka? I explained its architecture, detailing producers, brokers, topics, partitions, and consumers.
- Acks in Kafka (acks=0, acks=1, acks=all)? I elaborated on the trade-offs between reliability and performance for each
ackssetting. - Message Ordering in Kafka? I described how message ordering is maintained within partitions.
Next, the conversation moved to Redis. The questions included:
- What data structure have you used? I mentioned mainly using Key-Value pairs (String type) for caching.
- Did you use Lists, Sets, Hashes, Sorted Sets? I clarified that my current use cases primarily revolve around simple key-value stores.
- By default, which data structure does Redis use? I explained that key stores can map to multiple data types, with String being the default if no specific type is mentioned.
- Have you heard of CROSSSLOT error? What is it? I explained the concept of CROSSSLOT errors in Redis Cluster, which arise when multi-key commands involve keys that don't hash to the same slot.
Interview Questions (9)
Evaluate Reverse Polish Notation
You are given an array of strings tokens that represents an arithmetic expression in a Reverse Polish Notation.
Evaluate the expression. Return an integer that represents the value of the expression.
The valid operators are +, -, *, and /. Each operand may be an integer or another expression.
Koko Eating Bananas
Koko loves to eat bananas. There are n piles of bananas, the i-th pile has piles[i] bananas. You are given an integer h which represents the hours Koko has to eat all the bananas.
Koko can decide her eating speed k (bananas per hour). Each hour, she chooses some pile of bananas and eats k bananas from it. If a pile has less than k bananas, she eats all of them instead and will not eat any more bananas during this hour.
Koko likes to eat slowly but still wants to finish all the bananas within h hours.
Return the minimum integer k such that she can eat all the bananas within h hours.
Kafka Architecture and Concepts
I was asked to explain the core components of Kafka, including its architecture, producers, brokers, topics, partitions, and consumers.
Kafka Acks Configuration
The interviewer inquired about acks in Kafka (acks=0, acks=1, acks=all) and the associated trade-offs between reliability and performance.
Kafka Message Ordering
I discussed how message ordering is maintained in Kafka.
Redis Data Structures Used in Practice
The interviewer asked about the Redis data structures I have personally used in my projects.
Familiarity with Advanced Redis Data Structures
I was asked if I had experience with Redis Lists, Sets, Hashes, or Sorted Sets.
Default Redis Data Structure
The interviewer asked which data structure Redis uses by default.
Redis CROSSSLOT Error
I was asked if I had heard of the CROSSSLOT error in Redis Cluster and what it signifies.