System Design Mock Interview: Design Instagram

preview_player
Показать описание

In this interview, Jacob (Dropbox Software Engineer) answers a system design interview question of designing Instagram, commonly asked in software engineering and technical program management (TPM) interviews.


Chapters -
00:00:00 Introduction
00:00:09 Question
00:00:35 Answer
00:01:13 Requirements
00:03:41 Scale
00:06:19 Data types
00:14:50 Design

ABOUT US:
Did you enjoy this video? Want to land your dream career? Exponent is an online community, course, and coaching platform to help you ace your upcoming interview. Exponent has helped people land their dream careers at companies like Google, Microsoft, Amazon, and high-growth startups. Exponent is currently licensed by Stanford, Yale, UW, and others.

Our courses include interview lessons, questions, and complete answers with video walkthroughs. Access hours of real interview videos, where we analyze what went right or wrong, and our 1000+ community of expert coaches and industry professionals, to help you get your dream job and more!

#softwareengineer #systemdesign #mockinterview #technicalprogrammanagement #tpminterview #tech #technicalprogrammanager #coding #programming #systemdesign #entrepreneurship #exponent #softwareengineering
Рекомендации по теме
Комментарии
Автор

Great job.. Thanks for the video.

I think we can add the following:
- Elaborating the DB sharding and partitioning in the system.
- DB Replication, by adding redundant blocks for database based on master/slave relation, where the master is for write, and slaves for read.
- Talking about the data searching, like considering to use Elasticsearch for example.
- Adding a block for CDN to clarify where it should to be in the system diagram.
- Adding a message/uploading queue
- Making an estimation for bandwidth

meqdaddev
Автор

"And then we can talk about the API a little bit later"
Never talks about API

BoNyKiD
Автор

This is a great example of what you should strive to have completed at the halfway point of the interview.

JamesMortenson-fzch
Автор

A good to add would be message queue. As we know, when we update for example a big image, user shouldn't be waiting there for a long time. Also, if we write the huge chunk of data directly to to the image storage, it will explode (storage usually won't have such a big RAM)! Hence, a good practice would be push it to the queue with a publisher, and have multiple listeners to update these images data (binary formats) into the storage.

NianLi
Автор

After scrolling through 100s of SD videos finally I found a way to approach the questions in the interviews. Your step by step approach from start to finish was really helpful. Thanks

udb_music
Автор

Unreal video! I'm relatively new to Systems Design but this was easy to follow and aligned with a lot of other good information I've been finding on the web. Thank you!

babybear-hqyd
Автор

I like the pace and structure of this video. What helps is that I worked on my design and looked at this video to see how well I did. One revision I would make is adding a object storage proxy and the backend service would call the proxy instead for protected images. To me, object storage is the toughest part of this problem. Public images can be served with cdn but private photos must retrieve from object storage.

kimnguyen
Автор

Thanks a lot, you clearly explained how to draw the architecture diagram component by component and finally building the whole system. Other popular system design videos missing this.

NithinMWarrier
Автор

This was an enormous help in my interview today! I adapted the flow to talk about the specific requirements. Calculating scale and talking about the data model with a segue into the overview diagram was very coherent. Most of all it produced every possible opportunity to highlight my experience with the components I presented, which is the overall goal.

thatsamorais
Автор

I think this video is really very generic, so much so that this design could be applied to any problem. Would have loved see you deep diving into details of any one component in this 30 min video. For e.g is database sharing required? Do we need noSQL databases? how would the fan out process work? How to handle influencers who have 5 million followers? Disappointed to see those details missing here.

markp
Автор

Love this! Have my first ever systems design interview tomorrow and the broadness and pace of this interview is perfect!

nickcocks
Автор

Loved the video, great explanation. What is the UI/ tool used here to draw for the system design?

vennyroxz
Автор

Nice pace of the mock interview. However, the diagram can actually fit most of the system. Shouldn't we focus more on how to fan-out photos, generate news feed, etc, which are more specific to "designing Instagram"? I wonder if we only talk about the high-level things and teaching the interviewers those basic architectural concepts (read-write, load balancer, s3, CDN) as this video does can really ace the interview.

西兑
Автор

Thanks for the video! Really enjoyed it as it gives a great exploration of the problem.

However, I think the candidate needs to further explore the scaling of the data and provide estimations about read/write requests per second, traffic and storage needed that we need for instance for 10 years, and what to do when the DB is full that we need to scale vertically (as we you have gone for a MySQL).

Those information will help out understanding the overall scale of our system and brightens the scene for the interviewer that we are set with with expected traffic and can manage to handle the requests.

basselabuelhija
Автор

The feed generation part needs a bit more detail IMO. That's the most challenging part of this. Would you generate it on read or on write? Or a combination of both? Also, what if it's not a linear timeline of events but needs to be ranked? Also, details around comments and replies?

LaVengeanceInc
Автор

Its nice, thank you !
1. CDN could have been added
2. Encoding of videos and photos

sourabh
Автор

"Following" table being a simple "from" "to" list would mean you'll need to scan the table anytime you need a list of followers. So, a list of followers and following would be required for customized feed. A graph DB for this should also be considered.

oneepicsaxguy
Автор

Very good video for very novice engineers looking to learn about systems. However, there are big gaps here when it comes to scaling, ie. using a relational database (which also decreases performance) and having a synchronous system.

ryanm
Автор

Nice video! Which software do you use for the diagram?

richann
Автор

I'm far from an expert, but I disagree with your reasoning for choosing a SQL (relational) database. All data that's worth representing is relational in some way. That doesn't mean that SQL dbs are always the way to go. The types of queries you described can be performed efficiently on NoSQL dbs with smart use of indexes and would offer better scalability for a social platform like Instagram. No mention of Graph representation either, which is ideal for representing many to many relationships.

ivantrofymenko