图片来源网络和王道考研的PPT,考试内容紧贴大纲,仅做个人整理资料学习分享。
1. 计算机系统结构
(1)计算机系统的基本组成、计算机系统的工作原理
两大部分:硬件(电子元件,各类光电机设备),软件(事先编制的具有各类特殊功能的程序)
五大部件:输入设备,运算器,存储器,控制器,输出设备
中央处理器:Central Processing Unit, CPU 由于运算器和控制器在逻辑关系和电路结构联系紧密,通常集成在同一芯片上,称为CPU
输入输出设备:I/O设备(Input/Output Equipment)
现代计算机三大部分:CPU I/O设备 主存储器
CPU和主存储器合起来称为主机,I/O设备称为外部设备

程序与数据一样存取,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作原理,这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼原理,冯诺依曼体系结构计算机的工作原理可以概括为八个字:存储程序、程序控制。
存储程序工作方式与基本结构
主存与CPU之间的连接,Cache工作原理
存储容量的拓展: 位拓展 字拓展 位字拓展
存储器与CPU连接
地址线连接:CPU地址线数往往多于存储芯片地址线数,通常地址线低位与存储芯片地址线相连。高位或在存储芯片扩充时使用,或用作片选信号等用途。
数据线连接:对存储芯片扩位。
读写命令线连接:通常高电平读低电平写。有些CPU读写线分开。
片选线连接:(CS) ̅ 低电平有效,与CPU的访存控制信号(MERQ) ̅有关,也与地址有关。
合理选择存储芯片:RAM用户编程,ROM存放系统程序、标准子程序、各类常数。
CPU, ALU, I/O, MIPS, FLOPS概念
CPU: Central Processing Unit 中央处理单元
ALU: 算数逻辑单元(arithmetic and logic unit)
I/O: Input/Output
MIPS: Million Instruction Per Second 百万条指令每秒
FLOPS: Floating Point Operation Per Second 浮点运算次数每秒
2. 操作系统与编译
(1)操作系统的基本概念
操作系统(Operating System,简称OS)是计算机系统中直接控制硬件、协调软硬件资源的基础软件。
①系统资源管理者
②向上层提供方便医用的服务
③最接近硬件的一层软件
(2)实时操作系统和分时操作系统
实时操作系统:实时系统(Real Time System)是指系统能够即时相应外部事件的请求,在规定的时间内完成对该时间的处理,并控制所有实时任务协调一致地运行。
优点:广泛应用于对时间要求严格的领域。
分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
优点:用户请求可以及时响应,解决了人机交互问题,允许多个用户同时使用一台计算机,并且操作相互独立,感受不到别人存在。
缺点:不能优先处理一些紧急任务,对各个用户/作业完全公平,不区分紧急性。
(3) "编译型语言"和"解释型语言"概念
编译型语言:源代码通过编译器一次性转换为目标机器代码,生成的文件直接在操作系统上运行。(C/C++, Go, Rust)
执行速度快,平台依赖,开发周期长
解释型语言:代码由解释器逐行翻译并运行,不生成独立的机器码文件。(Python, JavaScript, PHP)
跨平台性好,执行速度较慢
(4)编译器、汇编器、链路器概念
编译器:Compiler 高级语言源代码转换为汇编代码(或直接生成目标机器码)
汇编器:将汇编代码直接转换为机器码
链接器:多个目标文件和库文件合并,生成最终的可执行文件
3. 程序设计与C语言
(1)计算机程序设计的任务、程序调试步骤
任务:将问题需求转换为计算机可执行的指令
程序调试步骤:1. 复现错误 2. 定位错误 3. 分析原因 4. 修复错误 5. 验证修复 6. 预防措施
(2)程序流程图的画法、顺序结构程序设计的方法

开始结束:圆角框
输入输出:平行四边形
方框:操作
菱形:判断
(3)数据基本成分,常量、变量的含义及使用方法,基本数据类型的用法
(4)C语句的基本概念;数据类型、运算符与表达式、逻辑运算与判断选取控制、循环控制、数组、函数和指针、简单的C语言程序设计
(5)常用排序、输入输出算法、循环算法的C语言实现
插入排序:
每一次将一个待排序的记录按照关键字大小插入已经拍好的序列。
cpp
for(i=1;i<10;i++){
for(j=0;j<i;j++){
if(A[i]<A[j]){
int temp;
temp=A[i];
for(k=i;k>=j+1;k--){
A[k]=A[k-1];
}
A[j]=temp;
break;
}
}
}
希尔排序:先将待排序表分割成若干形L[I,i+d,i+2d,...,i+kd]的特殊子表,对各个子表插入排序,缩小增量d,重复上述过程到d=1。
第一趟d=n/2。每一趟d=d/2
cpp
for(d=n>>1;d>=1;d=d>>1){
for(i=d;i<n;i++){
if(A[i]<A[i-d]){
int temp=A[i];
for(j=i-d;j>=0&&temp<A[j];j-=d){
A[j+d]=A[j];
}
A[j+d]=temp;
}
}
}
冒泡排序:从后往前或从前往后两两比较相邻元素的值,若为逆序,则交换,直到序列比较完。
cpp
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(A[j]<A[j-1]){
m=A[j-1];
A[j-1]=A[j];
A[j]=m;
}
}
}
快排
cpp
int Partition(int A[],int low,int high){
int pivot=A[low];
while(low<high){
while(low<high&&A[high]>=pivot) --high;
A[low]=A[high];
while(low<high&&A[low]<=pivot) ++low;
A[high]=A[low];
}
A[low]=pivot;
return low;
}
void QuickSort(int A[],int low,int high){
if(low<high){
int pivotpos=Partition(A,low,high);
QuickSort(A,low,pivotpos-1);
QuickSort(A,pivotpos+1,high);
}
}
简单排序
cpp
for(i=0;i<n;i++){
int j=0;
minnow=A[i];
nowpot=-1;
for(j=i+1;j<n;j++){
if(A[j]<minnow){
minnow=A[j];
nowpot=j;
}
}
if(nowpot!=-1){
int tmp=A[i];
A[i]=A[nowpot];
A[nowpot]=tmp;
}
}
堆排序


归并排序
cpp
int temp[100005],a[100005];
void sort_change(int l,int mid,int r){
//排序部分,把大区间再次分成小区间排序
int k1=l,k2=mid+1,k=l;
//初始化三个指针,一个指左区间左端点,一个指右区间左端点,一个指最终答案区间的左端点
while(k1<=mid&&k2<=r){
if(a[k1]>a[k2]){
temp[k]=a[k2];
k++,k2++;
}
else{
temp[k]=a[k1];
k++,k1++;
}
//每次取两个区间中最小的数字加入答案,指针右移
}
while(k1<=mid){
temp[k]=a[k1];
k++,k1++;
}//如果右区间的数字已经取完了,将左区间剩余数字按照一样从小到大的顺序放入答案
while(k2<=r){
temp[k]=a[k2];
k++,k2++;
}//如果左区间的数字已经取完了,将右区间剩余数字按照一样从小到大的顺序放入答案
for(int i=l;i<=r;i++) a[i]=temp[i];//将储存答案的数组的值赋回原来的数组
}
void sort_re(int l,int r){
if(l>=r) return ;//如果该区间不满足条件,即左边在右边的右边,return
int mid=(l+r)/2;//二分思想
sort_re(l,mid);//给左子区间排序
sort_re(mid+1,r);//给右子区间排序
sort_change(l,mid,r);//保证左右子区间排列得整整齐齐之后,才能并起来
//将大区间化成小区间然后排序
}
int n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);//读入
sort_re(1,n);//排序(进入划分区间)
for(int i=1;i<=n;i++) printf("%d ",a[i]);//输出
return 0;
}
基数排序(来源王道)

4. 机器学习与人工智能
这部分整理的不是特别全面,主包当时考试的时候就这部分稍微不太熟悉,建议自行再次整理详细
(1)机器学习模型的训练误差、测试误差、过拟合概念
误差:学习器实际预测输出与样本真实输出之间的差异
训练误差:学习器在训练集上的误差
测试误差:学习器在测试集上的误差
过拟合:学习器把训练样本学得太好了,把训练样本自身的一些特点当做所有潜在样本都具有的一般性质,导致泛化性能下降
(2)梯度下降、反向传播算法的基本原理
梯度下降:梯度下降利用损失函数的梯度(即偏导数)指示参数更新的方向,使损失函数值逐步向局部最小值或全局最小值移动。



(4)人工神经网络的基本结构、节点、激活函数、转移矩阵
基本结构:
输入层:接收原始数据
隐藏层:输入输出之间,负责特征提取和变换
输出层:生成最终预测结果
节点:模拟生物神经元,操作:输入-加权求和-激活函数
激活函数:引入非线性,使网络能够拟合复杂函数
转移矩阵:描述层与层之间连接的权重参数。