软件设计师(中级)详细复习过程总结

简介: 软件设计师(中级)详细复习过程总结

前言

上周末刚刚参加完软件设计师中级考试,趁热打铁写一篇详细的总结作为记录,同时和小伙伴分享一下整个复习过程,希望对大家有帮助。

背景

1.1 软考是什么

软件设计师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试。

考试分为两部分:

1、计算机与软件工程知识,考试时间为150分钟,笔试,选择题;

2、软件设计,考试时间为150分钟,笔试,问答题。

1.2 软考的含金量

考试合格者将颁发由中华人民共和国人力资源和社会保障部、工业和信息化部用印的计算机技术与软件专业技术资格(水平)证书。证书还中日韩三国互认,人社部和工信部双认证,另外还有一些是软考证书通用的作用,比如积分落户,以考代评,抵扣个税等,大家可以自己查一下,总之,软考证书含金量较高,有一定权威性。

1.3 软考书籍

官方教材《软件设计师教程》(第5版),清华大学出版社

软考前相关学习

2.1专业知识学习

软考主要涉及的科目:


  1. 软件工程基础:包括软件工程概述、软件开发模型、软件需求工程、软件设计与实现、软件测试、软件维护等方面的知识。

  2. 数据库技术:包括数据库概述、数据库设计、关系数据库理论、SQL语言、数据库管理、数据库应用等方面的知识。

  3. 计算机网络技术:包括计算机网络概述、网络协议、网络安全、网络管理等方面的知识。

  4. 程序设计语言:包括C、C++、Java、Python等常用的程序设计语言。

  5. 操作系统:包括操作系统概述、进程管理、内存管理、文件系统、设备管理等方面的知识。

  6. 软件测试:包括测试基础、测试方法、测试工具、测试管理等方面的知识。

  7. 软件项目管理:包括项目管理概述、项目计划、项目实施、项目控制等方面的知识。

  8. 软件质量保证:包括质量保证概述、质量管理、质量评估、质量改进等方面的知识。

  9. 软件需求工程:包括需求获取、需求分析、需求规格说明、需求验证等方面的知识。

  10. 软件设计与架构:包括软件设计原则、软件设计模式、软件架构、软件重构等方面的知识。

下面附百度文库提供的考试大纲

链接: 软件工程师考试大纲

计算机专业的同学应该对以上科目和内容都不陌生,如果是非计算机专业的同学想学习以上的内容,最好可以系统的学习一下,毕竟,考证的目的除了证书本身,更多的是学习一些相关知识,建议可以报个计算机专业的自考,除了考试报名费没有其他费用,闲来无事的时候学一学,最后还能拿个国家认可的毕业证书和学位证书。当然,除了以上两点就学不会软考了吗,当然不是,继续往下看文章吧,看完保证你有收获。

2.2 J2SE视频

除了书本上的知识,还要有一定的编程基础,这里以java为例,可以看下马士兵的j2se视频,也可以找一些比较权威的java基础视频,切记一定要动手敲代码,眼过千遍不如手过一遍。

2.3 设计模式

上下午题中都会涉及到设计模式的题目,这里推荐清华大学出版社出版的图书《大话设计模式》,这本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GOF(设计模式的经典名著——Design Patterns:Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的基础》的四位作者EIich Gamma、Richard Helm、Ralph Johnson,以及John Vlissides,这四人常被称为Gang of Four,即四人组,简称GoF)总结的23个设计模式。

22197bf0848b4b7591e58af115c87af4.png

2.4 软件设计师视频

直接上链接吧,视频针对考点进行讲解,虽然语速很慢,但是讲的还是很不错的。

链接: 软件设计师视频

考前两周复习冲刺

3.1 算法和排序

关于算法和排序我会专门写几篇博客,有兴趣的同学敬请期待。

下面是回溯法-N皇后问题:

链接: 回溯法-N皇后问题

直接插入排序代码

public class InsertSort {
    //核心代码---开始
    public static void sort(Comparable[] arr){
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            // 寻找元素 arr[i] 合适的插入位置
            for( int j = i ; j > 0 ; j -- )
                if( arr[j].compareTo( arr[j-1] ) < 0 )
                    swap( arr, j , j-1 );
                else
                    break;
        }
    }
    //核心代码---结束
    private static void swap(Object[] arr, int i, int j) {
        Object t = arr[i];
        arr[i] = arr[j];
        arr[j] = t;
    }
    public static void main(String[] args) {
        Integer[] arr = {1,9,6,5,7,6,8,2,4};
        sort(arr);
        for( int i = 0 ; i < arr.length ; i ++ ){
            System.out.print(arr[i]);
            System.out.print(' ');
        }
    }
}
public static void sort(int[] a) {
        for (int i = 1; i < a.length; i++) { //a[0]不用排序
            int temp = a[i]; //记录待排序元素的值
            for (int j = i - 1; j >=0; j--) {
                if (temp < a[j]) {
                    a[j + 1] = a[j];
                } else {
                    break;
                }
                a[j] = temp;
            }
            System.out.println("第" + i + "轮排序的结果为" + Arrays.toString(a));
        }
    }

3.2 设计模式

23个设计模式,每个都画了类图,之前有敲过代码,所以这次没有敲,但是经过这次学习之后,有了完全不一样的感受,打算后面还要再敲一遍代码.同时按照分类每组都进行了二维表的对比。

c6c77b8713db4a1698775139b4553e97.png

6a694c1ba0f24c6997430a83cd847912.png

0a667c2f59a046f58aa070910dc31f2f.png

3.3 真题

51cto上做了近几年的真题

3.4 讨论

3.4.1 理论基础

学习金字塔

费曼学习法

最简单的说法,就是我们经常说的“以教促学”。刚学了一个知识,要想象自己是一个老师:用最简单的话和自己理解的意思给别人讲出来,为了达到这种效果,最好想象你要给一个10岁左右的小孩子去讲,如果小孩子都能听懂,说明你真正掌握了这种方法。

3.4.2 实践检验

整个学习过程中最有意思收获最多的一个环节就是讨论,学习并不是枯燥的,一定要找小伙伴一起学习,不是互相背知识点,而是互相讲解,多年的老师经验,让我对这点深信不疑,并且屡试不爽,即便没有一同学习的小伙伴,也要“强迫别人听你讲,越没有基础的越好,当你把别人讲通的时候基本上你对知识的掌握已经炉火纯青了。

另外一点,如果你有一个爱提问的小伙伴,恭喜你,你要升级王者了,没人提问,也要自己提问,问题是最好的老师,教是最好的学。而且在与别人讨论的过程中,困扰自己的问题可能小伙伴的一句话就能让你茅塞顿开,醍醐灌顶。

学习方法

4.1 PDCA

每周制定计划

每天按照PDCA进行

4.2 番茄工作法

选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后进行短暂休息一下(5分钟就行),然后再开始下一个番茄。

4.3 知识结构化


所谓结构化。就是把新学的知识和之前学的知识进行联系,去找他们之间的共性,做N+1,没学一个知识都不让它成为孤岛,至于如何进行联系,就要展开你想象的翅膀,用尽毕生所学,总能找到。(当然并不排除一些有意思的“瞎编”,编的过程也是结构化的一种,有机会给大家分享一波“我乱七八糟的结构化”)

4.4 三遍读书法

结合思维导图,对基础科目学习


4.5教是最好的学,问题是最好的老师

就是上面提到的“讨论”,一定要鼓励自己开口。

进步空间

总结下来,考试成绩似乎已变的不那么重要,重要的是整个学习过程,同时也给我后面的学习提供了很多的方向指导,比如,设计模式还需要进一步的学习,每次学习不一样的发现会给自己带来愉悦,还有算法的学习,每个小小的循环都有大不一样的含义,每个基础知识的学习对于后面的提高都有着不可忽视的地基作用。


最后还是以一首陆游的诗结束今天的总结:

冬夜读书示子聿

古人学问无遗力,少壮工夫老始成。

纸上得来终觉浅,绝知此事要躬行。

相关文章
|
7月前
|
敏捷开发 测试技术 项目管理
【软件设计师备考 专题 】准备软件设计师资格考试:复习指南和策略
【软件设计师备考 专题 】准备软件设计师资格考试:复习指南和策略
296 0
|
7月前
|
SQL 算法 架构师
【软件设计师备考 专题 】程序设计评审的重要性和方法
【软件设计师备考 专题 】程序设计评审的重要性和方法
162 0
|
7月前
|
测试技术 开发工具 C++
【软件设计师备考 专题 】软件开发环境和工具
【软件设计师备考 专题 】软件开发环境和工具
159 0
|
7月前
|
传感器 监控 算法
【软件设计师备考 专题 】模块测试的方法和实践
【软件设计师备考 专题 】模块测试的方法和实践
157 0
|
7月前
|
供应链 Oracle 关系型数据库
【软件设计师备考 专题 】常用应用系统
【软件设计师备考 专题 】常用应用系统
69 0
|
7月前
|
存储 传感器 安全
【软件设计师备考 专题 】描述软件需求的多种方法
【软件设计师备考 专题 】描述软件需求的多种方法
122 0
|
7月前
|
存储 安全 数据库
【软件设计师备考 专题 】企业信息资源管理基础知识
【软件设计师备考 专题 】企业信息资源管理基础知识
95 0
|
7月前
|
存储 算法 搜索推荐
【中级软件设计师】—数据结构与算法基础考点总结篇(八)
【中级软件设计师】—数据结构与算法基础考点总结篇(八)
【中级软件设计师】—数据结构与算法基础考点总结篇(八)
|
7月前
|
存储 算法 安全
软考中级-软件设计师知识点
软考中级-软件设计师知识点
389 0
|
算法 Java 测试技术
软考中级备考经验
软考中级备考经验
383 0
软考中级备考经验