5 Tips for System Design Interviews
Vložit
- čas přidán 5. 06. 2024
- Here are 5 Tips for System Design interviews. They are helpful when preparing for a System Design interview.
1. Don't get into details prematurely
2. Avoid fitting requirements to a set architecture in mind
3. Keep it simple, stupid! Remember to look at the big picture and avoid too many hacks when solving.
4. Have justifications for the points you make. Don't use buzzwords or half-hearted thoughts in your design.
5. Be aware of the current solutions and tech practices. A lot of solutions can be purchased off the shelf which simplifies implementation. You should be able to argue for a custom implementation with its pros and cons.
Have these on the back of your mind during your interview, and all the best!
Here are three major points evaluated during the interview:
1. Clarity of Thought
a. Express your thoughts in a clear manner.
b. Justify your decisions. Critical reasoning and argument are key to a successful software design.
c. When faced with a problem, use standard approaches to mitigate it. For example, say you are faced with an availability problem. State that replication and partitioning help increase availability in general, and move on to offer a solution.
d. Don’t make points without thinking them through. Half-hearted attempts at solving problems are frowned upon heavily.
2. Know about existing solutions
a. Stay up to date with the current solutions in the market. This includes products and design practices. If NoSQL is being adopted left right and center, you need to be aware of it.
b. Know when to pick a solution vs. building something custom. If you name a product, you should be (generally) aware of the features it provides.
c. Design practices enable you to meet custom requirements. Examples are decoupling systems, load balancing, sticky sessions, etc…
3. Flexibility
a. Switch your targets as the requirements shift. If the interviewer wants to know about one particular part of the system, do it first.
b. Never have a set architecture in mind. We all try to fit requirements to a system, but only after it has been shaped by the initial ones. A rigid attitude creates a brittle architecture. It will break before you do.
c. Take a step back at times to make adjustments to the general architecture. Being focused on one part can narrow our vision and bloat those areas. There will be components which can be extracted out and extended to the rest of the system.
Looking to ace your next interview? Try this System Design video course! 🔥
interviewready.io
00:00 Who is this for?
00:14 Eager Detailing
02:39 Fitting Solutions to Problems
03:49 Keep it simple
05:14 Wrong Examples
06:20 Technical Awareness
07:26 Summary
07:54 Thank you!
With video lectures, architecture diagrams, capacity planning, API contracts and evaluation tests. It's a complete package.
1. Avoid detailing early.
2. Avoid silver bullets. Don’t have a set architecture in mind. There’s no single architecture that’ll fit everywhere.
3. K. I. S. S. Keep it simple and stupid. The more details you get into one component, the narrower your view is. Take a step back and take a look at the entire architecture.
4. Form your thoughts. Avoid speaking without thinking the point through.
5. Be tech aware.
Hey Gaurav,
How to make one self tech aware.
For Eg: I am aware partially about few things : elastic, RabbitMQ, HDFS, Azure, Spark. But I am not sure about say: postgresql / LB / NoSql / zookeeper.
How can I learn to apply something in a design question if I don't know that side of designing part at all.
I cannot go about learning every other technology out there. Can I ?
KISS actually stands for Keep it simple, stupid.
@@millennial_rants Well, you will have to read more about these technologies and what problems they are meant to solve.
@@millennial_rants I have the same query. Thanks for asking
Thanks for the homework :)
2.5 years later this is still G.O.A.T. level material
In 2024 , also I feel this will definitely build foundation of system design
You're one of the best tech speakers I've come across. Clear, passionate, and knowledgable. Great stuff - keep it up!
Thank you 😁
0:13 Avoid detailing early
2:38 Avoid silver bullets
3:54 K.I.S.S.
5:13 Form your thoughts
6:20 Be tech-aware
7:16 Three pillars: clarity of thought, flexibility, knowledge
Excellent! Clearly, concise, and to-the-point. I recommend everybody preparing for a SD interview spend 8 minutes to watch this.
Amazing Job! You have done an excellent job of explaining the different components of System Design and I loved the fact that you use a whiteboard to cover your topics. Brilliant.
I love this Indian guys who help others to learn basic all subjects.
Unfortunately, sometimes it is too hard to understand their accent.
However, keep teaching! :D
Do not go into details prematurely
Don't have a set architecture in mind (avoid silver bullets)
KISS
Don't make points without justification (tell why, form your thoughts)
Be aware of current technologies (existing off-the-shelf solutions)
Thanks
Hi,
I saw your couple of videos, it’s really fantastic. It is really useful. Good energy while delivering the lecture. Keep it up.
Wow, such clear explanation, so many videos out there, but no one makes them sound simple as you do. Keep up the good work.
Your videos are amazing .. great to see how you learnt so much at this young age
Wonderful! Coherently spoken and conveyed the thoughts lucidly.
PS: Your Directi T-shirt sent me down the memory lane of my good ol Directi days. Cheers!
Thanks! Cheers! 😁
Fellow Directian here too!
Thank you for the discussion. I was also looking for the Failure Criteria!
Very crisp and great content about attitude needed for an interviewee attending for system design interview
Very beautifully explained the things, You slayed it :) Keep it up Gaurav.
This is great! I like the way how you fast forward the unwanted part, and focus on core things. A small request regarding all your videos, whenever you explain any concept please solve a problem with real world example. it helps a lot in understanding in more depth
Thank you!
I'll keep this in mind 😋
its so important to pause...this is the key to crack interviews...most of us (i would say most of indian friends) just get carries away...made this mistake several times..thanks for highlighting.
Dude the explanation was great, really helpful but that attitude, full of energy, good vibes, talking like if we were in front of you is so awesome, really great content.
This is really informative, well done!
Thank you 😁
Thank you so much for this video, even if it's a few years later! I recently passed Google's phone interview (to my surprise too), and now I'm studying DSA and Systems design like never before! I tried a few years back to crack this interview process, but now it's much different :)
Ooo
Dude you're a beast man! Great job and thanks for this!!
typically I don't leave comments but you've such a great job!!!! You should be proud.
A minor request, please don't have your camera setting in auto-focus you were constantly in/off of focus.
Thanks! I'll make sure I don't next time 😋
Really good advice. Thanks a bunch for the well thought out tips. Also, thank you very much for using a microphone attached to you and not the microphone on your camera. I can't handle presenters who have an echo.
Excellent Video Gaurav. Awesome explanation and good problem solving insights. I would like to add a few insights as far as software architecture is concerned. System Design is an art that carefully balances the user requirements and in-production quality attributes needed for a system to work and function properly. It is important to focus on a few design patterns and architecture level tatics that help in achieving scalability, good response time, reuseability and other architectural quality attribiutes that ultimately decide on system performance. There is always a tradeoff between the best possible architecture and the most feasibile one given one meets the timeline and cost of delivering an architecture. Arguing why one deisgn pattern works better over others in something that can really help in solving system design problems through iterative designing. Given a problem and a bunch of functional requirements, we need to come up with an architecture that meets quality and production requirements. Is layered architecture better? Should it be MVC? Will decorator pattern work better? Is a broker arbitration needed? Can we use pub-sub? and many more are just simple questions that one should be able to answer given a design problem? Does is scale? What is the response time? Is there fault tolerance? Is the deployment hassle free? Can it CD/CI? These are just points to ponder. Draw a module and connections diagram view, ask yourself, does it work why? why not? Can there be other tradeoffs. The list continues.
Thanks Gaurav ji
If I could like this video 100 times, I would. All great suggestions!
Thanks Gaurav for the awesome video!!
Big thanks to you man. Your informative videos I was able to crack many big interviews 🙏🏻
Great job!
thanks for this video, excellent tips!
Thank you so much for an amazing video Gaurav
Thanks Gaurav....very informative
Looks like some one has been prepping up his game for the past few days 😉. (SDE-2 huh)
Incase yes, I wish you all the best!!
Hahaha :)
Thank you!! This was super helpful
Very helpful tips, thank you Sir!
Outstanding video !!
Thanks for the tips, helps a lot.
You might want to turn off auto-focus to avoid so much of focus breathing. F4 (or above), manual focus once before start should be perfect!
The amount of value in this video is incalculable.
Eagerly waiting for your next video about system design from scratch. It will definitely give a idea about how to start thinking for novice. :)
Thanks Sugyan!
For benefit of others. Cheers Gaurav !
0:19 Donot go into detail, Prematurely
2:41 Don't have a set architecture in mind
3:55 Keep it Simple Stupid
5:14 Donot make points without justification ( always have a why )
6:21 Be aware of current technologies ( so you can name them )
Great stuff! Well explained 👌
Thanks Gaurav! You are really nice to share this information. I want YOU in my team :)
Thanks a million!
You, sir, are awesome !
Really great content...:). Thank You Gaurav
Thanks Archi!
thanks yaar. good video!
Very useful. Thanks for sharing
Wow I wish I could be as good as you are in these interviews
thanks for the crisp and smooth explanation.
Should we keep the fact in mind that interviewer might add an additional feature in between you're designing the system components?
Very impressive, bravos!
You Will hit a million subscribers soon.
Very nice video, thank you.
Hi Gaurav, Congrats for UBER job offer, thats a huge achievement, definitely a big step forward in your career. I really wish you continue with this channel as well though.. :) If you do, can you please prepare and share some videos in the area of caching? i.e. cache expiry, cache invalidation, approaches to solve cache size constraints, cache eviction? basically everything in the area of caching from a backend engineer perspective. Thanks in advance! best of luck for UBER!
I'll get to this too :)
Thank you very much :)
Like ur T-shirt.
It's true when ur doing the thing you want to do.
Really great thanks is not enough
Your explanation style is wonderful! Can you provide a full course on fundamentals and how to implement them on practical problems for system design newbies like me?!
I am working on a course. Suggestions always help 😁
@@gkcs for me your tinder video was the best as it was quite easy to understand because you went into minute details of the microservices (& probably because of its relatively simpler architecture as compared to instagram/whatsapp too). I understand going into too much details takes time (& sometimes focuses away from the problem at hand), but that's the only way to build base concepts..there goes my suggestion for you!!
Awesome tips !
Thank you!
6:20 Hi Gaurav - thanks for these tips ; will definitely make sure to define the network protocols and services properly. My only reservation is with regards to current technologies : I may not be fully aware of them ( e.g. what the tech used for load balancers is ) or may bring in something older ( e.g. IBM MQ Server instead of RabbitMQ ) in lieu of abstractions . Any suggestions for what to do here?
Great video..
Hey Gaurav, these sessions are so helpful. Do you have plans to create content specific to product managers? For example, help product managers crack the system design interview.
So energetic and smiley
Hi Gaurav, Can you please do a video on UBER system design and Facebook System design, your video is super helpful and understanding!
sir...please make video on hamiltonian paths and cycles.
Thanks Gaurav! I think you might improve on your video quality by turning off the automatic focus and automatic exposure, noticed it in a few of your videos.
Yes, thanks!
love the video
Ha ha, wish I would have watched this before my interview.
Thanku bro
Hi Gaurav, will there be more videos about system design coming up? Loved all the videos on your system design playlist so far.
Yes there will :D
Coming up this weekend, I think ;)
@gaurav : At 1:12 the advice is gold
Set the camera focus and leave it in manual, so its not constantly hunting and trying to autofocus as you move around. :)
I finally got this trick in the most recent video, thanks!
Can you please create a Video for Recommendation System.
very useful :)
very good video
Done with all the 23 videos in just two days (Thanks to corona😂)!... what do I do now??? Thanks for the videos, you are just awesome!🤩
Wow, that's probably the only good thing this virus has done lol.
You can try the system design course now. It a little more advanced than the playlist you crushed in two days :P
get.interviewready.io/courses/system-design-interview-prep
These tips can be used for a conversation too
Thaaank u so much
Thank you!
where did you get that shirt from? love it
Hi Gaurav,
Thanks for you tutorials , which are very helpfull .
could you make tutorial on when we go for Sql and NoSql
Hi Sravan! Sure 🙂
You should read about CAP theorem
Maqbool thank you
Awesome gaurav. can you add the system design for twitter?
Can we have one video for enterprise integration design?..however, thanks for the nice videos 😀
Wish I had seen this before my Amazon interview today 😂😂😂😅
What interviewer means when he asks - " tell me the components of your system". What is meant by component in a system design interview?
The modules or parts of your system.
Usually means, tell me the microservices being used :)
Great tips. Hopefully, you started disabling auto-focus after this video 😊.
Good Job Buddy...
Thank you 😁
I love you!
Nice shirt, Work is Play..
It motivated me.
😁
Amazing video this one is. Kudos. I just wanted to ask that I'm a final year B.Tech student applying for an Amazon interview soon. Should I expect system design related questions?
Thanks!
Freshers are not expected to know about System Design :)
@@gkcs Thank you so much for the response.
A doubt/request for the 5th point. I'm a final year student btw.
Being aware of these technologies is great as you already mentioned. But you also said that there should be a reasoning for such examples. What if I say that we can use Kafka or RabbitMQ for Message Queues/Event handling, but they start asking me about these technologies? Tbh, I haven't worked upon them and just know about them as examples.
Also, if one should know at least a bit of every thing, then can you please provide some link(s) to better understand these technologies, but quickly? It'll be great!
Also thanks for such amazing videos! Keep rocking as always!
Good points Krishn, the examples should be backed with some understanding on how they work.
I'd suggest mentioning how much you know of the technolgies while taking them as examples. That way the interviewer knows that you are aware of 'off the shelf' solutions, but not necessarily their internal workings.
@@gkcs I absolutely agree. Being honest is better than faking out on such crucial moments.
Thanks once again! :)
When you talk about gateways, what do you prefer? Can you share some insights ? Also why should we have a gateway ? We can have something like Akamai etc
Gateway here is being referred to the Load Balancer you would have for your system. It is important for many reasons to make your system efficient.
GOLD Points
Thx for posting this video Gaurav. It was very helpful. Quick question: for point no. 4, can the pets and cattle analogy be used when answering a systems design question? This doesn’t mean however that we forget point no. 5.
I wouldn't use the phrase, although it does sound cool.
keep making these videos :)
Thanks Rajdeep!
btw I have same blue adidas tshirt :P
Hey Gaurav,
plz can u make a video for designing a shopping cart .where there will be different classes . Also there will be different kinf of coupons which can be applied on the final amount of the cart. if there exist anf soucr for such use cases plz help
By client, you are referring to the front end right? Are servers the same as API?
"Be aware of the current solutions and tech practices" and "Stay up to date with the current solutions in the market. " What online publications do you recommend to follow? Besides your interviewready course and your awesome youtube videos, of course! :)
I love the blogs on highscalability.com/ and the book "Designing Data Intensive Applications" 😁
Hi gaurav, one question does system design interview have coding round?
@Gaurav Sen - Great video, just one comment though: camera's adjusting focus again and again muliple times throughout the video. Very annoying :P !!!
Hi Hemant! I know, hated that too. Will make sure the focus is fixed next time!
I want to learn system design could u explain different kinds of questions
Could you please discuss system design for Google calender?
@Guarev Nice t-shirt!
Thanks 😁
Hi Gaurav/anyone who can answer my query,
I am a java full stack developer, for db I have enough knowledge of relational db but have only heard about redis/cassandra/no sql etc as just buzzwords. I can read about them to get an overview but i don't feel very comfortable mentioning them in interviews as, if they ask too many questions about it i'll be lost and that doesn't seem good. So what exactly should be my approach?