Tech IndustrySep 21, 2018
NewIVQP68

System Design Interviews : What do the interviewers look for ?

I've been reading through Grokking the System Design Interview, System Design Primer for past couple of days but I'm still not sure how to approach the interviews(or rather, what the interviewer will be looking for) For e.g if the question is Design a video distribution system, there are so many assumptions which I can make that can go wrong. For eg, my approach would be as as follows i) Get the requirements i.e to upload video by a user and they get added to the catalogue and other viewers can stream the videos on demand. Then talk about additional requirements(playlists, searching for videos etc), privacy options(i.e private videos,) ==> I can easily miss out a lot of things here ii) Get the sense of scale and formats. I can make an assumption that 1 machine will serve 5000QPS(aggregated, for all types) and adjust the number of machines as per my QPS request. Specify supported formats, (.raw, .flv) and make a claim that 1 video will be on an avg 10MB. for 10 billion videos(youtube scale), I would need ~10 peta bytes of storage for current needs and would scale for double i.e 20 peta bytes considering future growth. . . ==> I can be wrong on so many levels here i.e I can so easily over/underestimate in an interview.. iii) Design the architecture with Reverse Proxy/Load balancer/Application Servers/Data stores(object storage for saving videos themselves, and a structured DB for saving video hash, user related information, video catalog), a distributed cache for popular items, Talk about sharding here ==> Again, I can go horribly wrong in designing the schema.. I might miss out some crucial information or make it slow for a critical information by not indexing on some fields or index on a lot of unnecessary things . .. etc.. iv) Talk about general things like healthcheck, analytics, etc and the internals of how 1/2 things would work and specify the contracts/API/s (HTTP for establishing the connection and a long lived connection for streaming the videos). .for e.g about a primitive algorithm regarding how to rank the search results.. Possibly psuedocode here and talk about ranking by metadata etc .. OR talk about how user handling/session management and sticky sessions are handled .. OR about video compression techniques etc ==> Problem is, I know barely enough to scratch the surface of these topics and can't talk about anything for more than 5 minutes. . Finally, focus on anything specific an interviewer wants me to talk about.. For context, I've 3 YoE experience and most of time, I've spent writing application specific code and my experience has been limited to AWS and it's related ecosystem(R53, Load Balancers, Redshift i.e mostly managed databases for anything closely at scale.. ) and most recently Kubernetes on Google Cloud.. ==> I'm not an expert in any of these, for e.g I still cannot confidently answer how containers are correctly scheduled, etc.. I've an interview in 2 weeks at FB and feeling a bit overwhelmed by number of things that can go wrong in a system design interview..

Add a comment
Amazon ukEx25 Sep 21, 2018

Do you know anything about proving designs? Can you use tools like TLA+ and understand what you’re putting in, getting out?

New
IVQP68 OP Sep 21, 2018

I don't :(

Amazon ukEx25 Sep 21, 2018

I recommend Specifying Systems: The TLA+ Language... https://www.amazon.com/dp/032114306X

Intel goforit🤝 Sep 21, 2018

You are in much better shape .. just imagine if you have only systems background and knows nothing abt cloud or scalability

Amazon 3d Sep 21, 2018

Good job on your design description @IVQP68 I have taken a stab at what I will look for and "assessed" your response. > if the question is Design a video distribution system This is a classic question, and yes has been asked multiple times. > i) Get the requirements i.e to upload video by a user and they get added to the catalogue and other viewers can stream the videos on demand. Then talk about additional requirements(playlists, searching for videos etc), privacy options(i.e private videos,) ==> I can easily miss out a lot of things here Great step, get the requirements of the system. Missing things here is not that big of a deal. One important thing is that before you get a level set on objective of the interview, this could be a OO interview, architecture interview, scale interview or a combination of these. Requirements step doesnt change much, but my advise is keep it simple, demonstate that you are thinking about the requirements, dont overdo it.. dont underdo it. > ii) Get the sense of scale and formats. I can make an assumption that 1 machine will serve 5000QPS(aggregated, for all types) and adjust the number of machines as per my QPS request. Specify supported formats, (.raw, .flv) and make a claim that 1 video will be on an avg 10MB. for 10 billion videos(youtube scale), I would need ~10 peta bytes of storage for current needs and would scale for double i.e 20 peta bytes considering future growth. . . ==> I can be wrong on so many levels here i.e I can so easily over/underestimate in an interview.. Too early for scale here.. I would go in this order a. interview objectives b. functional requiremetns c. design a working prototype that fills the core needs / api spec / block diagrams of who does what when and how (sync vs async) d. design validation to make sure your system will indeed work. e. understand pressure points, and deal with them in iterations. if scale is an issue, sharding / load balancing, if security is a question, reverse proxy with termination etc etc. f. scale comes after all these.

Deutsche Bank Tops Sep 21, 2018

👍👍

Gartner fetachz Mar 23, 2019

Anyone willing to share grokking system design ??