老腊肉级干货OOD面试备战攻略OOD通常是应届毕业面试题,对于NewGrads来说,会占整个面试评估的比例约为1

OOD通常是应届毕业面试题,对于NewGrads来说,会占整个面试评估的比例约为10-20%,可能是项目问题/算法问题的followup,最经常出现在加面环节。大公司对OOD的考核非常注重,特别是Amazon,Google,Microsoft和Facebook这样的大公司,像Infosys,Wipro,TCS和Cognizant这样的小型初创公司和服务公司,也非常注重这块的考核。建议newgrads要充分做好OOD的知识学习和积累,这是公司考察你硬实力相当重要的一部分!

1.如何快速了解面向对象设计的整个过程?

面向对象设计的过程就是抽象的过程,分以下三步来完成:

第一步:发现类。

需求中的名词有控制台、宠物、昵称和主人等。

第二步:发现类的属性。

可作为属性的的名词有健康值、亲密度和品种等。

第三步:发现类的方法。

需求中的动词有输入、选择和领养等。

2.详细掌握OOD的基本方法与步骤

1.类的认定

OOD中关于类的认定与OOA中关于对象的认定有着密切关系。但是OOD中对类的认定,不能像OOA中那样以准确反映问题空间为衡量准则,更多的要考虑通过对类以及类层次结构的认定,寻找解空间的基本结构,并为实现提供有效的支持。以下这些准则有助于更好的认定、定义类与方法:

(1)对于问题空间中自然出现的实体,用类进行模型化;(2)将方法设计成单用途的;(3)如果需要对已有方法进行扩展,就设计一个新的方法;(4)避免冗长的方法;(5)把那些为多个方法或某个子类所需要的数据,存贮存实例变量中;(6)为类库设计,不要只为你自己或者你目前的应用设计2.类的设计

在任何的面向对象应用中,类实例是系统的主要部分,而且如果采用纯面向对象的方法,那么整个系统就是由类实例组成的。因此,每个独立的类的设计对整个应用系统都有影响。在进行类的设计时,应考虑下面一些因素:

(1)类的公共接口的单独成员应该是类的操作符;(2)类A的实例不应该直接发送消息给类B的成分;(3)操作符是公共的当且仅当类实例的用户可用;(4)属于类的每个操作符要么访问要么修改类的某个数据;(5)类必须尽可能少地依赖其他类;(6)两个类之间的互相作用应该是显式的;(7)采用子类继承超类的公共接口,开发子类成员为超类的特化;(8)继承结构的根类应该是目标概念的抽象模型。3.类层次结构的组织

OOD中类层次结构的组织与OOA采用的策略是相似的,但在涉及递增开发时将有不同。支持重用是OOD的主要任务,继承机制支持两种层次的重用。在高层设计阶段,继承性可用作泛化特化关系的建模工具。使用继承机制促进开发出有意义的高级抽象,进而有助于重用。继承关系的重用性使得设计者能够在抽象中识别一般性,并从一般产生高级抽象。通过识别这种一般性,并把它从的较高的抽象中移出来,它就在当前或今后的设计中变成可重用。

在详细设计阶段,继承性支持已有类作为新定义类的重用基础,可以把已有的部分代码复制到新子类中并修改,以适应其新的目的。继承性在已有类和新的类之间建立了一种依赖关系,子类的新代码不引起旧代码失效,继承的代码被自动地包含在新定义中,并作为新类的定义被编译。对已有的类的任何修改都被归并到下次编译的新类中。

4.类模块之间的接口技术

类之间的接口是中的一个关键,接口的方法大致有以下几类:

(1)通过继承机制实现类之间的接口

第一种方法是可定义两层或多层:描述接口的通用类以及提供各种实现的子类(例如以列表作为通用类,以堆栈,队列等作为列表的实现),从而实现同一接口,不同实现的接口方法。第二种方法使用继承机制实现类模块接口对称目的:采用几种接口到基本模块中,通过继承的正交性与输出机制来实现此方法。通用类不作输出,而多个子类执行不同的输出。例如银行的账目作为通用类,而由不同的用户来实现对它的查询。

(2)使类实例具有人工智能的状态机和主动数据结构

在定义类实现抽象数据类型及数据抽象时,将这些抽象设置于“主动”方式。也就是说,类实例不仅作为信息的被动集合,而且可看作具有内部状态及局部存储的状态机。这为类之间接口提供了有用的方法。

5.对类库和应用构架的支持

OOD的最终目标是把方法和实例变量放在类库中抽象层次尽可能高的类中,一个方法在类库的类层次结构中的层次越高,能够共享这个方法的子类就越多,以这种方式进行设计,就使重用达到了最大的可能限度。由于类库的目标是支持重用,所以纳入类库的类层次结构必须仔细加以推敲。这里主要指从有利于重用的角度来设计。尽管这方面还没有形式化的方法论,因而也没有完全自动化的工具,但可从下面3个方面着手:

(1)改善标准的协议,在面对象系统中,消息传递是对象之间通信的唯一方式,从通信的角度来看,消息的内容便是对象之间的通信协议。应提高协议的标准化程度,如:为相应的方法设计一致的接口;限制消息中的参数个数;简化方法的功能等。

(2)提高类的抽象程度,对于一个健全的类库来说,它的层次结构在进行若干层次的子类设计后,应当是深而窄的。这是因为,如果类层次结构中的层次较多。而每一层上的类少,就表明对象的共有特性经过了比较细致的分层次抽象,使用类的特殊性逐渐增强,因而能够提供较多的、在特定应用范畴内可普遍适用的类。

(3)认定和培育构架,类库中的类就象一般建筑预制件,可以复杂到整个单元居室,也可以简单到梁柱,规格比较标准,容易被独立使用。但需要应用开发人员自己根据应用特征进行组装,因此类库本身并不是重用的基本单位。相对地,构架则是以构件之间有密切的联系为特征,面向特定的应用范畴,以整个构架而不是其中的单个构件来体现它的能量,因此构架本身是重用的基本单位,一旦与应用特征相符,就可以整体被重用。所以,构架是OOD是理想的目标。

3.OOD进阶中必学的六大原则

OOD基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。6大原则如下:

(1)Open-ClosePrinciple(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的ReusableSoftware既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。

(2)LiskovSubstituitionPrinciple(LSP),里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,否则不应当设计为其子类。”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类,如有这方面需要的设计就应当参考以下两种方法替换:

(4)InterfaceSegregationPrinciple(ISP),“将大的接口打散成多个小接口”,这样做的好处很明显,这个很容易理解,不做赘述。

(5)Composition/AggregationReusePrinciple(CARP),设计者首先应当考虑复合/聚合,而不是继承。这个就是所谓的“FavorCompositionoverInheritance”,在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。

(6)LawofDemeterorLeastKnowlegdePrinciple(LoDorLKP),迪米特法则或最少知识原则,这个原则首次在Demeter系统中得到正式运用,所以定义为迪米特法则。它讲的是“一个对象应当尽可能少的去了解其他对象”。也就是又一个关于如何松耦合(Loosely-Coupled)的法则。

4.常见面向对象设计的面试问题

问题1:用Java设计自动售货机

你需要设计一个遵循以下要求的自动售货机接受1,5,10,25,50分钱的硬币,即便士,镍,硬币和四分之一以及1和2美元的钞票允许用户选择产品,例如CANDY(10),SNACK(50),NUTS(90),可口可乐(25),百事可乐(35),苏打(45)允许用户通过取消请求获得退款返回所选产品和剩余更改(如果有)允许自动售货机供应商的重置操作

问题3:用您的编程语言设计Lift系统

问题4:用Java或C++设计和实现LRU缓存?

LRU缓存代表最近使用的Least。它应该从缓存中删除最近最少使用的项目,以便为新项目腾出空间。想想缓存的持久化策略。如何在崩溃后构建缓存等

THE END
1.www.stats.gov.cn/zsk/snapshoot?reference=d466cfa12a8d807d0知识库 知识分类:|知识来源: |发布日期:https://www.stats.gov.cn/zsk/snapshoot?reference=d466cfa12a8d807d0c267a76a75d1e42_2DF4A2519591B2823E278F8050D9622B
2.超高频的数据分析方法高频数据回归本文总结了SPSSAU如何帮助大学生在毕业论文中进行数据分析,涵盖从基本描述统计到医学领域的专业方法,包括频数分析、t检验、方差分析、聚类分析等,旨在全面支持研究过程。 摘要由CSDN通过智能技术生成 SPSSAU助力每个写论文的大学生,今天一文总结了毕业论文数据分析常用的12类方法,包括文科生需要的简单数据分析、理科生常用的https://blog.csdn.net/m0_37228052/article/details/136364543
3.数据分析的六大基本步骤通识教育数据分析的六大基本步骤 数据分析过程主要包括6个既相对独立又互有联系的阶段。它们是:明确分析目的和内容、数据收集、数据处理、数据分析、数据展现、报告撰 写等6步,且这六个步骤是相互衔接,不可缺少的。 还没有人评论,欢迎说说您的想法!http://css.e-courses.cn/article/3635
4.大数据分析的基本步骤相信大家对数据分析已经不陌生了,那数据分析的基本步骤是什么,大家都知道吗?一般来讲,典型的数据分析包含六个步骤,分别是明确思路、收集数据、处理数据、分析数据、展现数据以及撰写报告,下面中琛魔方具体讲一讲数据分析的六大步骤。 相信大家对数据分析已经不陌生了,那数据分析的基本步骤是什么,大家都知道吗?一般来讲https://www.qianjia.com/zhike/html/2020-06/3_24986.html
5.怎样对数据进行分析—数据分析的六大步骤时下的大数据时代与人工智能热潮,相信很多人都会对数据分析产生很多的兴趣,其实数据分析师是Datician的一种,指的是不同行业中,专门从事行业数据收集,整理,分析,并依据数据做出行业研究、评估和预测的专业人员。 很多人学习过数据分析的知识,但是当真正接触到项目的时候却不知道怎样去分析了,导致这样的原因主要是没有属https://www.jianshu.com/p/01fb6f955764
6.干货分享丨数据分析六大步骤简单来说分为以下六个步骤: 1?明确分析的目的,提出问题。只有弄清楚了分析的目的是什么,才能准确定位分析因子,提出有价值的问题,提供清晰的指引方向。 2?数据采集。收集原始数据,数据来源可能是丰富多样的,一般有数据库、互联网、市场调查等。具体办法可以通过加入“埋点”代码,或者使用第三方的数据统计工具。 https://m.douban.com/group/topic/271259657/
7.企业形象策划书精选6篇一、CIS导入的六大步骤 CIS导入分六步,包括调研、策划、设计、定位、宣传、保持。 1。调研的内容包括:企业的历史、企业的经营状况、企业的发展战略、企业法人代表及高层管理人员的经营风格、企业组织文化氛围、市场同业竞争形势、市场同类产品竞争形势、企业知名度、市场定位及产品力等问题调查、分析与评估。 https://www.ruiwen.com/qiyecehuashu/6170753.html
8.数据分析的六大步骤来看看这六大步骤吧!1 明确分析目标: 首先,要清楚为什么要进行数据分析,明确分析的目的和方向。2 数据获取: 通过各种途径收集所需数据,确保数据的准确性和完整性。3 数据清洗: 对收集的数据进行预处理,去除无效、重复或缺失的数据,确保分析质量。4 数据分析:https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_5280391824701360885
9.如何写人力资源数据分析报告?“用数据说话”是关键03 基本成本运营类数据指标 基于财务基础的人力资源数据分析,能够有效地为管理层提供巨大的数据支持 。比如,人力成本、人力成本费用率、薪酬福利率、劳动分配率、人均产值、人均资本投资回报率等等。 三、人力资源数据分析报告如何写,5个步骤来帮你 第一步 从需求者的角度,明确报告定位,拆解数据指标 https://maimai.cn/article/detail?fid=1437826039&efid=3k2idydw4cRiTd-XHn5s9w
10.超市问卷调查报告(精选9篇)5.具体步骤 (1)设计调查大纲,制作调查计划:; (2)编制清清校园超市商品消费调查问卷; (3)确定采取随机抽样调查的方法; (4)随机抽取学生消费者48人; (5)问卷回收,分不同组别回收,统计回收率,并制作数据统计图; (6)分析问卷,并得出结果; (7)撰写调查报告,并提出正确的对策与建议。 https://www.yjbys.com/diaochabaogao/3456508.html
11.关于社会调查报告(通用15篇)对我们收回的有效的问卷都记录上一个唯一的,有顺序的识别号码,作为原始文件。针对每份问卷相关问题(如有几个问题都属于被调查者的基本信息类)的数据处理采用定量分析方法中的相关分析方法。对于不同类问题的数据进行聚类分析的方法对原始文件进行加工汇总,使之系统化,条理化。 https://www.unjs.com/fanwenwang/dcbg/20230101161209_6188922.html
12.华北电力大学校工会三、实施步骤 (一)完善困难职工档案管理 按照项目齐全、分类精细、数据分析便捷的要求,建立北京市工会困难职工帮扶工作管理系统软件,根据社会保障相关待遇标准调整情况,组织摸底调查,及时更新,完善困难职工档案数据库,实现动态管理。 (二)做好帮扶救助工作的组织实施 https://gh.ncepu.edu.cn/wjfg/zcfg/eb4dc43880c2423385af5cd177ae3623.htm
13.数学课题研究开题报告(通用12篇)对实验班学生进行摸底调查:通过问卷、测试等各种调查、做好记录,加强理论学习,认真收集、整理、分析各实验阶段的实验数据,并定期进行统计分析,注重实验各阶段的过程调控,按时撰写实验阶段性总结。培养一批优秀实验教师,设计并展示一批优秀作业,探索数学学习新模式。力争探索出一条有利于儿童发展,全面提高学生素质的途径,使https://www.oh100.com/shuxue/1249607.html?hrtk=123456789
14.干货!非结构化数据分析的10个步骤腾讯云开发者社区如今,数据分析正在成为企业发展过程中的重要组成部分。企业必须对结构化和非结构化数据有所了解,才能更好地为业务发展做出正确决策。本文将详细介绍企业分析非结构化数据的10个步骤: 1.确定一个数据源 了解有利于小型企业的数据来源非常重要。企业可以使用一个或多个数据源来收集与其业务相关的信息。而从随机数据源收集https://cloud.tencent.com/developer/article/1008189
15.荐膳食调查报告15篇数据分析及结果 样本中男性占54%,女性占46%,平均年龄为21.5岁,身高在160-180cm之间,体重在45-75kg之间。与此同时,数据显示出大多数大学生注重了主食摄入,以米饭和面条为主,其次为水果(平均每日摄入300g左右),蔬菜(平均每日摄入250g左右),肉类(平均每日摄入100g左右)和奶制品(平均每日摄入150g左右)等。 https://www.qunzou.com/diaochabaogao/1866398.html