中级软件设计师考试总结

前言

    作为一名中级软件设计师,考试是衡量自己技能和水平的一项重要指标。在备考和考试过程中,我通过总结经验和教训,在提高自己的同时,也为后来者提供一些参考。

考前学习

    下面对中级软件设计师的学习从宏观和微观两点来给大家讲解,请大家耐心观看。

宏观

什么是软考

    软考全称“计算机技术与软件专业技术资格(水平)考试”,由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试,设置了27个资格包括初级、中级、高级三个级别。本博主此次考的是软考下的中级软件设计师。

涉及的知识范围

    中级软件设计师整本书的内容可以用一个字来形容——“广”,他涵盖了计算机专业的所有专业科目,包括《计算机网络原理》、《操作系统概论》、《数据库系统原理》、《数据结构导论》、《信息系统开发与管理》、《管理经济学》、《C++程序设计》等。在考此证书前,你需要有计算机专业的基本能力。

软考整体导图总结

在这里插入图片描述

微观

我的分享——希尔排序

    希尔排序(Shell’s Sort)是插入排序的一种,是插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。——百度百科
    插入排序性能低的原因分析:插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。
    希尔排序的思想逻辑:

  1. 先分组:找到一个间隔,每隔一定的间隔把这些元素排成一组(在希尔排序当中对间隔没有明确的要求,可以任意找间隔,通常会取总长度的一半)
  2. 对组内元素进行插入排序
  3. 重新设置间隔、分组,在原来的间隔基础之上减半
  4. 组内元素排序
  5. 直到间隔为1,间隔为1以为着所有的元素为一组,此时进行最后一次组内排序
    代码实现:
public class ShellSort {
    public static void main(String[] args){
        int[] array={3,5,9,2,4,7};
        System.out.println("排序之前:");
        for(int i=0;i<array.length;i++){
            System.out.print(array[i]+" ");
        }
        //希尔排序
        int[] arraySort = shellSort(array);

        System.out.println("\n排序之后:");
        for(int i=0;i<arraySort.length;i++){
            System.out.print(arraySort[i]+" ");
        }
    }

    public static int[] shellSort(int[] arr){
        //1.先定义间隙大小 第一次分组一般是数组长度的一半
        int step= arr.length/2;
        //2.直到间隙为1时结束循环
        while (true) {
            //我想要干什么?怎么干?
            for(int start=0;start<step;start++){
                quickSort(arr, step, start);
            }
            //间隙减半,两种情况——偶数、奇数
            if(step%2==0){
                step=step/2;
            }else {
                if(step !=1){
                    step=step/2+1;
                }else{
                    break;
                }
            }
        }
        return arr;
    }
/*
     * @Author:ET_momo
     * CreateTime: 2023/4/26 9:01
     * @param: arr是int类型的数组,要进行排序的数组;step是间隙;start是起始索引。
     * @return: 排好序的
*/

    public static void quickSort(int[] arr,int step,int start){
        //2.外循环:遍历索引为位置的元素进行排序 i代表待插入元素的索引
        for (int i = start; i < arr.length; i+=step) {
            //3.内循环:相邻的两个数进行比较,左边数(j)大于右边数(j+1)才进行交换。 j是已排序区域的元素索引
            for(int j=i-step;j>=0;j-=step){
                //判断左边数是否大于右边数
                if(arr[j]>arr[j+step]){
                    //定义一个int类型的变量暂时存放数据
                    int temp=arr[j];
                    arr[j]=arr[j+step];
                    arr[j+step]=temp;
                }
            }
        }
    }
}

学习过程

结构化

    按照整体的软考计划,制定自己每周的计划,每天以PDCA的形式来对自己的学习内容进行归纳总结和提升。
    知识分类总结:
一、系统开发基础
1.1.以多维度表格的形式总结了软件开发模型,如下图所示:
在这里插入图片描述
1.2.系统测试中的白盒测试的几种测试方法容易混淆,也做了二维表上的区分,如下图所示:
在这里插入图片描述二、面向对象技术
    23种设计模式三种分类:创建型、结构型和行为型,每种类型的设计模式都有不同的目标和应用场景。创建型模式关注对象的创建过程,它们提供了一种更灵活的方法来创建对象,从而降低了对象之间的耦合性;结构型模式关注对象之间的组合,旨在提供一种更灵活的方法来设计软件结构;行为型模式关注对象之间的通信,旨在提供一种更灵活的方法来实现对象间的交互。
    三个类型模式的具体分类:

  1. 创建型模式(公园丑单狗)为工厂方法模式、原型模式、抽象工厂模式、单例模式、构建器模式。
  2. 结构型模式(石桥组装外箱带)有适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。
  3. 行为型模式:模板方法模式、解释器模式、职责链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式。
        这一块我们做的结构化是模式的首个字编一句比较容易理解的话,创建型的是公园里面有只丑的单身狗;结构型的是用石头组装的桥用外卖箱带走;其余十一个是行为型模式。
    三、数据结构
        对常见的七种排序的时间复杂度、空间复杂度和稳定性做了结构化:
        时间复杂度:看了七种类型的时间复杂度后,发现选择排序的两种排序直接选择和堆排序,归并排序,他们分别最好、最坏和平均的时间复杂度都是一样的,共享的是同一个值,所以从共享和共享的首字母g、x能想到归并和选择。那他们三个的区别是共享和堆排序是nlogn,那用到什么算法的排序是nlogn呢,在这儿我们发现了归并排序和快速排序的算法思想是分治法,而堆排序用到的是树,所以我们可以得出用到了分治法和树形的排序,他们的时间复杂度是nlogn;冒泡、直接插入和希尔排序他们在数组基本有序的情况下,只需要执行n次逻辑代码。空间复杂度:找到的共性是大部分都是O(1),只有两个比较特殊,一个是归并,一个是快排,排序我们之前都互相分享过,结合到具体的人来做的结构化;稳定性:口令快选希堆不稳定,其余稳定。
    在这里插入图片描述
做题

    现在的做题软件(希赛软考助手)设计的真的很贴合人们的需求,首先映入眼帘的是你的做题数,甚至还给标识了正确题数和正确率,这是给我们的做完题后的反馈,看着正确率不断的提升,让我们得成长看得见;其次是分类展示,可以选择真题训练,也可专项训练,错题训练,为用户考虑,为用户着想,全心全意为人民服务
在这里插入图片描述
    在做题过程中,一部分是识记的知识点,这部分的题在做题过程中如果不明确的话,去查书做结构化,不仅要会做当前的题,还要把相关的一部分知识学会,这样学起来不会像是一盘散沙,容易丢失,而是一张知识网,牵一发而动全身;一部分是关于计算的题,这部分首先要将计算题的基础知识掌握了,然后再研究如何思路,我们组不会的题会先往群里发,谁会谁去解答,或者是直接去问,梦杰这边做真题做到了2013年的,遇到了很多没有遇见的问题,我会去主动学习,看课本、看视频,学会了之后将此计算题讲给他人听,最后我对这道题的印象尤其深刻,不易忘记,教是最好的学
在这里插入图片描述
在这里插入图片描述

考试阶段

    在考试过程中,我也把题分为了两类,一类是我确定能做对的,一类是我不确定能不能对的。

确定

    确定能做对的题型大多数都是我们小组一起做过结构化的、我给其他人讲过的知识,我一想到可能其他人会因为听我讲过,而得到这个分数,我就莫名的开心,而我自己也确保这个分数能拿到,就更加开心。
    当我在考前遇到不会的知识点越多,我越高兴,当不会的知识结构化后或者是经过讨论后,我掌握了此知识,那我在考试中再遇见他,就迎刃而解,不费吹灰之力的拿到分数,乐栽乐哉!

不确定

    这一部分大多是关于识记的知识点,在学习这一类的知识时没有理解,就往下进行,导致当他换一种方式出题就不会做了,学习的不到位,才会出现这种情况;还有一个题型是让画无向图的邻接表,这个是让我感到最遗憾的,没拿到分数的题,我在看数据结构那一章树和图的知识点时,认为之前自考考过了,分数也挺高的,简单到没必要再次学习,因为这个心态,让我惨失五分。我需要对我所面临的所有事情持敬重的态度,不轻敌,认真对待每件事情,每个知识
在这里插入图片描述

考后总结

    制定月计划、周计划、每日的PDCA、小组学习、知识做结构化(思维导图)、讲给别人、费斯汀格法则,是我迎接下一个考试还要继续延续的学习方法,甚至在我以后任何知识的学习过程中也要延续的学习方法,这些对我很重要!认为自己会了,不需要再次学习的这种傲慢心态、容易得过且过的心态要避之远之!

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨思默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值