选择题(综合题)
确定得分的
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) { /}
}