31 Replies to “Example coding interview: Designing Google Docs”

  1. How can a diff between version5 and version6 which is based on version5 can be applied to version6' to get a consistent global state. To apply a diff on version6' that should be based on version6'

  2. The solution proposed here for conflict resolution and diffs is really basic and something that would never even come close to actually working in a production environment. If you want to see how Google Docs actually handles diffs, watch this: https://www.youtube.com/watch?v=S2Hp_1jqpY8
    It is very complicated. Even the guy giving the session who seems very smart has to constantly refer to his notes in order to get everything right. I am not a huge fan of trying to dive deep into how the diff system works in a system design interview like this unless you are interviewing someone who is very senior for a principal architect type of position. No one would be able to actually come up with a solution that solves all of the problems in under an hour. It probably took multiple people days or weeks of brainstorming to come up with the correct solution for diffs and conflict resolution that works in real time.

  3. Actually voice is not that clear and video clarity is also poor. I would request when these kind of videos are publishing please make sure voice and video quality is good.

  4. I am not the one who down voted but I am not very pleased with the approach, his solution as well as dodging of how diff tool works question. I think he tried to draw a parallels between git implementation with Google docs features and tried to match em up to a point when an interviewer ask him it looks similar to git design.

    In my approach, probably I will go with distributed Lamport type algorithm. If we were to think in terms of thin client, then diff has to happen always @ server end, resolving multiple issue which interviewer were probing. However, if we were to do the diff @ client end, we need to dive fully distributed approach for maintaining proper version. Per unit time server shared its own copy / version of doc and client applied diff on it, if diff is generated, client updates the new version number and send a full copy to server, once server ack, that new version is to be shared back to all clients again.

    I think this interview was more of checking the confidence and communication rather than technical details, because IMO, very few technical tips was shared and more I believe his approach can be questionable. Part like diff tool algo / how to resolve conflicts are extremely vaguely touched and he tried to dodge those question completely.

  5. Question was quite good and the process went well but the interviewee was not very clear in his voice at some point of time and I couldn't understand the question when the interviewer asked about the change shown will be wrong if the candidate do the diff in a tree and apply it.

  6. Very nice session. I was expecting little more like:
    1. what data store or database we should go for sql or nosql?
    2. what is level of priority for latency, consistency and availability? and how can we achieve that?
    3. we can share doc with user in read only mode as well. where to handle that (doc permission).

    if possible please answer me in comment.

  7. Hi, Thanks for posting this awesome video. Have read so many blogs about how to prepare "The Design Interview" questions but such a real time video actually helps a lot. My question is, the candidate did not answer/discussed or spent time on what would be the memory requirement. Should we always give atleast 5 mints for memory utilization/requirement or we can skip that as per the interviewer's interests.

    All of the blogs I have read to prepare myself for these interview rounds mention the importance of why you should spend time on the memory requirements as your designing the "whole" system, I would really like to know your thoughts on this.

    Also keep posting such awesome videos !

  8. We do have lots of websites for alg questions, but what it's difficult to find is design questions, you both have nailed. The discussion type interview helps understanding how real-time interviews happens. My vote for you to bring series of interview sessions, it will be great if you can cover distributed systems design (ex, could be streaming apps, uber, drop box types etc) or even common application design questions like elevator, parking lots, call center, online music systems etc..

  9. This was great, Petros' depth of knowledge is impressive. I would like to see more video's discussing software engineering. Perhaps you could do some sort of tutorial series doing an application like this showing the full stack?

Comments are closed.