2025软考软件设计师题目

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

考前的准备

考点包含软件工程概论、计算机编程与算法、操作系统、网络等知识。

软件项目活动图

软件活动图是一种用于描述软件系统中业务流程和工作流的 UML(统一建模语言)图形化工具。它以图形方式展示了系统中各个活动的执行顺序、并发关系以及决策点,帮助开发人员和相关利益者理解系统的动态行为

关键路径为从开始节点到结束节点耗时最长的路径,决定了整个软件项目完成需要的最短时间。里程碑是项目过程中执行特定行为的活动,例如需求分析、软件设计等。

以上活动图关键路径:A →C → G  →J  →K

AD活动在AC活动开始后3天才开始,也就是延期三天,DG活动需要15天才完成,也就是延期5天,原来G节点结束日期取决于ACG路径,耗时25天,现在由于ADG路径耗时28天了,所以G节点实际要延期3天(28-25)结束。

计算磁盘存储位示图的字

题目会给出系统的字长、磁盘物理块的大小和磁盘的容量,则磁盘分物理块

1000*1024(M)/ 4M = 256000 个,按字长32位,也就是一个字32个物理块,则字的个数为256000/32=8000

段页式存储计算

根据图示,容易得到每一页地址用12位来存储,页号和段号都用10位来存储,由此可以得出页大小2^12=4096,段和页号范围长度是2^10=1024。

最小生成树

能连接所有点的最小路径树。方法为,从一个顶点开始,选取可达的权值最小的边,将另一个顶点加入已到达顶点集合,之后从接下来可达的点集合中选取路径最小的、未遍历过的边加入,直到所有的顶点都被遍历。以下是最小生成树的解。

信号量

信号量作为进程之间通信的一种机制,可以唤醒进程或阻塞进程。进程和进程之间的一个依赖关系需要一个信号量,一个进程获取信号量之后才能进行,这个时候另一个进程就等待,也就是执行前先获取信号量,用P(S)表示,执行完释放信号量,用V(S)表示。

如上,假设进程跟进程之间共享的信号量如下:

当P1执行完,释放信号量S1,所以a是V(S1),P2执行完,释放信号量S2,所以b是V(S2),P3执行需要前面两个信号量,所以c是P(S1)和P(S2)。

哈夫曼树

将每个带有权值的节点组成一个二叉树,在编码场景中权值就是字符出现的概率。特点是除了根节点,其他节点都能两两向上合成新节点。之后编码的时候,每个节点为一个字符,从根节点到叶子节点的每一条路径都是一个编码后值。

CISC和RISC 

CISC是复杂指令集,试图用少量指令完成复杂功能。使用于X86场景。兼容性好`,编程简单。效率低,功耗大。

  RISC是精简指令集,包含指令数比较少,试图通过基本的指令组合完成复杂的功能,指令长度固定,适合流水线,寄存器数量多。优势执行效率高,低功耗,编译优化空间大。

选择题(综合题)

确定得分的

1、Linux外设目录是什么

     /dev。存储磁盘的目录

2、Linux外设sdc类型设备属于什么

   scsi hard disk。根据第一个字母s盲猜的

3、计算机中让程序计数器PC不能指向当前运行程序的技术是

  流水线。根据流水线的原理

4、Python程序[a**2 for a in range(12345) if a % 2 == 0]的结果

 [4,16]。取为偶数的

5、数据库的第三范式目的是?

消除传递依赖。数据库范式原理。

6、数据库()操作不会激活触发器

Select。查询语句不对数据库表结构做改动,不会激活触发器

7、数据库分组后筛选条件用?

having。group by having的用法。

8、进程间同步于互斥

信号量。通过信号量控制

9、有6个进程,每个进程需要3个资源R,最少需要几个资源不发生死锁?

13。设想发生了死锁的场景,也就是每个进程都要等待,那么最少每个进程已经拥有了两个资源R,此时每个进程都还需要1个R形成了循环等待,这个时候只要再来一个资源R,就能打破这种循环等待。所以12+1=13

10、下面哪项属于适应性维护?

改进系统使其可以在新的操作系统上运行。为适应新的环境(操作系统)

11、分布式存储系统中地址结构,系统字长32位,31~12位分页,11~0位页内地址

页大小4K,页数1M。

12、哪个不在关键路径上

c

13 最大延期天数

3

14 时间戳可以防止什么攻击

重放攻击

15 团队成员水平差异大

重分配

16 二分查找 不可能是什么序列

17 开源软件

18 哈弗曼编码

19 栈操作数

20 时钟周期

21传值传参

22违背单一原则

23数据流分层越多越不清晰

24适合瀑布模型

25无向图遍历

26软件配置管理不包括 项目计划

27 频繁调用的临时变量存储在寄存器效率最高

28产品裂变细化目的:明确任务优先级

29二叉树表达式

30模块划分明细是微服务

31测试用例分组是等价类划分

32计算所有点的欧氏距离

33天气变化手机更新,观察者模式

34事务不互相干扰,是隔离性

35模块间接口问题发现,通过集成测试

36从阻塞进入ready,是阻塞事件完成了

37对象之间是怎么通信的?消息

38采用策略模式

39策略模式是对象行为型

40该算法使用于算法的不同变体

41该模式是将算法封装使其可以相互替换

专业英语

independent、how、migrating、issues、optimize/suit

不太确定得分

状态图两个题、矩阵上三角、A类地址

应用题

智慧农业

1、用例补充。实时监控、自定义配置

2、实体补充。Ai、农业技术员、农业专家、

3、需要在不同场景使用不同的算法。使用策略模式。以及原因是包装了不同算法以便可以相互替换。

智慧医疗

1、腕表、Ai、医生

2、血糖记录、个性建议、提醒

3、缺失数据流。只找出个性化建议那个

4、可视化信息、干预信息组成

拍卖

艺术家、艺术品、拍卖行、拍卖。

1、艺术家id(外键)

艺术品id(外键)

2、加入创作关系,关联到艺术家和艺术品,加*表示多的关系。

回溯代码题

算法题:子数组和
 

#include <stdio.h>
#include <stdlib.h>

// 全局变量
int *A;              // 输入数组
int M;              // 目标和
int *remaining_sum; // 剩余和数组
int n;              // 数组长度
int found = 0;      // 是否找到解

// 打印数组函数
void printArray(int path[], int path_len) {
    printf("[");
    for(int i = 0; i < path_len; i++) {
        printf("%d", path[i]);
        if(i < path_len - 1) printf(",");
    }
    printf("]");
}

// 回溯函数
void backtracking(int index, int current_sum, int path[], int path_len) {
    // 找到一个解
    if(current_sum == M) {//空1,填写找到解的条件
        found = 1;
        printArray(path, path_len);
        return;
    }
    
    // 剪枝条件1:如果当前和加上剩余所有元素和小于M,返回
    if(current_sum + remaining_sum[index] < M) return;   // 空(2)剪枝就是return
    
    // 边界检查
    if(index >= n) return;  
    
    // 单层if判断,满足条件则选择当前元素
    if(current_sum + A[index] <= M) { //空3,说明累加还不到M,可以加入当前元素尝试搜素
        path[path_len] = A[index];
        backtracking(index + 1, current_sum + A[index], path, path_len + 1);
    }
    
    // 尝试下一个元素 if(current_sum + remaining_sum[index+1] >= M) {
    backtracking(index + 1, current_sum, path, path_len);}
}

int main() {
    printf("请输入数组长度: ");
    scanf("%d", &n);
    
    // 动态分配内存
    A = (int*)malloc(n * sizeof(int));
    remaining_sum = (int*)malloc(n * sizeof(int));
    
    printf("请输入数组元素:\n");
    for(int i = 0; i < n; i++) {
        scanf("%d", &A[i]);
    }
    
    // 计算remaining_sum数组
    remaining_sum[n-1] = A[n-1];
    for(int i = n-2; i >= 0; i--) {
        remaining_sum[i] = remaining_sum[i+1] + A[i];   // 空(4)剩下元素的和,上个计算值加上当前元素
    }
    
    printf("请输入目标和M: ");
    scanf("%d", &M);
    
    int *path = (int*)malloc(n * sizeof(int));
    printf("\n查找和为 %d 的所有子序列:\n", M);
    backtracking(0, 0, path, 0);   // 空(5)整行代码 
    
    if(!found) {
        printf("没有找到符合条件的子序列\n");
    }
    
    // 释放内存
    free(A);
    free(remaining_sum);
    free(path);
    
    return 0;
}


输入数组A={1,2,3,4,5},M=5,结果为([1, 4][2, 3][5])
最坏时间复杂度为:()

适配器题

public interface MediaPlayer {
   public ___(1)__void play(String audioType, String fileName) _;
}

public interface AdvancedMediaPlayer { 
   public __(2)___void playVlc(String fileName);
   public __(3)___void playMp4(String fileName);
}

public class VlcPlayer implements AdvancedMediaPlayer{

   public void playVlc(String fileName) {
      System.out.println("Playing vlc file. Name: "+ fileName);      
   }


   public void playMp4(String fileName) {
      //
   }
}

public class Mp4Player implements AdvancedMediaPlayer{
 
   public void playVlc(String fileName) {
      //
   }
 
   public void playMp4(String fileName) {
      System.out.println("Playing mp4 file. Name: "+ fileName);      
   }
}

public class MediaAdapter implements MediaPlayer {
 
    private AdvancedMediaPlayer___(4)____advancedMusicPlayer;
 
   public MediaAdapter(String audioType){
        //
   }

   public void play(String audioType, String fileName) {
        //
   }
}

public class AudioPlayer implements MediaPlayer {
   _private MediaAdapter__(5)____ mediaAdapter; 

   public void play(String audioType, String fileName) {    
        /
   }   
}

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值