How to master low level system design?
Jan 5, 2021
13 Comments
Been struggling in LLD interviews. Failed few senior level interviews only because I failed LLD rounds. How to master LLD?
Things tried:
Grookkking LLD
Few YouTube Videos
Few leetcode discussion threads
I'm going through above over and over again, to get a feel about designing these systems. Any other suggestions?
@Amazon and Uber guys, how do you do prepare for these interviews ?
Also how do you judge interviewee for SDE-3 level roles in LLD? What's a great LLD?
comments
In my opinion LLD is something that comes with experience.
There are several excellent books on OO analysis and design. One by Grady Booch. I'd suggest read one of those. Then find examples online and try to create your design first, then compare with given solution and understand what was good what's was bad.
Also read design patterns and understand how to apply them.
At the interview stage you should be comfortable moving from a larger scope design (e.g. modules/packages) into specific modules where you talk about class diagram, inheritance vs composition, interaction between different classes/objects, design patterns etc. The effortless moving between layers of abstraction in a logical way shows depth and ability to decompose problems and synthesise solutions. It is a very good signal I look into when I interview.
This does come with experience and is always challenging the only way is keep on learning and doing it.
- pub-sub
- transactional system
- cache
- load balancer, rate limiting etc
- streaming systems
- security layer
- authentication
- crons
When I get a problem, I think in terms of the building blocks, then suggest the tool to do that job. Rest discussions are typically around scaling, error reporting, debugging, maintenance etc