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

一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面

1、编程语言能力

对于软件工程师来说,首先应该掌握至少一门计算机编程语言,并且能够深入理解OOP,OOA,OOD等基本的编程思想,要熟练地运用操作工具集进行编译和调试。

2、编码能力

这个编码能力可不仅仅是读懂别人代码,从网上拼凑代码的能力,而是独立自主地完成一个单独模块的开发。包括在不同层级上分解任务,以决定任务的执行次序、执行条件和循环执行。

3、学习能力

这个学习能力是不断学习新技术的能力,要知道,现在市场上的技术进步太快了,只有不断地学习,才不会被淘汰。只有具备良好的学习能力,才能不断地更新自身的知识,和技术的进步保持同步。

4、设计能力

当然不能以为软件工程师不需要设计能力,代码是否整洁美观,是否通俗易懂,都是非常重要的。要知道,我们花费在代码读取的时间要远远大于我们实际书写代码的时间。同样的,怎么把接口设计得通俗易懂,复用性强,也是非常重要的。

同样的,我们也应该清楚,一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。

5、团队协作能力

独木不成林, 一个大型的软件不可能是由一个人完成的,在整个软件开发的过程中,我们通常需要协调好产品、测试、前端、后端的各项工作,这对每一个软件工程师来说都是非常重要的。要知道,如果沟通上出了问题可能就会导致1+1 < 2 的结果,单个软件工程师再怎么优秀,如果没有良好的团队协作能力,也是一盘散沙。

 

试题:

一、单选题:

1、下列不属于软件模型的是(A)

A、概念模型  B、设计模型 C、实现模型 D、部署模型

2、在结构化方法中,可作为总体设计的工具的是(D)

A、盒图  B、数据流图 C、程序流程图 D、模块结构图

3、通过保证每个模块只完成一个特定的功能,这样可以大大减少模块间的(B)

A、内容耦合  B、控制耦合  C、公共耦合  D、数据耦合

4、UML提供用来支持系统交互建模的图形化工具是(D)

A、类图  B、用况图  C、状态图  D、顺序图

5、在软件生存周期模型中,不适应变化需求的软件开发模型是(D)

A、演化模型  B、螺旋模型  C、增量模型  D、瀑布模型

6、对象实现了数据和操作的结合,使数据和操作(  C  )于对象的统一体中。   

A.结合  B.隐藏  C.封装  D.抽象 

 

二、多选题:

1、软件⼯工程包括下列哪些领域(A、B、C、D)

A、软件需求分析  B、软件设计  C、软件构建  D、软件测试和软件维护

2、检查单元测试应该满足的条件是(A、B、C、D)

A、单元测试应该在最基本的功能/参数上验证程序 的正确性。

B、单元测试过后,机器状态保持不变。

C、单元测试应该产⽣可重复、⼀致的结果。

D、单元测试应该覆盖所有代码路径。

3、下面哪些是符合代码规范的做法(A、C、D)

A、命名文件名、接口和变量的时候力求做到简单明晰,命名名副其实

B、尽可能多的使用注释

C、项目的测试代码和程序单独存放

D、函数尽可能的短小,一个函数实现一个功能,只做一件事

 

三、简答题:

1、我们常说,软件开发是没有银弹的,这个银弹是什么,为什么这么说?

在民俗传说里,所有能让我们充满梦靥的怪物之中,没有比狼人更可怕的了,因为它们会突然地从一般人变身为恐怖的怪兽,因此人们尝试着查找能够奇迹似地将狼人一枪毙命的银弹。
我们熟悉的软件项目也有类似的特质(以一个不懂技术的管理者角度来看),平常看似单纯而率直,但很可能一转眼就变成一只时程延误、预算超支、产品充满瑕疵的怪兽,所以,我们听到了绝望的呼唤,渴望有一种银弹,能够有效降低软件开发的成本,就跟电脑硬件成本能快速下降一样。
但是,我们预见,从当前开始的十年之内,将不会看到任何银弹,无论是在技术上或管理上,都不会有任何单一的重大突破,能够保证在生产力、可靠度或简洁性上获得改善,甚至,连一个数量级的改善都不会有。
 
2、请举例例说明你碰到的 bug,以及解决方案(无固定答案)。
碰到过的bug:在微信小程序中,前端调用后端的接口进行图片的上传,上传速度过慢。
解决方案:通过后来的测试,发现微信小程序提供的uploadfile接口需要经过小程序的后台,我们的代码首先在前端调用uploadfile将图片上传到小程序的后台,再在小程序的后台调用我们自己的接口,最后在自己程序后台的接口中将图片上传到阿里云。这样一来,我们就相当于要走过两个后台。经过这样的测试,我们最终决定,在小程序的前端使用js直接进行文件上传到阿里云,不使用小程序的uploadfile接口,而后端的接口只存储上传完成后数据库需要存储的阿里云的路径。
 
3、 任选一种设计模式,并设计对应的代码示例
以装饰类为例
如何评测软件工程知识技能水平?_第1张图片
如何评测软件工程知识技能水平?_第2张图片
如何评测软件工程知识技能水平?_第3张图片 如何评测软件工程知识技能水平?_第4张图片 如何评测软件工程知识技能水平?_第5张图片
4、如何画出分层数据流图

第一步,画子系统的输入输出

把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。

第二步,画子系统的内部

把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程就是对加工的分解。

 
四、名词解释题
1、观察者模式
2、多态
3、功能内聚
4、松散耦合
5、抽象
6、设计模式

 

你可能感兴趣的:(如何评测软件工程知识技能水平?)