System Design Interviews : What do the interviewers look for ?

New IVQP68
Sep 21, 2018 8 Comments

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..

comments

Want to comment? LOG IN or SIGN UP
TOP 8 Comments
  • Amazon / Eng 3d
    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.
    Sep 21, 2018 1
    • Deutsche Bank Tops
      👍👍
      Sep 21, 2018
  • Amazon ukEx25
    Do you know anything about proving designs? Can you use tools like TLA+ and understand what you’re putting in, getting out?
    Sep 21, 2018 3
    • New IVQP68
      OP
      I don't :(
      Sep 21, 2018
    • Amazon ukEx25
      I recommend Specifying Systems: The TLA+ Language... https://www.amazon.com/dp/032114306X
      Sep 21, 2018
    • Amazon ukEx25
      The general point is that if you can design something and mathematically prove important portions of it (the parts you’re building vs. the bits you’re offloading to AWS) you’re going to have a lot more credibility no matter how long you speak for. I’d rather hear you explain a provable design for 3 minutes than yammer on for 10 about something pointless.
      Sep 21, 2018
  • Gartner fetachz
    Anyone willing to share grokking system design ??
    Mar 23 0
  • You are in much better shape .. just imagine if you have only systems background and knows nothing abt cloud or scalability
    Sep 21, 2018 0