我收集了许多面试问题,例如“描述如何设计相册应用程序”,“描述如何设计此特定网站的特定功能”(例如在Facebook上喜欢,在亚马逊上推荐,购物车,游戏黑色杰克)。那么,如果有成千上万的东西呢?你会改变什么?
看起来这是在期待数据库架构还是一堆类定义(或两者都在?)。我在学校里已经学习过数据库,但是我以前从未真正设计过一个应用程序,并且很难知道从哪里开始,我提出的设计是否“好”以及我可以进行哪些更改以使其可扩展。
设计这些系统时是否有一般的方法或思考过程?我应该设法避免的一般问题/设计中出现的很多问题?有人可以指导我讲解其中的一个(或最好是全部,同时比较每个人的需求)并解释一下:
1)您如何提出需要哪些实体?2)您如何决定一切将拥有什么关系?3)您如何将性能优化纳入设计?4)我使用类或数据库吗?会有所不同吗(例如,我是否有一个不能真正转换为数据库表的类?)
我问的主要原因是因为我正在经历“破解编码面试”,我的答案与作者的答案完全不同-我对重要的类有不同的看法。
我的尝试: 使用照片共享应用程序,我将获得以下课程/表格:可以肯定的是照片和用户。
然后,我认为如果我们尝试创建模式,那么如果我们假设照片中的每个人都链接到照片,那么将存在一个链接照片和用户的表格(此表格是否必要?如果不是,是否仍然是惯例?是否有用于多对多关系的单独表格?)。
但是,如果我们尝试采用一种面向对象的方法,也许我们会拥有一个名为Album的类,它可以完成所有工作并具有来自其他两个表/类的所有信息。这是我在书中注意到的一件事-有一堆类,然后一个类基本上具有所有信息并连接了其他类-这是常见的吗?例如,在我上面的示例中,这似乎适用吗?
我只是希望遵循一些通用规则/准则,因为现在我还不知道如何判断大型系统的良好架构是什么样的。