如何评测软件工程知识技能水平

第一部分:

如何评测软件工程知识技能水平:

我认为评价一个合格的软件工程师,应该从以下几个方面来评价:

1、基本功

程序员是一个终身学习的职业,优秀的工程师,需要有强大的兴趣驱动力,有充足的勇气跳出自己的“舒适圈”,积极主动了解技术最前沿。而基本功恰恰是最主要的,只有有了足够好的基本功,才有能力支撑自己的兴趣和爱好。

2、基本的全栈能力

对全栈工程师,每个人都有不一样的定义,不一样的衡量标准。要求高的,认为全栈=全能,需求分析、产品设计、UI设计、移动开发、前端开发、后端开发、运维等,全部都熟悉。要求低的,认为只要既懂前端开发也会后端开发即可,比如,熟悉H5前端开发和Node.js后端开发,就可以称得上全栈工程师了。在我看来,其实都没有错,工程师也有分初级、高级、资深、专家,全栈工程师也一样有等级划分。一个优秀的工程师在能够数值自己的领域外也能较好的掌握其他岗位的知识。
 
3.清晰的开发思路
 
3.1、确定需求和构思整个网站系统(初步设想需要实现什么)
3.2、根据需求和需求文档制作UI图
3.3、根据UI图制作前端静态页面
3.4 根据前端静态页面(主要)和需求文档(次要)架构整个
系统(设计网站大的框架和制表)
3.5、后台程序员根据框架、静态页、数据表、需求文档等实现功能
在上面的基础上能够较好地领导整个项目团队,能够独立开发带领团队较好的完成项目。
 

4、团队管理

站在全局视角思考整个项目,从立项、需求、开发、测试、交付、运维、项目生产工具,分析哪个环节做得不好,哪个环节改善之后效果可以被看见,主动去做这些事情,主动成为衔接不同环节、不同人员、不同部门的桥梁;

比如观察项目经理、研发经理,看他们有哪些项目管理相关的事情是不愿意做的,比如组织会议、跟踪计划、分派任务、推动多干系人协作等,主动找他们表达你可以分担这部分工作的意愿,获得打杂的机会。

 

 

第二部分:

测试卷:

 

1.选择题

1.1   程序的三种基本控制结构的共同特点是( D)。

A、不能嵌套使用B、只能用来写简单的程序

C、已经用硬件实现D、只有一个入口和一个出口

 

1.2   与设计测试数据无关的文档是(D )。

A、需求说明书B、设计说明书C、源程序D、项目开发设计

 

1.3   总体设计的结果是提供一份(A)。

A、模块说明书B、框图C、程序D、数据结构

 

1.4  详细设计的基本任务是确定每个模块的( D)设计

A.功能B.调用关系C.输入输出数据D.算法

 

1.5 . 程序的三种基本控制结构是(    B  )。

A. 过程、子程序和分程序       B. 顺序、选择和重复

C. 递归、迭代和回溯              D. 调用、返回和转移

 

1.6   面向对象的分析方法主要是建立三类模型,即(   D   )。
              A) 系统模型、ER模型、应用模型
              B) 对象模型、动态模型、应用模型
              C) E-R模型、对象模型、功能模型
              D) 对象模型、动态模型、功能模型

 

1.7  若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是(    c  )

A.条件覆盖法   B.等价分类法    C.边界值分析法    D.错误推测法

 

1.8  设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:(  A    )

 A.模块化的根据  B.逐步求精的根据  C.抽象的根据   D.信息隐藏和局部化的根据

 

2. 判断:

2.1.软件的开发与运行经常受到硬件的限制和制约。(√)

2.2.模块内的高内聚往往意味着模块间的松耦合。(√ )

2.3.Jackson图只能表达程序结构,不能表达数据结构。(X)

2.4.软件的质量好坏主要由验收人员负责,其他开发人员不必关心。(X )

2.5.判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。(√)

2.6  应该尽量使用机器语言编写代码,提高程序运行效率,而减少高级语言的使用。(X)

2.7.UML只能应用于软件系统模型的建立。(X)

2.8.容错就是每个程序采用两种不同的算法编写。(X)

2.9.软件测试的目的是为了无一遗漏的找出所有的错误。(X)

 

 

3.简答题:

3.1.分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加

3.2.说明结构化程序设计的主要思想是什么?
答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单入口、单出口来构造程序

3.3 说明软件测试和调试的目的有何区别?
答:测试的目的是判断和发现软件是否有错误

调试的目的是定位软件错误并纠正错误。

 

3.4  什么是软件维护?软件维护可以分为哪几类?

答:软件维护是指在软件系统已经交付使用之后,软件使用人员为了适应新的要求、满足新的需要或为了改正软件中存在的错误而对软件系统进行修改的过程。可以分为纠错性维护、完善性维护、适应性维护和预见性维护。

 

3.5 什么是白盒测试?什么是黑盒测试?

答:白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。

 

3.6 简述软件质量的定义及在软件开发过程中管理软件质量的办法。

答:软件质量指的是软件产品满足规定的和隐藏的与需求能力有关的全部特征和特性。管理软件质量的办法:(1)每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务;(2)每个阶段结束前都要对所完成的文档、程序进行评审,以便尽早发现问题,改正错误。

posted @ 2020-01-05 00:17  wanglan1996  阅读(337)  评论(0编辑  收藏  举报