Very Bad idea giving name like gettweet ,createtweet . Basic naming of Rest API end points . Considering tweet as a resource just have GET and POST on it
Critiques: - Make it a conversation with your interviewer, engage them and give them space to speak - Detail the scale requirements of the system in more detail, using numerical calculations - Non functional requirements didn't have enough detail - clarify the consistency, availability, partition tolerance requirements - Don't include the verbs in the API naming - Mention load balancers, but don't include them in your diagram - Having multiple user boxes was redundant - Discuss push/pull mechanisms in more detail - Beware of adding too much complexity to a system, and just glazing over it - Don't include diagram items for replicas, at most, just mark the service/database - More detail of horizontal scaling should be included Overall, I think people preparing for interviews should view this as an example of what not to do.
We should at least do some back-envelope analysis on the MAU, DAU, QPS,etc for the non-functional requirement. We should also make it more interactive, i.e. check the feedback of the interviewer before jumping into the details of the API's. Maybe ask the interview to see if he wants to see which one first: high-level design, API, or data model?
The geographic load balancing to different API servers part made no sense to me. When a user makes a request to a load balancer, they make an API request specifically to the load balancer and receive from it directly, so the don't make contact with the API servers at all. If you put the API servers in different regions, that would only be with respect to the load balancer, not the user themselves, so it wouldn't help at all since the load balancer is still in the same region. You'd need to do the geographic routing first before the load balancing step to do this properly, aka a traffic manager.
To me it sounded like..this is very very high level design ..but in my opinion he could have added some details around some of the below aspects or at least get clarification on requirements to trim out some of these.. 1. Capacity planning 2. Type of DB and reason behind choosing that 3. Security aspects 4. High level db design 5. Tech stack ..for example.. aws s3 or cloud front or redis or Kafka etc 6. Scaling .. 7. peek load handling 8. caching mechanism
One of the most horrible and unrealistic design interviews out there on the internet. Asks almost no questions (fundamental to design interviews). Not collaborative (also fundamental to design interviews). Doesn't add a space in front of "(" when writing in English. Super distracting and unprofessional. Breaks basic RESTful conventions with routes like /create/tweet
Can definitely tell that this interviewee watched the Success In Tech version for this video. Like Chinese whispers, where unfortunately a lot of things are discussed at a high level and not enough rationale is explored. I mean he even says Lady Gaga for his example for influencers, word for word as in the Success in Tech video. Just saying 🤷🏻♂️
Would it be good design to have the timeline as a queue. The queue would have a size that could perhaps be increased for people with lots of traffic. That way we store items that would be in the queue in the faster access database space and perhaps the stuff that would be maybe 3 queue away would perhaps be stored in a separate less frequently accessed storage (E3 perhaps?)
For the timeline database, would it make more sense to store a list of tweet ids per user and then query the user database at runtime to compile the tweet text?
if you only store id, you need to use the id to query the database again, you still need to visit the same database. While in the timeline generator, the timeline already been build and just get everything all-in-once.
In this case we are sacrificing storage and consistency to have low latency, which is one of the non functional requirements. It would be way slower to fetch the timeline and then populate with the tweets from the tweets database, not to say we would be coupling the timeline service with the database used for creating tweets.
This is a bad video. I would reject this candidate. The API design is too abstract, the get API is not right. FB system design interviews are surely not this easy. This person is very lucky to be at FB.
Don't leave your system design interview to chance. Sign up for Exponent's system design interview course today: bit.ly/3NLRGRI
But the create API is only factoring in text mesages. What about posts that have videos or images ?
If the quality of your courses are as bad as the current mock interview then I would rather never try exponent ..
Someone made this guy an EM lol
Very Bad idea giving name like gettweet ,createtweet . Basic naming of Rest API end points . Considering tweet as a resource just have GET and POST on it
Agree.
Yes that's the design smell
Critiques:
- Make it a conversation with your interviewer, engage them and give them space to speak
- Detail the scale requirements of the system in more detail, using numerical calculations
- Non functional requirements didn't have enough detail - clarify the consistency, availability, partition tolerance requirements
- Don't include the verbs in the API naming
- Mention load balancers, but don't include them in your diagram
- Having multiple user boxes was redundant
- Discuss push/pull mechanisms in more detail
- Beware of adding too much complexity to a system, and just glazing over it
- Don't include diagram items for replicas, at most, just mark the service/database
- More detail of horizontal scaling should be included
Overall, I think people preparing for interviews should view this as an example of what not to do.
We should at least do some back-envelope analysis on the MAU, DAU, QPS,etc for the non-functional requirement. We should also make it more interactive, i.e. check the feedback of the interviewer before jumping into the details of the API's. Maybe ask the interview to see if he wants to see which one first: high-level design, API, or data model?
QPS, Storage and Network Bandwith estimation are required.
He skipped the data model as well
Thanks for the content! API structure is kind of out of common way to design restful apis. Don’t use verbs when it is possible.
The geographic load balancing to different API servers part made no sense to me. When a user makes a request to a load balancer, they make an API request specifically to the load balancer and receive from it directly, so the don't make contact with the API servers at all. If you put the API servers in different regions, that would only be with respect to the load balancer, not the user themselves, so it wouldn't help at all since the load balancer is still in the same region. You'd need to do the geographic routing first before the load balancing step to do this properly, aka a traffic manager.
He is kinda nervous or not prepared. He used a load balancer instead of a traffic manager....
That was exactly my question like where would load balancer be geographically
Can you please explain what traffic manager is in brief?
This is a good interview. You designed twitter in 20 mins. Haters will say it’s not good.
This interview feels like it is given by a New Grad Software Engineer.
Cant agree more with you.
This was pretty rough. If that’s what Exponent’s class teaches you then I’ll pass
not everyone wants to work at Albertsons, Walmart is ok for some
@@donotreportmebro you base the level of learning on what company you are applying to? Aim higher for yourself, forget the company
@@cpy Nice
thanks Hozefa!
To me it sounded like..this is very very high level design ..but in my opinion he could have added some details around some of the below aspects or at least get clarification on requirements to trim out some of these..
1. Capacity planning
2. Type of DB and reason behind choosing that
3. Security aspects
4. High level db design
5. Tech stack ..for example.. aws s3 or cloud front or redis or Kafka etc
6. Scaling ..
7. peek load handling
8. caching mechanism
Probably been asked on previous videos, but what software/website is used as the design visualization/scratchpad for the interviewees?
Whimsical !
@@reevuadhikary thank you!
sql db for tweets will be slow... timeline and feeds are different things
One of the most horrible and unrealistic design interviews out there on the internet.
Asks almost no questions (fundamental to design interviews).
Not collaborative (also fundamental to design interviews).
Doesn't add a space in front of "(" when writing in English. Super distracting and unprofessional.
Breaks basic RESTful conventions with routes like /create/tweet
The API names are not as per the standard. But overall good discussion.
When interviewer asked for 80:20 question, I knew he was expecting to listen cache in the answer but the interviewee failed to catch that.
agreed
He didn't do any capacity calculations such as bandwidth and storage, is that ok for these interviews?
probably not. If you ever interviewed with facebook, their prep doc says those calculations are 100% required.
no, its probably a red flag.
Can definitely tell that this interviewee watched the Success In Tech version for this video. Like Chinese whispers, where unfortunately a lot of things are discussed at a high level and not enough rationale is explored.
I mean he even says Lady Gaga for his example for influencers, word for word as in the Success in Tech video. Just saying 🤷🏻♂️
What app is it in the background?
@exponent which tool is being used while answering the question?
Whimsical
Appreciate content, but little average api design
Would it be good design to have the timeline as a queue. The queue would have a size that could perhaps be increased for people with lots of traffic. That way we store items that would be in the queue in the faster access database space and perhaps the stuff that would be maybe 3 queue away would perhaps be stored in a separate less frequently accessed storage (E3 perhaps?)
For a facebook program manager that's a potato quality webcam.
Candidate seemed nervous
What tool for creating the diagrams are you using?
Hi Alex! The whiteboard tool being used here is “Whimsical”. They have a free and paid version so do check them out if you are interested!
For the timeline database, would it make more sense to store a list of tweet ids per user and then query the user database at runtime to compile the tweet text?
if you only store id, you need to use the id to query the database again, you still need to visit the same database. While in the timeline generator, the timeline already been build and just get everything all-in-once.
In this case we are sacrificing storage and consistency to have low latency, which is one of the non functional requirements. It would be way slower to fetch the timeline and then populate with the tweets from the tweets database, not to say we would be coupling the timeline service with the database used for creating tweets.
I like it 👍 What IDE do you use for the design prototyping?
Whimsical
I was expecting more out of this. This was a waste of my time.
its like only 24m system design interviews are like at least 35m
a failed interview for both interviewer and interviewee. such low quality
cool makes sense.....
Looks like he didn't prepare well for the interview.
This is a bad example of how you should not approach a system design interview
This design was so mediocre
This is a bad video. I would reject this candidate. The API design is too abstract, the get API is not right. FB system design interviews are surely not this easy. This person is very lucky to be at FB.
And where are you?
diversity hiring quotas
@@slavanikulin8069 helps to have interviewers that look like you. Less bias.
He is at WealthFront and was at paypal for 8 years before that. Designing Twitter was asked in a FB interview hence the title
what is the meaning of mvp?
Minimum Valuable Product.
Minimum viable product - the most basic version of a product you can ship to start getting feedback from users.
This is too basic design. Unless the candidate has less than 4 years of experience, this should get rejected
Does anyone else think this interviewer is annoying?
Why? LMAO
Lost at influencer service/timeline generation piece. Please elaborate to me how these services work