iven the example of Google Docs, the obvious issues that come to mind are things like storage, security, scalability, availability, client interface design, browser compatibility, etc. How would you divide responsibility up between server and client? How would you handle backups? What happens when a server goes down? What would you do with "abandonded" documents (stuff that hasn't been accessed or modified in a long period of time)?
Again, the point is not to solve any of those issues, but to identify them, talk through them, brainstorm a bit about how to address them, etc.
- Gather requirements to answer the question (e.g., scope)
- Break the problem down into more manageable pieces; possibly identify interfaces or objects that might be needed, or break the logic up into front-end, back-end, DB, etc.
- Demonstrate familiarity with the structure and concepts behind that type of system, e.g., web apps in the case of Google Docs
- Show what you tend to focus on when presented with a design problem (Object design? SQL tables? Design patterns?)
- Show the boss a preview of what it will be like to develop a new system with you, where the boss walks in with a spec and says, "What would it take to build this?"
simplified UML would be a common part of the answer
you can move smoothly from a vague concept to a real architecture (with concrete - not vague - problems to be solved). And then communicate that architecture.
Read full article from How do I design an arbitrary system in an interview? - Programmers Stack Exchange
No comments:
Post a Comment