2023年上半年软考学习总结(超详细)

news2025/1/11 23:36:17

目录

    • 前言
  • 一、背景
    • 1.1上次考试感受:
    • 1.2这次考试感受:
    • 1.3方法:
  • 二、 过程
    • 2.1计算机网络概论
      • 计算机组成
      • 数据表示相关知识
      • 校验码相关知识
      • 计算机体系结构
      • 网络体系结构OSI/RM和TCP/IP
      • 计算机安全性可靠性性能评价
    • 2.2 程序设计语言基础知识
      • 编译和解释的区别
      • 编译过程图示
      • 编译各个阶段常见的错误
      • 常见语言分类
    • 2.3数据结构
    • 2.4 操作系统知识
    • 2.5软件工程基础知识
    • 2.6 结构化开发方法
    • 2.7面向对象技术
    • 2.8 算法分析设计
    • 2.9 数据库技术基础
    • 2.10网络与信息安全基础知识
    • 2.11 标准化和软件只是产权基础知识
    • 2.12软件系统分析与设计
  • 三、总结

前言

本系列笔记根据官方教材《软件设计师教程第五版》的章节内容和节奏进行梳理,由于教材内容偏多,这里会精挑细选总结关键的考点,以及整理出各种令人头疼的英文缩写的中文全称和英文全称,希望能够对同在备考网络工程师的童鞋们有帮助~如有不当的地方,还望多多指教!(持续更新中…)

一、背景

2023年上半年五月份进行了软考,这是一场蛰伏了将近两年的考试。

1.1上次考试感受:

上次考试时2021年下半年,我依稀记得上次写代码题的时候还分不清abstract关键字放在void前边还是后边

1.2这次考试感受:

但是这次我写最后一个代码题的时候已经游刃有余了。感叹这一年半以来自己的努力,也感谢这两周的专项复习小伙伴的相互帮助。

1.3方法:

多交流,全局观,结构化让我们这次的学习变得很有意义。
尤其是我们之前看的五本基础书,给了我们这次软考很大的帮助,让我们很好的把握住了宏观,这也是这次考试不同于之前考试的一个点,现在给我一个题,我能比较清楚的说出它所在的大概章节,这也有助于我在最后冲刺阶段的较快准确的锁定题的范围,迅速找书,迅速理解

二、 过程

2.1计算机网络概论

计算机组成

中央处理器(CPU):负责执行计算和控制计算机的操作。
主存储器(RAM):用于临时存储数据和程序。
输入设备:例如键盘、鼠标、触摸屏等,用于向计算机输入数据和指令。
输出设备:例如显示器、打印机、音频扬声器等,用于向用户显示计算机的输出结果。
存储设备:例如硬盘驱动器、固态硬盘等,用于永久性地存储数据和程序。
总线:用于不同组件之间的数据传输和通信。
在这里插入图片描述

数据表示相关知识

在这里插入图片描述

校验码相关知识

校验码是一种用于验证数据准确性和完整性的编码或数字。它通常用于检查传输过程中的错误或确保数据的一致性。
在这里插入图片描述

计算机体系结构

易考点:
在这里插入图片描述
数据传输方式
在这里插入图片描述

寻址方式对比
在这里插入图片描述
流水线技术
在这里插入图片描述
中断
在这里插入图片描述

Cache
在这里插入图片描述

网络体系结构OSI/RM和TCP/IP

1、OSI/RM(开放系统互联参考模型):该结构模型有七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。(口诀:物 数 网 传 会 表 应)
附上OSI七层结构图:
在这里插入图片描述

OSI/RM七层模型图
在这里插入图片描述
在这里插入图片描述
TCP/IP协议簇四层模型图
在这里插入图片描述
常见协议功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

加密方式
在这里插入图片描述
在这里插入图片描述

计算机安全性可靠性性能评价

在这里插入图片描述
在这里插入图片描述

2.2 程序设计语言基础知识

编译和解释的区别

编译:将源代码一次性转换为机器代码,生成可执行文件,然后再执行可执行文件。

解释:逐行解释源代码并执行,不生成可执行文件。

主要区别:编译器一次性转换,解释器逐行执行。

编译过程图示

在这里插入图片描述

编译各个阶段常见的错误

词法错误(Lexical Errors):这种错误发生在编译器无法识别源代码中的字符序列时。它可能由于拼写错误、无效的标识符、非法的操作符、未关闭的引号等引起。

语法错误(Syntax Errors):语法错误是在编写代码时违反编程语言的语法规则所引起的错误。它通常是由于缺少或错误使用关键字、括号不匹配、语句结构错误等导致的。

语义错误(Semantic Errors):语义错误是在代码的意义和逻辑上出现问题的错误。这种错误通常在编译器无法检测到的情况下发生。例如,使用错误的变量、执行不符合预期的操作、逻辑错误等。

常见语言分类

2.3数据结构

+-----------------------+-----------------------+
|       数据结构分类       |       具体数据结构       |
+-----------------------+-----------------------+
|     线性数据结构       |         数组           |
|                       |         链表           |
|                       ||
|                       |         队列           |
+-----------------------+-----------------------+
|   非线性数据结构       ||
|                       ||
+-----------------------+-----------------------+
|   排序和搜索数据结构   |      二叉搜索树       |
|                       |     平衡二叉树       |
|                       |       哈希表         |
|                       |      二叉堆           |
+-----------------------+-----------------------+

2.4 操作系统知识

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这道题考了,考了一个进程中的三个线程,三个线程之间的关系是什么?
pv操作
在这里插入图片描述

死锁
在这里插入图片描述
页式存储淘汰规则
在这里插入图片描述
I/o管理
在这里插入图片描述
候选键 ,选右边没有的
在这里插入图片描述
ER图转换规则
在这里插入图片描述

2.5软件工程基础知识

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.6 结构化开发方法

考大题

2.7面向对象技术

在这里插入图片描述

2.8 算法分析设计

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.9 数据库技术基础

在这里插入图片描述
在这里插入图片描述

2.10网络与信息安全基础知识

2.11 标准化和软件只是产权基础知识

在这里插入图片描述

2.12软件系统分析与设计

三、总结

/**
 * @BelongsProject: JAVAtest
 * @BelongsPackage: PACKAGE_NAME
 * @Author: GuoYuan.Zhao
 * @CreateTime: 2023-05-15  11:34
 * @Description: TODO
 * @Version: 1.0
 */
public class Test {
//    public static void main(String[] args) {
//       int i =  fbnq(7);
//        System.out.println(i);
//
//    }
//
//    public static int fbnq(int n){
//
//        if (n == 1 || n == 2) {             //特殊情况,分开讨论
//            return 1;
//        }
//        if (n>2){
//            return fbnq(n-1)+fbnq(n -2);
//        }
//       return  -1;
//    }

    public static void main(String[] args) {

        String[] nameArr = {"鞋子", "音响", "电脑"};

        // 商品重量数组
        int[] weightArr = {1/*鞋子*/, 4/*音响*/, 3/*电脑*/};

        // 商品价格数组
        int[] priceArr = {1500/*鞋子*/, 3000/*音响*/, 2000/*电脑*/};

        // 背包容量
        int packageCapacity = 4;

        backpackWithoutRepeat(nameArr, weightArr, priceArr, packageCapacity);
    }



    private static void backpackWithoutRepeat(String[] nameArr, int[] weightArr, int[] priceArr, int packageCapacity) {
        /**
         * 声明一个能装入 0、1、2、3磅......的背包的二维价格表;举例:就好比 v数组是表2的数据
         */
        int[][] nameBackpack = new int[nameArr.length + 1][packageCapacity + 1];

        // 构建可能装入背包的二维数组
        // 值为0时说明不会装进背包, 值为1说明可能装入背包
        int[][] contentArr = new int[nameArr.length + 1][packageCapacity + 1];

        /**
         * 为什么i一开始是1不是0?看表2的数据,是不是第一行全是0啊
         */
        for (int i = 1; i < nameBackpack.length; i++) {

            /**
             * 为什么j一开始是1不是0?看表2的数据,是不是第一列全是0啊
             */
            System.out.println(nameBackpack[i]);
            for (int j = 1; j < nameBackpack[i].length; j++) {

                /**
                 * 文章中当 w[i] > j 时,就有 nameBackpack[i][j] = nameBackpack[i-1][j];
                 * 因为我们程序i是从1开始的,因此原来公式中的w[i]修改成w[i-1];
                 * 当前商品 > 背包容量, 取同列上一行数据
                 */
                if (weightArr[i - 1] > j) {
                    nameBackpack[i][j] = nameBackpack[i - 1][j];
                } else {
                    /**
                     *  当前商品 <= 背包容量, 对两部分内容进行比较;
                     *  第一部分, 该列上一行数据
                     */
                    int onePart = nameBackpack[i - 1][j];

                    /**
                     * 还记得文章中写的 当j >= w[i] 时,有 nameBackpack[i][j]=max{nameBackpack[i-1][j],nameBackpack[i-1][j-w[i]]+nameBackpack[i]} 这个公式成立吗?
                     * priceArr[i - 1]: 当前商品价格;
                     * w[i - 1]: 当前商品重量;
                     * j - w[i - 1]: 去掉当前商品, 背包剩余容量;
                     * 不可重复: nameBackpack[i - 1][j - w[i - 1]]: 在上一行, 取剩余重量下的价格最优解;
                     */
                    int otherPart = priceArr[i - 1] + nameBackpack[i - 1][j - weightArr[i - 1]];

                    /**
                     *  取最大值为当前位置的最优解
                     */
                    nameBackpack[i][j] = Math.max(onePart, otherPart);

                    /**
                     *  如果最优解包含当前商品, 则表示当前商品已经被使用, 进行记录
                     */
                    if (otherPart == nameBackpack[i][j]) {
                        contentArr[i][j] = 1;
                    }
                }
            }
        }


        // 不能重复的场景中
        // 如果该位置的标志位为1, 说明该商品参与了最终的背包添加
        // 如果该位置的标志位为0, 即使该位置的价格为最大价格, 也是从其他位置引用的价格
        // 因为不能重复, 所以每行只取一个数据参与最终计算, 并只判断在最大位置该商品是否参与
        // 该最大位置会随着已经遍历出其他元素而对应不断减小, 直到为0


        // 二维数组最后一个元素必然是最大值, 但是需要知道该最大值是自身计算的 还是比较后引用其他的
        int totalPrice = 0;
        // 最大行下标数, 即商品数
        int maxLine = contentArr.length - 1;
        // 最大列下标数, 即重量
        int maxColumn = contentArr[0].length - 1;
        for (;maxLine > 0 && maxColumn > 0;) {
            // 等于1表示在该位置该商品参与了计算
            if (contentArr[maxLine][maxColumn] == 1) {
                // 遍历后, 对重量减少, 下一次从剩余重量中取参与商品
                maxColumn -= weightArr[maxLine - 1];
                totalPrice += priceArr[maxLine - 1];
                System.out.println(nameArr[maxLine - 1] + "加入了背包");
            }
            // 因为不能重复
            // 所以如果该商品参与了背包容量, 则肯定剩余的最大位置处参与,
            // 否则跟该数据无关, 直接跳过
            maxLine--;
        }
        System.out.println("背包可容纳的最大价值: " + totalPrice);
    }




}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在华为OD机试中获得满分?Java实现【求最小公倍数】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

【Unity3D】广告牌特效

1 前言 广告牌特效是指&#xff1a;空间中的一个 2D 对象始终&#xff08;或尽可能&#xff09;面向相机&#xff0c;使得用户能够尽可能看清楚该 2D 物体。广告牌特效一共有以下 3 种&#xff1a; 正视广告牌&#xff1a;广告牌始终以正视图姿态面向相机&#xff0c;即广告牌…

异常检测进阶梳理1:Tabular AD视角

接触异常检测领域也有一年多的时间了&#xff0c;过程中遇到不少坑&#xff0c;知识体系也在不断更新完善&#xff0c;这里以专题的形式进行知识体系的梳理~ 异常检测&#xff08;Anomaly Detection, AD&#xff09;领域内的划分体系较多&#xff0c;这里基于异常检测最常用到的…

【P39】JMeter 随机顺序控制器(Random Order Controller)

文章目录 一、随机顺序控制器&#xff08;Random Order Controller&#xff09;参数说明二、测试计划设计2.1、测试计划一2.2、测试计划二 一、随机顺序控制器&#xff08;Random Order Controller&#xff09;参数说明 可以让控制器内部的组件按随机顺序执行&#xff08;内部…

Alibaba Arthas学习与使用

Alibaba Arthas学习与使用 目录 下载安装卸载退出快捷键重点部分: 命令 dashboardthreadjvmsyspropsysenvvmoptiongetstaticognlscsmjadmcredefinedumpclassloadermonitorwatchtracestackttoptionsprofiler 下载安装 # 下载 curl -O https://alibaba.github.io/arthas/art…

Apache Kafka - 如何实现可靠的数据传递

文章目录 可靠的数据传递导图 可靠的数据传递 Kafka 通过以下几个方面实现可靠的数据传递: 分区副本 - Kafka 的分区有多个副本,如果某个副本失效,其他副本可以继续服务。生产者重试 - 生产者在发送消息失败时会自动重试,一直到成功发送或者达到最大重试次数。批量确认 - 生产…

云服务器和专用服务器之间的区别

在当今数字化时代&#xff0c;服务器是构建和支持各种应用和服务的基础设施之一。随着技术的发展和需求的增加&#xff0c;出现了不同类型的服务器&#xff0c;其中最常见的是云服务器和专用服务器。本文将详细介绍云服务器和专用服务器之间的区别&#xff0c;以帮助您更好地了…

SpringSecurity从入门到实战

SpringSecurity从入门到实战 0. 简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 ​ 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有…

【LAMP架构】

目录 一、LAMP架构1、组件作用 二、编译安装Apache httpd服务2、安装环境依赖包3、配置软件模块4、编译及安装5、优化配置文件路径&#xff0c;并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别6.添加httpd系统服务7.修改httpd 服务配置文件8.浏览器访问验证…

【云原生|探索 Kubernetes 系列 5】简化 Kubernetes 的部署,深入解析其工作流程

前言 大家好&#xff0c;我是秋意零。 在前面 4 个章节中&#xff0c;我们充分了解了容器技术和 Kubernes 原生时代引擎的架构和设计思想&#xff0c;今天分享的主要内容是&#xff0c;探索 Kubernetes 部署&#xff0c;深入解析其工作流程 &#x1f47f; 简介 &#x1f3e0…

[元带你学: eMMC协议详解 11] Data transfer mode 数据传输模式

依JEDEC eMMC 5.1及经验辛苦整理&#xff0c;付费内容&#xff0c;禁止转载。 所在专栏 《元带你学: eMMC协议详解》 全文2300 字&#xff0c; 主要介绍数据传输模式&#xff0c;本节数据传输模式图非常重要。数据传输模式图可以说是我查对过最频繁的图之一了。eMMC 限定了这么…

数据库基础——6.排序与分页

这篇文章来讲一下数据库的排序与分页 目录 1.排序数据 1.1排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 2.2 实现规则 2.3 拓展 1.排序数据 1.1排序规则 使用 ORDER BY 子句排序 ASC&#xff08;ascend&#xff09;&#xff1a;升序 &#xff1b; DESC&a…

怎么一键保存浏览器中打开的所有标签页?

2023年5月28日&#xff0c;周日晚上&#xff1a; 被这个问题困扰很久了&#xff0c;之前一直不知道怎么全部保存浏览器中打开的所有标签页&#xff0c;浪费了不少的时间&#xff0c;今天下午偶然发现了解决办法。 很简单&#xff0c;直接在浏览器里使用快捷键“CtrlShiftD” …

本周大新闻|传Meta与Magic Leap谈专利授权;PS VR2前6周出货60万台

本周XR大新闻&#xff0c;AR方面&#xff0c;苹果XR项目核心高管曝光&#xff1b;传Meta与Magic Leap洽谈专利授权合作&#xff1b;歌尔光学公布新一代AR显示模组&#xff1b;Lumus公布二代波导Z-Lens最新细节&#xff1b;JBD X-cube发布全彩Micro LED光机Hummingbird&#xff…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明&#xff1a;以下内容来自GPT-3.5大模型&#xff08;图片除外&#xff09; 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

【TOP生物信息】使用Seurat包自带的方法进行单细胞类型注释

扫码关注下方公粽号&#xff0c;回复推文合集&#xff0c;获取400页单细胞学习资源&#xff01; 本文共计1318字&#xff0c;阅读大约需要4分钟&#xff0c;目录如下&#xff1a; 方法简介演示数据来源代码演示小结代码参考往期单细胞系统教程 单细胞自动注释细胞类型的软件和…

华为OD机试真题B卷 Java 实现【查字典】,附详细解题思路

一、题目描述 输入一个单词前缀和一个字典&#xff0c;输出包含该前缀的单词。 二、输入描述 单词前缀字典长度字典。 字典是一个有序单词数组。 输入输出都是小写。 三、输出描述 所有包含该前缀的单词&#xff0c;多个单词换行输出。 若没有则返回-1。 四、解题思路…

Java的包:提高代码可维护性和可扩展性的神器

&#x1f9d1;‍&#x1f4bb;CSDN主页&#xff1a;夏志121的主页 &#x1f4cb;专栏地址&#xff1a;Java基础进阶核心技术专栏 目录 &#x1f354; 一、包名 &#x1f9c6; 二、类的导入 &#x1f958; 三、静态导入 &#x1f958; 四、在包中增加类 &#x1f371; 五、…

腾讯云服务器地域有什么不同?地域怎么选?

腾讯云服务器地域有什么区别&#xff1f;怎么选择比较好&#xff1f;地域选择就近原则&#xff0c;距离地域越近网络延迟越低&#xff0c;速度越快。关于地域的选择还有很多因素&#xff0c;地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中

1、 查看当前运行的容器 1.1、使用root账户登录进入Linux系统中&#xff0c;键入docker ps命令。 2、打包容器为镜像包 2.1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id&#xff0c;复制想要打包的容器ID并执行docker commit 容器id 容器新名称 例如&…