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

前言

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

背景

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个设计模式。
在这里插入图片描述

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个设计模式,每个都画了类图,之前有敲过代码,所以这次没有敲,但是经过这次学习之后,有了完全不一样的感受,打算后面还要再敲一遍代码.同时按照分类每组都进行了二维表的对比。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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教是最好的学,问题是最好的老师

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

进步空间

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

最后还是以一首陆游的诗结束今天的总结:
冬夜读书示子聿
古人学问无遗力,少壮工夫老始成。
纸上得来终觉浅,绝知此事要躬行。

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值