Over the last few months, I interviewed with multiple companies(Tekion Corp, Amazon, New Relic, Nielsen, Crunchyroll) and received offers from some.
The biggest change in my preparation was moving from “knowing the topics” to being able to design, implement and defend technical decisions.
Here’s what worked for me:
- 𝗟𝗟𝗗 — 𝗚𝗼 𝗯𝗲𝘆𝗼𝗻𝗱 𝗰𝗹𝗮𝘀𝘀 𝗱𝗶𝗮𝗴𝗿𝗮𝗺𝘀
I focused on:
• Interfaces vs abstract classes
• Design patterns
• Composition vs inheritance
• Extensibility and separation of concerns
• Thread safety
• Concurrent data structures
• Background workers / schedulers
• Race conditions and synchronization
Some of the problems I practiced:
-
Delayed Payment Scheduler
-
Coupon System
-
Parking Lot
-
Vending Machine
-
Splitwise
-
BookMyShow
The important part was being able to explain how the design behaves under concurrent requests, not just drawing classes.
- 𝗛𝗟𝗗 — 𝗱𝗶𝘀𝘁𝗿𝗶𝗯𝘂𝘁𝗲𝗱 𝘀𝘆𝘀𝘁𝗲𝗺𝘀 𝗱𝗲𝗽𝘁𝗵
This was one of the areas where I went much deeper.
I revised:
• API design
• Database selection and schema design
• SQL vs NoSQL
• Indexing
• Caching & Redis
• Kafka
• Partitioning
• Consumer groups
• Ordering guarantees
• Replication
• Async processing
• Idempotency
• Retries & DLQs
• Rate limiting
• Load balancing
• Horizontal scaling
• Failure handling
• Observability
• Availability vs consistency
• System bottlenecks and trade-offs
For Kafka specifically, I made sure I could discuss things like:
partitioning → consumer groups → ordering → offset management → retries → DLQ → rebalancing → duplicate processing → idempotency → scaling consumers
That level of depth made HLD discussions much more practical.
- 𝗝𝗮𝘃𝗮 / 𝗕𝗮𝗰𝗸𝗲𝗻𝗱 𝗳𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀
For backend SDE-2 roles, I didn't treat Java as just a coding language.
I revised:
• Collections internals
• HashMap / ConcurrentHashMap
• equals & hashCode
• JVM memory model
• Heap vs Stack
• Garbage Collection
• Multithreading
• Locks & synchronization
• Executors / Thread Pools
• CompletableFuture
• Race conditions / deadlocks
• Kafka
• REST / gRPC
• Distributed systems fundamentals
- 𝗣𝗿𝗼𝗷𝗲𝗰𝘁 𝗗𝗲𝗲𝗽 𝗗𝗶𝘃𝗲 — 𝗽𝗿𝗼𝗯𝗮𝗯𝗹𝘆 𝘁𝗵𝗲 𝗺𝗼𝘀𝘁 𝘂𝗻𝗱𝗲𝗿𝗿𝗮𝘁𝗲𝗱 𝗽𝗮𝗿𝘁
I prepared my project almost like a system-design interview.
For every major component, I asked myself:
• Why did we choose this?
• What alternatives did we consider?
• What happens when it fails?
• How does it scale?
• What happens with duplicate events?
• Where can data be lost?
• How do we monitor it?
• What happens during a Kafka rebalance?
• What would I change if traffic increased 10x?
• What was my actual contribution?
This helped me handle follow-up questions much better than simply memorizing the architecture.
#SDE2 #SoftwareEngineering #DSA #LLD #SystemDesign #Java #Kafka #BackendEngineering #DistributedSystems #TechInterviews #InterviewPreparation


