架构师备考的一些思考(三)
前言
这个考题的大部分内容,我感觉都是我们会的,但所有的考题都穿上了马甲,穿上马甲我们就不好认了,而且如果是一个两个人穿马甲,还好推断,如果1000人穿马甲,你识别的概率就会急速下降。
有些题的内容则是即无法识别,也无法背,因为它也没有个前因后果,完全是出题人拍脑袋想的,所以,这种题我们是无法通过知识来判断的,因为用知识来判断,你会发现,四个选项全是正确的,这时我们可以采用逐字读题法,就是一个字一个字的读,然后把答案分别放里,看看哪个读起来更顺。
- 例如这题:
信息系统规划方法中,关键成功因素法通过对关键成功因素的识别,找出实现目标所需要的关键信息集合,从而确定系统开发的()。关键成功因素来源于组织的目标,通过组织的目标分解和关键成功因素识别、( )识别,一直到产生数据字典。
A.系统边界 B. 功能指标 C.优先次序 D.性能指标
逐字阅读,会发现C和D适合俩个空。
正题
嵌入式系统
就是安卓系统,安装系统是计算模式。
- 混成系统
嵌入式系统子类
就是安卓系统加入了传感器的SDK,就是汽车上的安卓系统
控制模式
- 计算模式控制
就是cpu分配模式,合理利用资源,缺点一瘫痪全瘫痪。 - 同步异步控制
就是同步异步,缺点就是会有延迟,优点是一个延迟不影响别人。市面的大系统没有这模式的,这模式一般是我们开发的系统,比如交易,流水线等等。
tcp端口号作用
这个比较冷门,是对应用层进程寻址用的,我们写tcp代码时是要写端口号的,但那个是属于tcp协议部分,tcp协议用那个端口号建立连接,如果单问端口号的作用,那它就是应用层进程寻址用的。
DHCP
DHCP(Dynamic Host Configuration Protocol)就是自动给电脑分配IP的一个协议,电脑插上网线就会发这个协议,路由器收到后就会回一个消息,给电脑一个ip,然后我们使用ipconfig命令就能看到IP地址了。
概要设计和详细设计
- 概要设计:讲软件需求转化为数据结构和软件系统结构。
- 详细设计:过程设计,通过对结构细化,得到软件详细数据结构和算法。
注意1:这里的数据结构不是我们认知中的数据结构,他是指流程图,我们在写概要设计时,即使再省略,也还是要写流程图的。
注意2:详细设计的算法,就是我们写的伪代码,加减乘除,连表查询在这里都是算法。
软件结构化设计
就是网站开发,好听点就是叫网站应用开发,或者高级点ERP,MIS,CRM。
步骤是:系结构设计、接口设计、数据设计和过程设计。
这个其实是特指java+vue的前后台分离开发中的java后台接口项目的设计。具体对应真实操作如下:
系结构设计:框架开发。
接口设计:controller设计。
数据设计:数据库设计。
过程设计:代码开发。
软件逆向工程
软件逆向工程导出信息的四个抽象层次:
A.实现级:代码
B.结构级:函数
C.功能级:类
D.领域级:package包/命名空间
测试方法
强度测试:是在系统资源特别低的情况下考查软件系统极限运行情况。
负载测试:用于测试超负荷环境中程序是否能够承担。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试:通过确定系统的瓶颈或不能接收的性能点,来获得系统能够提供的最大服务级别的测试。负载测试和压力测试可以结合进行,统称为负载压力测试。
容量测试:并发测试也称为容量测试,主要用于测试系统可同时处理的在线最大用户数量。
- 强度测试:测试性能,测系统卡不卡,什么时候卡。
- 负载测试:测可靠性,测系统挂不挂,什么情况挂,理解为用人的数量测。
- 压力测试:测可靠性,测系统挂不挂,什么情况挂,理解为用接口调用次数测。
- 容量测试:测并发数。
设计方法
ABSD/ABSDM——基于体系结构的软件设计,这个应该是必考的,需要背。
其步骤如下:
【需求=>设计=>文档化=>复审=>实现=>演化】
这个设计模式还是挺好的,可以学习一下,我以前也写过关于他的文章。
ABSD/ABSDM
软件方法学是
软件方法学是以软件开发方法为研究对象的学科。
自定向下开发方法:是先对最高层次中的问题.进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。
自底向上开发方法:是根据系统功能要求,从具体的器件、逻辑部件或者相似系统开始,通过对其进行相互连接、修改和扩大,构成所要求的系统。
形式化开发方法:是建立在严格数学基础上的软件开发方法。
非形式化方法(代表-头脑风暴):不把严格性作为其主要着眼点,通常以各种开发模型的形式得以体现。从适应范围来看,可分为整体性方法与局部性方法。适用于软件开发全过程的方法称为整体性方法;适用于开发过程某个具体阶段的软件方法称为局部性方法。
必死题
关于模块化设计,( )是错误的。
A.模块是指执行某一特定任务的数据结构和程序代码
B.模块的接口和功能定义属于其模块自身的内部特性
C.每个模块完成相对独立的特定子功能,与其他模块之间的关系最简单
D.模块设计的重要原则是高内聚、低耦合
首先要理解,这里的模块是[专指]java的项目下的子项目,就是IDEA里的new->module。
这道题答案是B,但4个答案都是正确的,而且是那种完全正确的那种。
解析:
模块的接口是模块与其他模块进行交互的部分,所以接口的定义不仅仅属于其模块自身的内部特性,与外部模块也具有相关性。B 选项的描述是错误的。
这是纯纯的文字游戏,按这种解析方式,我也可以把上面4个答案都解析成错的。
那也就是说,今年再出这题,换一个解析方式,答案就可以是A,C,D。
比如模块设计的重要原则是不仅仅是高内聚、低耦合,还有职责分离原则。所以D是错的,这也能解释的过去。
所以这样的题,就只能放弃了,必死题。
构件组装是指将库中的构件经适当修改后相互连接构成新的目标软件。()不属于构件组装技术。
A.基于功能的构件组装技术
B. 基于数据的构件组装技术
C.基于实现的构件组装技术
D.面向对象的构件组装技术
解析:
构件组装技术大致可分为基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。
答案:C。
构件组装有这个概念,但基于xxx的构件组装技术,这是纯纯的他们凭空想象出来的概念,这种题一般都只考一次,因为明年他们会再想一个新的概念考你,背也没用,首先不会再考,其次,现实中没这定义。
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!