最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
最新整理电子书
-
实体在系统中有唯一的标识符,使用该标识符可以查找和检索该实体。 这并不意味着,该标识符始终直接向用户公开。 它可能是数据库中的 GUID 或主键。
-
一个标识可以跨多个限界上下文,并可能保留到应用程序生命期结束之后。 例如,银行帐号或政府颁发的身份证号不会与特定应用程序的生存期相关联。
-
实体的属性可随时变化。 例如,某人的姓名或地址可能有变化,但他(她)仍是同一个人。
-
一个实体可以包含对其他实体的引用。
值对象。 值对象没有标识。 它只由其属性值定义。 值对象也是不可变的。 若要更新值对象,始终需要创建一个新实例来替换旧实例。 值对象可以包含用于封装领域逻辑的方法,但这些方法不应该给对象的状态产生负面影响。 值对象的典型示例包括颜色、日期时间和货币值。
聚合。 聚合定义一个或多个实体的一致性边界。 一个聚合只包含一个根实体。 可以使用根实体的标识符执行查找。 从根开始的引用可以找到聚合中的其他任何实体。
聚合的作用是为事务一致性建模。 现实世界中的事物具有复杂的关系。 客户创建订单,订单包含产品,产品有供应商,等等。 如果应用程序修改了多个相关对象,它如何保证一致性?
传统应用程序通常使用数据库事务来实施一致性。 但是,在分布式应用程序中,这种做法通常不可行。 单个业务事务可能跨越多个数据存储、长时间运行,或者涉及第三方服务。 最终由应用程序而不是数据层来实施域所需的一致性。 这就是要为聚合建模的目的。
ℹ️ 聚合可以包含单个实体且不包含子实体。 聚合的定义由事务边界确定。
领域服务和应用服务。 在 DDD 术语中,服务是实现某种逻辑且不保存任何状态的对象。 Evans 区分 域服务(用于封装域逻辑)和 应用程序服务(提供技术功能,如用户身份验证或发送短信)。 领域服务通常用于对跨多个实体的行为建模。
ℹ️ 软件开发中广泛使用了“服务”一词。 此处的定义不直接与微服务相关。
领域事件。 发生某种情况时,可以使用领域事件来通知系统的其他部件。 顾名思义,领域