2021山大四门计算机课程试题与知识点整理:数据科学、数据库、OS、可视化

发布时间:2026/9/30 3:34:17
2021山大四门计算机课程试题与知识点整理:数据科学、数据库、OS、可视化 经常有人问我大学里那么多计算机课程哪些值得整理成自己的知识体系我这段时间整理了一份2021年山东大学数据可视化、数据科学导论、OS、数据库的试题汇总和个人知识点整理四门课一锅端。这份资料原本是给自己期末复习用的但整理完发现它其实反映了一个计算机专业学生从入门到进阶的一整条主线。如果你正在准备这几门课的考试或者想把“数据科学”这块拼图凑完整这篇文章里的拆解思路和知识点梳理应该能帮你少踩不少坑。先说结论这四门课不是孤立的。数据科学导论负责讲“数据从哪来、怎么分析”数据可视化负责讲“分析完怎么展示”数据库负责讲“数据往哪存、怎么查”操作系统负责讲“底层计算资源怎么调度”。表面上它们是四张试卷实际上是一条完整的数据流水线。我整理资料时最大的感受就是很多考点是跨课程串在一起的比如数据库的事务并发控制本质上就是操作系统里进程同步的一个应用场景。所以这份整理不是简单地把四门课的知识点罗列出来而是把它们放到一条主线上重新编织了一遍。如果你时间紧只想应付考试那这份整理的试题汇总部分可以直接上手刷如果你想真正把知识串起来建议还是从第2章的知识点拆解开始看。下面我按自己整理的顺序把这四门课的核心内容、资料制作方法、复习实操和踩过的坑一次讲清楚。1. 四门课为什么值得一起整理从课程地图到复习策略1.1 四门课在数据科学主线中的位置我一开始也没想把这四门课放一起是复习到后面才反应过来——它们其实构成了一条非常清晰的数据链路。数据库是这条链路的起点。不管是做数据分析还是做可视化数据总得先有个地方存放。MySQL、SQL Server这类关系型数据库怎么设计表结构、怎么写查询语句、怎么保证数据一致性是后续所有环节的前提。数据科学导论接着往下走它讲的是拿到数据之后怎么做清洗、怎么做特征处理、怎么训练一个简单的模型。这一步处理完之后结果往往是数值型的指标或者统计量光看数字很难让老师或者领导快速理解于是就需要数据可视化出场——用条形图、散点图、热力图把结论变成一眼能看懂的东西。那操作系统在哪里它是所有环节的底座。你的Python进程在跑数据清洗时操作系统怎么分配CPU时间片、怎么管理内存里的页面、怎么调度磁盘IO直接决定了你跑一个数据集是几十秒还是几分钟。更直接的是数据库服务本身就是一个多进程/多线程程序它底层的锁机制、缓冲池管理跟操作系统的同步互斥、页面置换算法几乎是一回事。我当时整理知识点时用了一个比喻数据库是仓库OS是仓库管理员数据科学导论是分拣员可视化是橱窗设计师。仓库要能高效存取管理员要决定货架怎么摆、人怎么排队分拣员要决定哪些货物该放一起、哪些要扔掉设计师则要把最终成果摆成客户愿意看的形态。四门课各管一段但互相之间大量重叠。1.2 2021年这份资料的背景与取舍为什么强调2021年因为这份资料的考点频次统计、题型分布都基于那一年的课程重点和真题。计算机课程几年内核心框架不会大变但每一年的重点会有微调。比如2021年数据库课程里对“执行计划”和“数据库连接池”的考查明显比往年多这可能是因为实际工程项目里这两块越来越常被提到。如果你拿这份资料去套2024年的考试建议以讲义为基准用我总结的方法重新标注一遍重点。整理时我给自己定了三条取舍原则第一以课堂讲义和真题为绝对主线网上的教程只做补充不喧宾夺主第二凡是讲义里反复出现、真题里考过三次以上的知识点全部做详细拆解其余只留一句话索引第三凡是需要动手的操作性内容——比如写SQL、画流程图、算调度算法——必须配上可执行的例子绝不只写概念。按这三条筛下来每门课的笔记基本控制在30到50页复习时可以完整过两遍。有个地方容易被忽略我特意把“试题汇总”和“基本知识点整理”分成两个独立文档。试题汇总按题型分类纯粹用来刷知识点整理按课程逻辑编排用来理解。如果混在一起刷题时会被大段概念打断复习概念时又老想着题目效率非常低。这一点后面第3章会再细讲。2. 核心知识点拆解四门课的高频考点与底层逻辑2.1 数据可视化视觉编码、图形语法与工具落地数据可视化这门课表面上考的是图表类型和工具使用但底层核心是视觉编码。人的视觉系统对不同视觉通道的感知精度差异极大对位置和长度的感知最准对颜色的感知最弱。所以做条形图时柱子的高度差能被人精确感知但用色块深浅表示数值差异时就非常容易被误读。考试里如果问“哪种图表适合显示精确数值对比”优先选条形图而不是面积图原因就在这里。图表选型是另一类高频题。我的笔记里整理了一张表基本上把常见的图表类型和适用场景对应了起来数据类型适合的图表核心优势类别对比条形图、水平条形图长度编码精确类别顺序可调时间趋势折线图连续变化直观可叠加多序列分布情况直方图、箱线图直方图看形态箱线图看离群点组成结构堆叠条形图不用饼图饼图误差大堆叠条形更好比较两个变量关系散点图一眼看出正相关、负相关或聚类地理数据地图气泡/热力空间分布一目了然关于饼图多说一句饼图在考试里常被当作“常识题”考问它有什么缺陷。标准答案是人对角度的感知远不如对长度的感知饼图各扇区的比例差异很难被准确估计。实际工作中我也很少用饼图除非类别只有两三个且差异很大。工具部分2021年最常用的还是ECharts。ECharts的核心思路是“配置项驱动”——你写一个option对象里面定义数据、坐标系、样式图表就渲染出来了。一个精简的柱状图配置长这样// ECharts 柱状图最小可运行示例 var option { title: { text: 各季度销量 }, tooltip: {}, xAxis: { data: [Q1, Q2, Q3, Q4] }, yAxis: {}, series: [{ name: 销量, type: bar, data: [420, 535, 610, 780] }] }; // 初始化并渲染 var chart echarts.init(document.getElementById(main)); chart.setOption(option);实操里最容易翻车的地方有三个第一xAxis和series里的数据必须一一对应对不齐就是白屏或者错位第二ECharts默认是异步加载数据如果从后端接口拿JSON要先确保数据格式是数组而不是对象套对象第三地图类图表需要额外注册地图数据不注册就会报错。这些细节在考试里未必考但课程设计里一定会遇到。2021年的课程项目里有个“农产品价格数据可视化”是FlaskECharts的组合前端用ECharts画图后端用Flask提供JSON接口中间最常出的问题就是跨域和数据结构不匹配这两个我踩过后面会列进避坑清单。2.2 数据科学导论从数据采集到模型评估的完整链路数据科学导论这门课本质是在讲数据工作的完整流程。一般分成五个环节数据采集、数据清洗、特征工程、模型训练、评估与汇报。考试很少直接考“流程是什么”这种送分题更多是让你在一个具体场景里判断每一步该做什么。数据采集阶段常见的手段有直接下载公开数据集、写爬虫抓取网页、调用API接口。课程里爬虫不需要写得多深但一定要知道requests和BeautifulSoup的基本用法以及怎么处理返回的JSON数据。我复习时把这部分简化成一句话请求网页、解析内容、提取字段、存入csv或数据库。整个流程代码量不大但每一步都可能出错——编码问题、请求头缺失、反爬封IP这些在实际项目里非常常见。数据清洗是考试和实践的双重重点。缺省值处理是最基础的问题可以删除、可以用均值/中位数填充、也可以用前后值填充选择依据是数据缺失是否随机。异常值检测则常用箱线图的IQR方法——超过Q1-1.5IQR或Q31.5IQR的点视为异常。特征工程里标准化和归一化的区别是高频考点标准化StandardScaler让数据服从均值为0、方差为1的分布适合正态分布数据归一化MinMaxScaler把数据压缩到[0,1]区间适合有明确上下界的场景。模型部分分类和回归各掌握两三个经典算法就够了。分类重点看逻辑回归、决策树回归重点看线性回归。需要背下来的是评估指标分类任务准确率、精确率、召回率、F1值以及混淆矩阵的含义。考试常设“类别不平衡”的场景这时准确率会骗人应该看精确率和召回率。回归任务均方误差MSE、均方根误差RMSE、R²分数。R²越接近1说明模型拟合越好接近0说明模型基本没学到规律。过拟合也是必考概念。比如决策树不限制深度可以完美分类训练集但测试集上一塌糊涂。解决手段有剪枝、加正则项、用交叉验证选参数。我复习时画了一条简化的处理链路“数据标准化 → 切分训练测试集 → 简单模型baseline → 逐步调参 → 交叉验证 → 评估指标对比”这套流程在课程作业里基本是万能壳。2.3 操作系统进程、内存与经典算法操作系统这门课的内容量大但考点非常集中。我统计的2021年山东大学OS真题里四块内容占了绝大部分进程与线程、CPU调度、内存管理、同步互斥与死锁。文件系统和磁盘调度偶尔出现但分值不高。进程和线程的区别是必考。标准答法是进程是资源分配的基本单位线程是CPU调度的基本单位进程之间互相独立线程之间共享进程资源切换进程的开销远大于切换线程因为进程切换涉及地址空间切换线程切换只涉及栈和寄存器。延伸考点还有孤儿进程和僵尸进程孤儿进程被init进程收养僵尸进程是子进程结束但父进程没回收它的返回状态长期存在会消耗进程表项。CPU调度算法的对比我一直建议用浓缩表来记算法特点优点缺点先来先服务 FCFS按到达顺序简单、公平平均等待时间可能很长短作业优先 SJF按运行时间短优先平均等待时间最短长作业可能饥饿时间片轮转 RR按时间片轮流响应快交互性好时间片大小难权衡优先级调度按优先级灵活低优先级可能饥饿考计算题时最关键的是先确认题目是否允许抢占不允许抢占和允许抢占算出来的平均等待时间完全不同。我复习时每一类算法都各算了两遍例题还把SJF的“不可抢占”版本单独标注出来因为出错率非常高。同步互斥这块核心是信号量机制。P操作wait是申请资源V操作signal是释放资源。经典的读者-写者问题和哲学家进餐问题考试偏好考信号量初值设置和代码补全。我踩过的一个坑是把互斥信号量的初值设成0——互斥信号量初值必须是1只有同步信号量比如表示缓冲区空位/满位初值才可以是其他数。死锁是另一个必考点。四个必要条件互斥、持有并等待、不可剥夺、循环等待。处理办法四种预防、避免、检测、解除。其中“避免”的核心是银行家算法考计算题时流程是检查剩余资源够不够满足某个进程的最大需求够就假定分配给它执行完再回收资源依次判断是否所有进程都能完成。这个算法本质上是在模拟“是否存在安全序列”。内存管理里分页和分段要分清。分页是物理上划分固定大小块为了内存利用率分段是逻辑上按模块划分为了便于共享和保护。页面置换算法考FIFO、LRU、OPT。FIFO最简单但可能有Belady异常——分配更多物理块反而缺页更多LRU是最近最久未使用实现成本高但效果接近最优OPT是理论最优的“向后看”算法考试会让你手动模拟页面访问序列算出缺页次数。2.4 数据库从ER模型到事务与索引数据库是四门课里实操性最强的一门。知识点可以分成四层数据模型与ER设计、关系代数和SQL、范式理论、事务与索引。ER模型转关系表是送分题但容易马虎。核心规则只有几条实体转成表实体的属性转成字段一对多关系把“一”那一侧的主键放到“多”那一侧当外键多对多关系必须单独建一张中间表字段是两边的主键合起来。最容易失分的点是一对一关系的处理——是要合并成一张表还是用外键关联取决于两个实体的访问频率访问频率接近就合并。SQL部分是考试大头重点集中在增删改查。查语句的复杂度基本体现在JOIN、子查询、聚合函数的组合使用上。比如“查询每个学生的选课数量且只显示选课数大于2的学生”写法如下SELECT s.student_name, COUNT(c.course_id) AS course_cnt FROM student s LEFT JOIN course_selection c ON s.student_id c.student_id GROUP BY s.student_id, s.student_name HAVING COUNT(c.course_id) 2 ORDER BY course_cnt DESC;这里有三个容易失分的点第一用了GROUP BY之后SELECT里出现的非聚合列必须也出现在GROUP BY里MySQL比较宽松但考试按标准SQL判分第二是“在分组前过滤用WHERE、在分组后过滤用HAVING”这个顺序不能反第三统计“没选课的学生”时用LEFT JOIN条件要写在JOIN的ON后面而不是写在WHERE里否则左连接会退化成内连接。范式理论的核心就是判断关系模式属于第几范式。判断顺序是先找主键再看有没有部分依赖违反2NF再看有没有传递依赖违反3NF再看所有依赖的左侧是否都包含主键违反BCNF。我在笔记里记了一个速查判断表非主属性对主键部分依赖→1NF消除了部分依赖→2NF消除了传递依赖→3NF所有函数依赖左侧都是超键→BCNF。事务和索引是2021年考试里明显加重的部分。事务ACID四个特性必须能展开说原子性靠undo log一致性靠应用逻辑和约束隔离性靠锁或版本控制持久性靠redo log。隔离级别从低到高是读未提交、读已提交、可重复读、串行化每种级别解决了什么问题、还遗留什么问题是简答题高频考点。索引方面最常问的是B树为什么适合做索引——它是多叉树高度低磁盘IO次数少叶子节点形成链表适合范围查询。另外要会看执行计划里的type字段从const到ref到range到ALL走全表扫描时性能最容易出问题。2021年的考题里出现过“数据库连接池的作用”这道简答核心答法是连接池复用连接减少频繁建立/断开连接的开销同时限制并发连接数保护数据库不被打满。3. 试题汇总与个人知识点整理的实操方法3.1 真题汇总的思路从试卷到考点地图很多人拿到历年真题后直接把卷子看一遍就完事这效率太低了。我的做法是先把所有题目“打散”按知识点重新归类再做频次统计。比如数据库这门课我会把卷子里每道题标上它对应的知识点标签是“范式判断”还是“SQL查询”还是“事务隔离级别”然后统计每个标签出现的次数。这样到复习后期一眼就能看出今年大概率考哪里。统计完频次之后我会做一张“考点地图”。横向是四门课的知识点纵向是年份或试卷编号交叉处填题目分值。这样做出来之后高频考点和冷门考点的对比特别清楚。2021年我统计下来数据可视化里图形语法和图表选型占了60%以上的分值OS里调度算法和死锁占了50%以上数据库里SQL和范式占了接近一半数据科学导论里数据清洗和模型评估是绝对重点。既然分值是资源复习时间也该按这个比例分配。我把考点按优先级分成三档第一档是“三年都考”的高频点必须完全掌握连计算题的小数点都不能错第二档是“隔年出现”的中频点至少做到能说清概念和步骤第三档是“只出现过一次”的低频点只需混个脸熟不做深入。这个分档法让我在有限时间内避开了大量低效投入。3.2 我常用的整理工具和模板工具上我主用三件套XMind画思维导图、Markdown写知识点文档、Anki做记忆卡片。思维导图用来搭框架Markdown用来补充细节Anki用来做间隔重复。这三个工具的定位完全不同搭配起来效率才高。Markdown文档我统一用以下模板记录每个知识点知识点名称一句话说明它是什么为什么会考从讲师强调程度和历年频次推断核心内容分条列点带例子易错点我错过的或者同学常错的真题链接哪年哪题考过举个例子数据库里的“隔离级别”我是这么记的读未提交可能读脏数据实现不加共享锁读已提交避免脏读但不可重复读实现语句级快照可重复读避免脏读和不可重复读但可能幻读实现事务级快照串行化最严格避免全部问题实现全表锁或谓词锁易错点MySQL默认隔离级别是可重复读不是读已提交Oracle默认是读已提交Anki卡片我做得非常简洁每张卡只问一个点。比如“页面置换OPT算法全称?”“正规答案是Optimal Page Replacement最优置换算法”。做卡片的过程本身就是一次复习而且卡片数量控制在100张以内不然维护成本太高坚持不下来。3.3 跨课程交叉点考试中容易串起来考的地方我整理到一半时发现有些知识点在不同课程里反复出现只是表述不一样。把这些交叉点单独拎出来复习比孤立地背每一门课效率高得多。第一个交叉点是数据库并发控制和OS进程同步。数据库的锁机制本质上就是多进程访问共享资源时的同步问题——表锁、行锁对应OS里的互斥锁、读写锁死锁检测对应OS里的死锁处理策略。考数据库的“死锁怎么解除”和考OS的“死锁的必要条件”是同一套知识体系放一起记一石二鸟。第二个交叉点是数据科学导论的数据清洗和数据库的数据质量。数据去重、缺失值处理、异常值过滤在数据库课程里叫数据完整性在数据科学导论里叫数据预处理。考试如果出一张脏数据表让你说怎么处理两个角度都能答数据库角度强调约束和外键数据科学角度强调统计填充和异常检测。第三个交叉点是可视化工具和数据库查询的联动。课程设计里最常见的组合是后端从MySQL查数据通过Flask接口返回JSON前端用ECharts渲染。这个流程里涉及的SQL性能问题查询慢、数据格式转换问题JSON结构不对、前后端交互问题跨域每一环都能独立成为考试题。复习时把这整条链路跑通一遍比死记硬背任何概念都有用。4. 复习过程中的常见问题与避坑指南4.1 七类高频易错点速查表整理了这么多资料之后我把最容易出错的点汇总成了一张速查表复习最后一天只看这张表就够了课程易错点正确理解数据可视化饼图适合展示占比饼图不推荐除非类别≤3且差异明显数据可视化ECharts数据格式不对series.data必须是数组不能是对象数据科学导论归一化和标准化混用标准化适合正态分布归一化适合有界数据数据科学导论类别不平衡只看准确率应看精确率、召回率、F1OS互斥信号量初值设0互斥信号量初值必须是1OSSJF忽略抢占条件先看题意是否允许抢占再计算数据库GROUP BY后SELECT列不匹配非聚合列必须出现在GROUP BY中数据库事务隔离级别记混MySQL默认是可重复读不是读已提交这张表我打印出来贴在了书桌前面考前一周每天过一遍。很多同学觉得自己概念都懂一做题就错问题往往就出在这类“细节混淆”上。4.2 实操中踩过的坑整理这份资料的过程中我自己踩了不少坑有四个印象最深写出来供你参考。第一个坑是笔记越做越厚最后变成抄书。最开始我在Markdown里事无巨细地记录所有讲义内容连背景介绍都抄进去结果文档膨胀到上百页根本复习不进去。后来我强制自己设定规则每个知识点不超过5行字能写成表格就写表格能画流程图就画流程图。精简到极致之后复习时反而更容易进入状态。第二个坑是SQL只背不写。我一开始觉得JOIN的写法看懂了就行结果考试时手写SQL各种报错——表名顺序反了、GROUP BY漏列、HAVING用成了WHERE。后来我把课程里的十道经典SQL题反复手写了五遍每次都脱稿写到肌肉记忆为止。数据科学导论的代码也一样别在脑子里跑代码一定要真跑一遍。第三个坑是可视化项目只求“跑通”不求“讲清”。做课程设计时图表是渲染出来了但老师问“为什么选这个视觉通道”“为什么用柱状图不用折线图”时我完全答不上来。后来我补了视觉编码和图形语法的理论课才发现工具只是最后一公里前面的设计思路才是灵魂。考试里如果考图表选型也是考这个不考ECharts的API细节。第四个坑是复习时平均用力。四门课堆在一起很容易每门课每天分两小时结果每门都学不深。我后来改成“两天攻一门”的模式第一天整理框架第二天全力刷题。四门课轮两遍每门都能保证完整的沉浸时间。用这个方法我把OS的调度算法和数据库的SQL手感都练到了闭眼能写的地步。4.3 我踩坑后总结的时间安排建议如果你现在距离考试还有一个月可以参考下面这个四周复习法。第一周做考点频次统计把手头真题全部打散归类摸清重点第二周集中攻克高频考点每天实操写SQL或算调度算法保证手感第三周处理中低频点把这些点压缩成一张速查表反复看第四周全真模拟按考试时间完整做两套题重点练答题速度和格式规范。这个安排的核心是后期绝对不要再看厚笔记只看速查表和错题集。人的短期记忆容量有限考前一周往脑子里塞大量新信息只会造成混乱不如反复巩固已经掌握的内容。我第四次复习时把模拟卷放在周一周三各做一套周二周四就只复盘错误周五轻量过一遍四门课的大纲效率比前期每天刷夜高很多。5. 最后想对后来的同学说的话资料整理这件事最后的赢家不是资料本身而是整理的过程。我花了大概两周时间把四门课的知识点、真题、易错点全部过了一遍并落成文档这两周的收获比之前一学期零散听课要大得多。原因很简单整理倒逼我思考每门课的框架、每道题的意图、每个概念之间的联系。这些思考的痕迹比任何一份现成的笔记都值钱。所以如果你也是计算机方向的学生我建议你拿起手头的课程资料试着按我的方法自己做一份“试题汇总知识点整理”。不一定非要用这四门课其他的也可以。在整理的过程中你会发现那些原来觉得零散的概念慢慢会在你脑海里长成一棵树。等到考试那天看到题目时你想到的不会只是某句话而是整个知识体系在向你招手。如果你需要参考我做的这份2021年山东大学四门课整理文档里的具体例子可以直接用里面提到的算法对比表、SQL示例和复习时间线作为起点。祝复习顺利考试稳过。