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

软件工程是一门一级学科,在其下面又有着许多方向,例如:Web开发方向、大数据方向、云计算方向、网络安全等方向。班上的同学也都是各个方向的学生。所以如果在评测软件工程知识技能太过于偏向某个方向可能会造成成绩的不公平。所以对于评测不同方向的学生的软件工程知识技能水平时,一定需要保证不会出现偏袒。

由于不能太过于偏向某门技术方向,所以本次评测将注重于测试学生的软件工程基础水平。我们将从软件工程、代码分析能力、场景分析能力、英文文档阅读能力等几方面对学生经行考查。

软件工程知识考察

这方面主要是考察学生对软件工程开发流程的掌握。作为一个研究生,我们不仅仅需要掌握代码编写能力,还需要掌握团队管理能力。因此就需要学习了解整个软件工程的开发流程控制,甚至是整个软件公司运营管理。这对我们学生以后升为管理层或自主创业有一定的帮助。

多选题:
常用的开发模型有()
A:瀑布模型 B:原型模型 C:喷泉模型 D:流水模型

public class A {
    private B b;
}

上面代码中A和B的关系可以用什么表示()
A:泛化 B:实现 C:组合 D:聚合 E:关联 F:依赖

public class A {
    public void test() {
        B b = new B();
        ···
    }
}

上面代码中A和B的关系可以用什么表示()
A:泛化 B:实现 C:组合 D:聚合 E:关联 F:依赖

在软件生命周期中,能准确确定软件系统的体系结构的功能阶段是          。  
A、概要设计   B、详细设计     C、需求分析    D、可行性分析

下面不属于软件工程的基本原则的是__    __。   
A、模块化  B、抽象      C、局部化     D、自顶向上
简答题:
软件工程中有哪些文档并简述这些文档的作用。

英文文档阅读能力

由于软件工程不是我们中国一家独大,许多优秀的开源框架主要还是外国的。所以我们要想成为一名优秀的软件开发者,一定要学会阅读英文文档。一般外国英文文档都有些啰嗦,常常是一大堆文字。所以阅读英文文档不仅仅考察我们的英语能力,还考察我们的文字总结能力。

文档翻译

The List interface provides four methods for positional (indexed) access to list elements. Lists (like Java arrays) are zero based. Note that these operations may execute in time proportional to the index value for some implementations (the LinkedList class, for example). Thus, iterating over the elements in a list is typically preferable to indexing through it if the caller does not know the implementation.

请用中文概括上述英文:

代码分析能力

为了提升学生对技术的积累能力,要锻炼学生的源码阅读能力。我们不仅仅要会用别人的api,还要知其原理。以后成为Leader后,更需要经常审查刚入职员工的代码。所以代码阅读分析能力是一名软件工程师在走向优秀的道路上必不可少的一门技能。而通过画流程图,能够让代码一目了然。所以本部分将以画流程图的形式让学生分析源码,最后说出自己对这段代码的理解。

    private static int xxxFunction(char[] a, int fromIndex, int toIndex,
                                     char key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            char midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }

请画出上面代码的流程图,并根据流程图说出上面代码的作用

计算机基础

作为一个软件工程师,虽然并不需要我们来实现计算机基础的那些代码,但是我们要灵活的理解它们做了什么?而我们看几下博客就真的理解了一个底层原理吗?如果要我们用自己的理解还能描述的很流畅吗?所以本章首先是要考察学生对计算机基础知识的理解,其次如果学生能够描述的生动有趣,可以加分。

请用你的话描述为什么TCP是三次握手四次挥手呢?每一次都起着什么作用?如果能够描述的有趣味会加分噢!

未完待续

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