System Design Interview: Design Calendar Application

Sdílet
Vložit
  • čas přidán 27. 07. 2024
  • Don't leave your system design interview to chance. Sign up for Exponent's system design interview course today: bit.ly/3DsYvTa
    Watch our mock system design interview. Angie asks Connor a question on how to design a relational model for a calendar application.
    Chapters -
    00:00:00 - Introduction
    00:00:45 - Clarifying questions
    00:01:18 - Data types
    00:02:37 - Design
    00:17:40 - Follow-up questions
    00:22:25 - Interview analysis
    Watch more videos here:
    - Amazon SDE answers binary tree question: • Amazon Software Engine...
    - Google SWE answers algorithms interview question: • Google Software Engine...
    - Google TPM answers Tiktok system design interview question: • System Design Mock Int...
    - Microsoft SWE answers algorithms interview question: • Microsoft Software Eng...
    👉 Subscribe to our channel: bit.ly/exponentyt
    🕊️ Follow us on Twitter: bit.ly/exptweet
    💙 Like us on Facebook for special discounts: bit.ly/exponentfb
    📷 Check us out on Instagram: bit.ly/exponentig
    📹 Watch us on TikTok: bit.ly/exponenttikttok
    ABOUT US:
    Did you enjoy this interview question and answer? 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!
    #systemdesign #calendar #software #engineeringmanagement #tech #entrepreneurship #exponent #tpm
  • Zábava

Komentáře • 53

  • @tryexponent
    @tryexponent  Před 2 lety

    Don't leave your system design interview to chance. Sign up for Exponent's system design interview course today: bit.ly/3DsYvTa

  • @gauravpandey599
    @gauravpandey599 Před 2 lety +73

    This was more of a Database design, obviously not a system design video.

    • @BogdanHladiuc
      @BogdanHladiuc Před 2 lety +8

      The question was to define a relationship model for a calendar. I guess that’s why he concentrated on that part.

    • @ereka0204
      @ereka0204 Před 2 lety +4

      yup i feel the same, also it went too fast into the schema design. wondering would it be better to discuss the storage before starting on schema. like why sql over no sql. also talk more about what is a "calendar" object. what is an "event" etc

    • @LUN-bo2fb
      @LUN-bo2fb Před 28 dny +1

      You cannot do a meaningful system design unless you discuss what to be store in database. how to handle data...

  • @priyankjoshi3018
    @priyankjoshi3018 Před 2 lety

    Thanks Guys, great job.

  • @ChandraShekhar-by3cd
    @ChandraShekhar-by3cd Před 2 lety +4

    Thanks a lot for great informative video on system design. Please keep posting more video on Low Level Design as well as System Design. I think we have seen none of Low Level design video. Hope to see these videos in future. Thanks

    • @tryexponent
      @tryexponent  Před 2 lety +2

      Hey @Chandra, do you have an example low-level design question you'd like to see here?

    • @ChandraShekhar-by3cd
      @ChandraShekhar-by3cd Před 2 lety +4

      @@tryexponent First of all thank you so much for providing the great content via your Amazing Channel. I would like to have example like FoodDeliveryApplication, Library Management System, BookMyShow(Ticket booking System), Online Chess Game etc which includes all the class diagrams and relationship[p between the classes and using design and Solid principle to carry out the overall architecture of the System.

  • @anubhavjain5463
    @anubhavjain5463 Před rokem +4

    It would be great if you can cover the recurring events along with RSVP so if user has rejected an event invite or any particular recurring event, it should not ne be visible in its calendar

  • @minicraft9158
    @minicraft9158 Před 2 lety

    Thnax for posting such an informative video, I'm really noob at system design 😅

    • @KiprutoR
      @KiprutoR Před 2 lety

      I don't think this is really a system design, rather database design. There's a clear cut difference between the two imo

  • @oscarherediamiranda616

    Hi guy!! Here from Peru. You have now a new follower on your channel. I hope you are fine and I hope you make more videos about this

  • @GauravKumar-wm4cm
    @GauravKumar-wm4cm Před 2 lety

    What tool you guys are using for designing these flows
    ?

  • @koshydigital
    @koshydigital Před 2 lety +20

    What tool is Connor using to type out that table schema?

    • @tryexponent
      @tryexponent  Před 2 lety +13

      It's called Whimsical! We use it across all of our mock system design videos

    • @sukhmeetchhabra9218
      @sukhmeetchhabra9218 Před 2 lety

      @@tryexponent I do not see a similar option in Whimsical.. Is it a template? or Project? how to add lists

    • @MultiPerplexedDude
      @MultiPerplexedDude Před 2 lety

      @@sukhmeetchhabra9218 it is wireframe

    • @JiahaoChen
      @JiahaoChen Před 2 lety

      @@tryexponent Cool! Thanks for sharing!

  • @ereka0204
    @ereka0204 Před 2 lety +13

    thank you for posting. but wondering if this is the way do go during a system design interview. I could be wrong, but I was looking for some discussion about the definition of a "calendar" or "event" object before goes into the schema design. also some discussion about the scale of the project. and how users interact with the APIs (also some api design). Just briefly discuss about all of these issue, and then pick one thing to dive deep.

    • @TheMohit987
      @TheMohit987 Před rokem +2

      I also stopped after watching the half video. This is not the right way.

    • @VinitGargWines
      @VinitGargWines Před 4 měsíci

      In the start of the interview itself, interviewer's expectations was to to design a relational model for the calendar. So IMO they did what is asked for.

  • @youngboss3659
    @youngboss3659 Před 2 lety +2

    Takes querying 5 tables to server 1 common request like view my events today? Talking about DB model & relationship without access pattern first just looks wired

  • @yog2915
    @yog2915 Před 2 lety +5

    Its a DB design not system design please rename the title

  • @sentinelese6717
    @sentinelese6717 Před 2 lety +5

    May I ask one question: Which tool did the interviewee used to draw those diagrams so fast ?

    • @groveos_dev
      @groveos_dev Před 2 lety +3

      Pretty sure that's Whimsical. Great tool 👌

  • @rishabhscodes
    @rishabhscodes Před 11 měsíci

    Why is he storing notifs in a table ? Wouldn't making it functional be better?

  • @rubixcubemaster9515
    @rubixcubemaster9515 Před 2 lety +1

    How we can keep recurring meetings, it will be huge data to save if we save each event of reccuring event as a new row, Is there any other way to just save as small as possible data for recurring events, Also i would like to see how will be the HLD for the same. Thanks in advance!!

    • @niceperson6412
      @niceperson6412 Před 2 lety

      I think we need to have a Series table and series_id (it can be null tho) referenced by Events.

  • @deathbombs
    @deathbombs Před 2 lety

    That clarifying questions only lasted a minute, and they were all provided by interviewer? Then he dived right into data model, and no flow from the requirements mentioned by interviewer?

  • @user-wj3bp4uq3u
    @user-wj3bp4uq3u Před rokem

    What is the editor used in this demo

  • @niketkh
    @niketkh Před 2 lety +3

    How would it handle recurring events?
    How is it stored in database?

    • @groveos_dev
      @groveos_dev Před 2 lety

      Same question here! Would love to see a video on how to think about recurring events.

    • @dalvinjosias2963
      @dalvinjosias2963 Před rokem

      When I tried this exercise myself, I was thinking about adding an enum for occurrence on the Event model. That way, I can easily map days to a time in the future.
      YEARLY == 365 Days
      Daily == 1 Day
      Weekly == 7 Days
      Monthly == 31 Days etc...
      But then I looked at google calendar and saw how they handle, recurring events, and made me think that if on the Event model, add a boolean (reoccurs) if that is checked, create a new Model (RecurringEvent).
      Which has an enum if the recurrence is daily, weekly, monthly, annually. If it is custom there can be more options for how often to do the reminder the event and what not

  • @manishjain8953
    @manishjain8953 Před 2 lety

    which tool he is using ?

    • @house102
      @house102 Před 2 lety

      would like to know too, see a few interviews, but they never talk about the tools they used

  • @seventail
    @seventail Před 2 lety +4

    this must be for a junior position, I mean 2 mins in, you can already tell if the person has experience or not, you can ask about if there is a join that is heavy on one dataset vs the other but that's the extend of signal you can get. senior position is more free form to let the candidate "shine"

    • @devanshgarg31
      @devanshgarg31 Před 2 lety

      Same thoughts.

    • @AbstractAbsorption
      @AbstractAbsorption Před 2 lety

      Can you elaborate on “join that is heavy on one dataset”? What does that mean/what should one be looking for

    • @deathbombs
      @deathbombs Před 2 lety

      @@AbstractAbsorption that also didn't make sense to me, I guess he means interviewer could ask that or interviewee could bring it up? Either way, it's depends on what queries you wanna support too

  • @ihsannuruliman4005
    @ihsannuruliman4005 Před 6 měsíci

    Still don't understand why we use a junction table for a one-to-many relationship...

  • @ngneerin
    @ngneerin Před 2 lety +9

    I don't think the design would work in production. Most of all, there was no proper solution about scaling up. No solution to method of sharding

  • @RoBot-ij5ic
    @RoBot-ij5ic Před rokem

    Calender is linked to a user. Events are linked to a particular calender . A notification is linked to a particular event. So we dont need userId info in notification table.🤔

    • @deino4753
      @deino4753 Před 7 měsíci

      There might be specific situations where linking notification directly to user would perform faster queries if you are doing analytics. It all depends.

  • @pariveshplayson
    @pariveshplayson Před 2 lety +2

    Too much normalization, no api discussion, no scaling .. notification discussion.

  • @kaushalsad6953
    @kaushalsad6953 Před 2 lety

    Hey I'm preparing for APM roles, is there anyone who wants to join to take interview of eachother.

  • @RyanMcQuen
    @RyanMcQuen Před 2 lety +1

    A serial uuid?

  • @prashantsalgaocar
    @prashantsalgaocar Před měsícem

    too much information on schema.. would have been better if we start with the functional and non functional requirements and then adjust the schema.. this is wrong way to do the design as too much time spent on entities and relationships which is changing all the time we get a question.

  • @subbunat4273
    @subbunat4273 Před rokem +1

    such a poor video. Where is the system design. This video just talks about defining tables, which is like the bare minimum that anyone is tech, should be able to do.

  • @re_mango
    @re_mango Před 2 lety +3

    Did anyone else find it alarming that the candidate launched into data design before even saying a word about concrete use cases and how the data will be used? The approach in this interview is backwards, IMO

    • @Tintin92436
      @Tintin92436 Před 2 lety +9

      The question asked was to provide the database design.

  • @antons6335
    @antons6335 Před rokem +1

    Using join tables means many to many. But it seems wrong to me that event has many calendars. I assume that each calendar is for specific types of events like job, entertainments etc. So, events couldn't have mixed domains. Another thing is about teamUser table. The role should not belong to teamUser but to user him self. Generaly, this whole relationships model based on join tables only is confusing and wrong. No constrains mentioned. Where is cascade where is not? Very poor design.