202601/重中之重 - 简单和综合应用.md
07844 人工智能导论
- 简单应用
- 命题的谓词符号化
- 用产生式表示规则或事实
- 用框架表示知识
- 用可扩展标记语言XML组织互联网信息
- 用盲目搜索的方法在状态图中求解
- 用决策树算法解决分类问题
- BP学习算法的实现。
- 卷积神经网络的卷积运算
- 用正向推理或逆向推理的方法基于专家系统进行推理
- 局部二值模式LBP算子的计算原理
- 人脸识别的典型流程及每个步骤要达到的目标
- 检索式聊天机器人的系统架构,生成式聊天机器人的模型架构
- 基于知识图谱的问答系统设计
- 智能体用计分投票决策
- 综合应用
- 状态空间的图描述
- 根据给定的启发函数,用启发式搜索的方法在状态图中求解
- BP神经网络在模式识别中的应用
- 根据已知的知识构建基于规则的专家系统知识库,并完成问题的推理
13011 人工智能与大数据
- 简单应用
- Hive的执行流程和Hive编译器的组成
- Hbase数据的逻辑存储模型
- ZooKeeper集群中的五种角色和其功能。
- HDFS中解决各类问题的方法
- HDFS的整体架构图描述
- MapReduce作业提交过程、任务执行过程
- 数据预处理内容和方法
- 相关性及其计算方法
- 灰度图像获取二值形状图像的方法
- 全连接神经网络结构
- 直言推理和换位法的思维推理
- 人脸识别系统流程、多视角人脸检测算法、多视角人脸跟踪算法、多任务决策融合编程架构
- 各种距离度量的计算
- K-均值聚类算法原理
- 综合应用
- HDFS主要流程的实现:客户端到名字节点的文件与目录操作,客户端读文件,客户端端写文件,数据节点的启动和心跳
- MapReduce的计算过程分析
- 人工智能对行业的综合影响分析
- 前向选择算法和后向选择算法
- 基于信息增益的决策树生成
13008 软件质量保证与测试
- 简单应用
- 错误、缺陷和失效
- CMM软件过程成熟度等级
- 六西格玛管理与零缺陷管理区别
- DFSS与DMAIC方法的区别
- SQA过程的实施具体活动
- 软件测试的基本原则
- 测试各工作流程对应的输入、输出及责任人
- 软件测试各模型的优缺点
- 性能测试范围
- 黑盒测试和白盒测试的比较
- 黑盒测试技术的比较与选择
- 缺陷分类步骤
- 白盒测试的实施步骤;语句覆盖及其覆盖率;判定覆盖及其覆盖率;条件覆盖及其覆盖率;
- 测试管理工具功能
- 使用测试执行和评估类工具的目的;关键词驱动测试自动化的主要优点
- 选择测试工具的流程
- 实施软件自动化测试的优点;自动化测试的缺点;自动化测试适用性条件
- 综合应用
- 增量式集成测试
- 数据流分析定义-使用测试
- 基本路径测试
- 基于等价类划分的边界分析法设计测试用例
07844 人工智能导论备考资料
简单应用
命题的谓词符号化
【详细解释】:命题的谓词符号化是将自然语言描述的命题转换为谓词逻辑表达式的过程。谓词逻辑由谓词、个体词和量词组成:谓词表示个体的性质或关系,个体词表示思维对象,量词(∀、∃)表示个体词的数量范围。符号化步骤包括:1. 确定个体词和谓词;2. 确定量词;3. 确定联结词;4. 写出谓词表达式。
自考易错提示:注意全称量词(∀)和存在量词(∃)的区别,全称量词通常对应“所有”“任意”,存在量词对应“存在”“有的”;不要混淆个体词和谓词的位置。
【题型训练】
-
简答题1:简述命题谓词符号化的基本步骤。
参考答案:(1)确定个体词和谓词(2分);(2)确定量词(1分);(3)确定联结词(1分);(4)写出谓词表达式(1分)。 -
简答题2:用谓词逻辑符号化“所有计算机专业的学生都学习人工智能”。
参考答案:设C(x)表示“x是计算机专业的学生”,A(x)表示“x学习人工智能”,则符号化为∀x(C(x)→A(x))(5分)。 -
应用题:将“有的大学生喜欢打篮球,且所有喜欢打篮球的人都身体健康”符号化。
解题步骤:- 确定个体词:x(人)
- 确定谓词:U(x)表示“x是大学生”,B(x)表示“x喜欢打篮球”,H(x)表示“x身体健康”
- 确定量词:“有的”用∃,“所有”用∀
- 确定联结词:“且”用∧,条件用→
- 符号化结果:∃x(U(x)∧B(x))∧∀x(B(x)→H(x))
用产生式表示规则或事实
【详细解释】:产生式表示法是人工智能中常用的知识表示方法,形如“IF 条件 THEN 结论”(或“条件→结论”)。其中,IF部分称为前提或条件,THEN部分称为结论或动作。产生式系统由规则库、综合数据库和推理机三部分组成。规则库存储产生式规则,综合数据库存储当前状态,推理机负责规则的匹配与执行。
自考易错提示:产生式规则的条件和结论要明确,避免模糊表述;注意区分事实性产生式(描述事实)和规则性产生式(描述规则)。
【题型训练】
-
简答题1:简述产生式系统的基本组成。
参考答案:(1)规则库:存储产生式规则(2分);(2)综合数据库:存储当前状态信息(2分);(3)推理机:负责规则的匹配与执行(1分)。 -
简答题2:用产生式规则表示“如果温度高于30℃且湿度低于40%,则开启空调”。
参考答案:IF 温度>30℃ AND 湿度<40% THEN 开启空调(5分)。 -
应用题:构建一个简单的动物识别系统的产生式规则库,用于识别“虎”和“斑马”。
解题步骤:- 确定事实:有毛发、有奶、有蹄、吃肉、黄褐色、有黑色条纹、有黑色斑点、是哺乳动物、是食肉动物、是有蹄类动物
- 构建规则库:
R1: IF 有毛发 THEN 哺乳动物
R2: IF 有奶 THEN 哺乳动物
R3: IF 吃肉 THEN 食肉动物
R4: IF 哺乳动物 AND 食肉动物 AND 黄褐色 AND 有黑色条纹 THEN 虎
R5: IF 哺乳动物 AND 有蹄 AND 有黑色条纹 THEN 斑马 - 验证:当输入“有毛发、吃肉、黄褐色、有黑色条纹”时,可识别出“虎”
用框架表示知识
【详细解释】:框架表示法是一种结构化的知识表示方法,用框架作为基本单位来描述对象。框架由框架名和槽组成,槽用于描述对象的属性,每个槽可以有多个侧面,侧面用于描述属性的具体特征。框架之间可以通过继承关系(ISA槽)实现知识共享。框架表示法适合表示具有固定结构的知识。
自考易错提示:注意框架的层次结构,父框架和子框架的继承关系;区分槽和侧面的概念,槽是对象的属性,侧面是属性的特征。
【题型训练】
-
简答题1:简述框架表示法的基本结构。
参考答案:(1)框架名:标识框架(1分);(2)槽:描述对象的属性(2分);(3)侧面:描述属性的具体特征(2分)。 -
简答题2:什么是框架的继承关系?
参考答案:框架的继承关系是指子框架可以继承父框架的属性和值(2分),通过ISA槽实现(1分),用于知识共享和简化表示(2分)。 -
应用题:用框架表示“计算机专业的学生”的知识。
解题步骤:- 确定框架名:学生
- 确定槽:姓名、年龄、性别、专业、课程
- 确定侧面:每个槽的类型、默认值等
- 构建子框架:计算机专业学生
框架名:<学生> 姓名:槽名,类型:字符串 年龄:槽名,类型:整数,范围:18-30 性别:槽名,类型:枚举,值:男/女 专业:槽名,类型:字符串 课程:槽名,类型:列表 框架名:<计算机专业学生> ISA:<学生> 专业:默认值:计算机科学与技术 课程:默认值:[人工智能, 数据结构, 操作系统]
用可扩展标记语言XML组织互联网信息
【详细解释】:XML(Extensible Markup Language)是一种用于标记电子文件使其具有结构性的标记语言。XML的特点包括:可扩展性、自描述性、平台无关性。XML文档由元素、属性、实体和处理指令组成,元素是XML的基本单位,通过开始标签和结束标签表示。XML用于数据交换、配置文件、Web服务等场景,能够有效地组织和管理互联网信息。
自考易错提示:XML标签必须成对出现,区分大小写;属性值必须用引号括起来;XML文档必须有且仅有一个根元素。
【题型训练】
-
简答题1:简述XML的主要特点。
参考答案:(1)可扩展性:用户可自定义标签(2分);(2)自描述性:数据与结构一起存储(2分);(3)平台无关性:可在不同系统间交换(1分)。 -
简答题2:XML与HTML的主要区别是什么?
参考答案:(1)XML用于数据表示,HTML用于页面显示(2分);(2)XML标签可自定义,HTML标签预定义(2分);(3)XML严格区分大小写,HTML不区分(1分)。 -
应用题:用XML表示一个学生的基本信息,包括姓名、学号、专业和课程列表。
解题步骤:- 确定根元素:<学生信息>
- 确定子元素:<姓名>、<学号>、<专业>、<课程列表>
- 确定课程列表的子元素:<课程>
- 编写XML文档:
<?xml version="1.0" encoding="UTF-8"?> <学生信息> <姓名>张三</姓名> <学号>2021001</学号> <专业>计算机科学与技术</专业> <课程列表> <课程>人工智能</课程> <课程>数据结构</课程> <课程>操作系统</课程> </课程列表> </学生信息>
用盲目搜索的方法在状态图中求解
【详细解释】:盲目搜索又称无信息搜索,是在搜索过程中不使用任何问题相关的启发信息,仅根据搜索策略进行搜索。常用的盲目搜索方法包括:广度优先搜索(BFS)、深度优先搜索(DFS)、迭代加深搜索(IDS)、均匀代价搜索(UCS)。广度优先搜索按层次扩展节点,保证找到最短路径;深度优先搜索优先扩展最深层节点,可能陷入死循环;迭代加深搜索结合了BFS和DFS的优点;均匀代价搜索考虑路径代价,适合非单位代价的情况。
自考易错提示:广度优先搜索和深度优先搜索的区别:BFS按层次扩展,DFS按深度扩展;BFS空间复杂度高,DFS时间复杂度高;BFS能找到最短路径,DFS不能保证。
【题型训练】
-
简答题1:简述广度优先搜索的基本思想。
参考答案:(1)从初始节点开始,按层次依次扩展节点(2分);(2)先扩展完第n层节点,再扩展第n+1层节点(2分);(3)保证找到最短路径(1分)。 -
简答题2:什么是深度优先搜索?其主要缺点是什么?
参考答案:深度优先搜索是优先扩展最深层节点的搜索方法(2分);主要缺点是可能陷入死循环(2分),且不能保证找到最短路径(1分)。 -
应用题:用广度优先搜索求解八数码问题,初始状态为[1,2,3;4,0,5;6,7,8],目标状态为[1,2,3;4,5,6;7,8,0],画出搜索树并说明步骤。
解题步骤:- 定义状态表示:3x3矩阵,0表示空格
- 定义操作符:上下左右移动空格
- 按广度优先扩展节点:
- 层0:初始状态
- 层1:空格右移、下移后的状态
- 层2:扩展层1的每个节点
- 以此类推,直到找到目标状态
- 路径:初始状态 → 空格右移 → 空格下移 → 空格右移 → 空格上移 → 目标状态
用决策树算法解决分类问题
【详细解释】:决策树是一种基于树结构的分类算法,通过一系列规则对数据进行分类。决策树的构建过程包括:1. 选择最优特征作为根节点;2. 根据特征的不同取值分割数据集;3. 对每个子数据集重复上述过程,直到满足停止条件(如所有数据属于同一类别、没有剩余特征等)。常用的特征选择准则包括:信息增益(ID3算法)、信息增益比(C4.5算法)、基尼指数(CART算法)。决策树具有可读性强、不需要特征标准化等优点。
自考易错提示:注意不同决策树算法的特征选择准则:ID3使用信息增益,C4.5使用信息增益比,CART使用基尼指数;决策树容易过拟合,需要进行剪枝处理。
【题型训练】
-
简答题1:简述决策树的构建步骤。
参考答案:(1)选择最优特征作为根节点(2分);(2)根据特征取值分割数据集(1分);(3)对每个子数据集递归构建子树(1分);(4)直到满足停止条件(1分)。 -
简答题2:什么是信息增益?它在决策树中的作用是什么?
参考答案:信息增益是特征A对数据集D的分类不确定性减少的程度(2分);用于选择最优特征,信息增益越大的特征,分类能力越强(3分)。 -
应用题:根据以下数据集,用ID3算法构建决策树,判断一个人是否会购买电脑。
年龄 收入 学生 信用 购买电脑 青年 高 否 一般 否 青年 高 否 好 否 中年 高 否 一般 是 老年 中 否 一般 是 老年 低 是 一般 是 老年 低 是 好 否 中年 低 是 好 是 青年 中 否 一般 否 青年 低 是 一般 是 老年 中 是 一般 是 青年 中 是 好 是 中年 中 否 好 是 中年 高 是 一般 是 老年 中 否 好 否 解题步骤:
- 计算根节点的信息熵:H(D)=-9/14log2(9/14)-5/14log2(5/14)≈0.940
- 计算各特征的信息增益:
- 年龄:H(D|年龄)=0.694,信息增益=0.940-0.694=0.246
- 收入:H(D|收入)=0.911,信息增益=0.940-0.911=0.029
- 学生:H(D|学生)=0.788,信息增益=0.940-0.788=0.152
- 信用:H(D|信用)=0.892,信息增益=0.940-0.892=0.048
- 选择信息增益最大的特征“年龄”作为根节点
- 对“年龄”的每个取值递归构建子树:
- 青年:子数据集有5个样本,2个“是”,3个“否”,继续选择特征
- 中年:子数据集有4个样本,4个“是”,停止
- 老年:子数据集有5个样本,3个“是”,2个“否”,继续选择特征
- 最终决策树:根节点为“年龄”,中年分支直接输出“是”,青年和老年分支继续选择其他特征
BP学习算法的实现
【详细解释】:BP(反向传播)学习算法是一种用于训练多层前馈神经网络的监督学习算法。BP算法的基本思想是通过反向传播误差来调整网络的权值和阈值,使网络的实际输出尽可能接近期望输出。BP算法的实现步骤包括:1. 初始化权值和阈值;2. 前向传播:计算各层神经元的输入和输出;3. 计算误差:输出层与期望输出的差异;4. 反向传播:计算各层的误差信号;5. 更新权值和阈值;6. 重复2-5步,直到满足停止条件。BP算法的核心是梯度下降法,用于最小化损失函数。
自考易错提示:BP算法的学习率设置要合适,过大可能导致震荡,过小可能收敛缓慢;注意前向传播和反向传播的方向,前向传播从输入层到输出层,反向传播从输出层到输入层;激活函数通常使用Sigmoid或ReLU函数。
【题型训练】
-
简答题1:简述BP学习算法的基本步骤。
参考答案:(1)初始化权值和阈值(1分);(2)前向传播计算输出(1分);(3)计算误差(1分);(4)反向传播误差(1分);(5)更新权值和阈值(1分)。 -
简答题2:什么是反向传播?其作用是什么?
参考答案:反向传播是指从输出层开始,将误差信号沿原连接路径反向传播(2分);用于计算各层神经元的误差贡献,进而调整权值和阈值(3分)。 -
应用题:实现一个简单的BP神经网络,用于解决异或问题。
解题步骤:- 设计网络结构:输入层2个神经元,隐藏层2个神经元,输出层1个神经元
- 初始化权值和阈值:随机初始化
- 前向传播:
- 输入层:x1, x2
- 隐藏层:h1 = σ(w11x1 + w12x2 + b1), h2 = σ(w21x1 + w22x2 + b2)
- 输出层:y = σ(v1h1 + v2h2 + b3)
- 计算误差:E = 1/2(y_true - y)^2
- 反向传播:
- 输出层误差:δy = (y_true - y)y(1 - y)
- 隐藏层误差:δh1 = δy v1 h1(1 - h1), δh2 = δy v2 h2(1 - h2)
- 更新权值和阈值:
- v1 += η δy h1, v2 += η δy h2, b3 += η δy
- w11 += η δh1 x1, w12 += η δh1 x2, b1 += η δh1
- w21 += η δh2 x1, w22 += η δh2 x2, b2 += η δh2
- 训练数据:(0,0)→0, (0,1)→1, (1,0)→1, (1,1)→0
- 重复训练直到误差小于阈值
卷积神经网络的卷积运算
【详细解释】:卷积运算(Convolution)是卷积神经网络(CNN)的核心操作,用于提取图像特征。卷积运算的基本思想是用卷积核(滤波器)在输入图像上滑动,计算卷积核与图像局部区域的点积,得到特征图。卷积运算的主要参数包括:卷积核大小、步长(Stride)、填充(Padding)、卷积核数量。卷积运算具有局部连接、参数共享和平移不变性的特点,能够有效地提取图像的空间特征。
自考易错提示:注意卷积运算和互相关运算的区别,卷积运算需要先翻转卷积核,再进行点积;步长是卷积核每次滑动的像素数,填充是在图像边缘添加的像素数,用于保持输出尺寸。
【题型训练】
-
简答题1:简述卷积运算的基本思想。
参考答案:(1)用卷积核在输入图像上滑动(2分);(2)计算卷积核与图像局部区域的点积(2分);(3)得到特征图(1分)。 -
简答题2:卷积运算的主要特点是什么?
参考答案:(1)局部连接:每个神经元只与输入的局部区域连接(2分);(2)参数共享:同一卷积核在整个图像上共享权值(2分);(3)平移不变性:能识别不同位置的相同特征(1分)。 -
应用题:计算以下卷积运算的结果,输入图像为[[1,2,3],[4,5,6],[7,8,9]],卷积核为[[1,0],[-1,0]],步长为1,无填充。
解题步骤:- 确定输入尺寸:3x3
- 确定卷积核尺寸:2x2
- 计算输出尺寸:(3-2)/1 + 1 = 2x2
- 进行卷积运算(注意卷积需要翻转卷积核):
- 卷积核翻转后:[[0,-1],[0,1]]
- 第一个区域:10 + 2(-1) + 40 + 51 = 0-2+0+5=3
- 第二个区域:20 + 3(-1) + 50 + 61 = 0-3+0+6=3
- 第三个区域:40 + 5(-1) + 70 + 81 = 0-5+0+8=3
- 第四个区域:50 + 6(-1) + 80 + 91 = 0-6+0+9=3
- 输出结果:[[3,3],[3,3]]
用正向推理或逆向推理的方法基于专家系统进行推理
【详细解释】:正向推理(数据驱动推理)和逆向推理(目标驱动推理)是专家系统中常用的推理方法。正向推理从已知事实出发,通过匹配规则库中的规则,逐步推出结论;逆向推理从目标假设出发,通过寻找支持假设的证据,验证假设是否成立。正向推理适合已知事实较多的情况,逆向推理适合目标明确的情况。
自考易错提示:正向推理和逆向推理的区别:正向推理从事实到结论,逆向推理从结论到事实;正向推理可能产生多个结论,逆向推理目标明确;正向推理适合诊断类问题,逆向推理适合预测类问题。
【题型训练】
-
简答题1:简述正向推理的基本过程。
参考答案:(1)将已知事实加入综合数据库(1分);(2)匹配规则库中的规则(2分);(3)执行匹配成功的规则,更新综合数据库(1分);(4)重复2-3步,直到推出结论(1分)。 -
简答题2:什么是逆向推理?其主要优点是什么?
参考答案:逆向推理是从目标假设出发,寻找支持假设的证据(2分);主要优点是目标明确(1分),推理效率高(2分)。 -
应用题:基于以下规则库,用正向推理和逆向推理分别诊断“小明感冒了”的结论。
规则库:
R1: IF 发烧 AND 咳嗽 THEN 感冒
R2: IF 头痛 AND 喉咙痛 THEN 感冒
R3: IF 体温>37.5℃ THEN 发烧
R4: IF 咳嗽 THEN 咳嗽
已知事实:小明体温38℃,咳嗽解题步骤:
-
正向推理:
- 已知事实:体温38℃,咳嗽
- 匹配R3:体温>37.5℃→发烧,更新事实:发烧,咳嗽
- 匹配R1:发烧 AND 咳嗽→感冒,推出结论:小明感冒了
-
逆向推理:
- 目标假设:小明感冒了
- 寻找支持感冒的规则:R1或R2
- 验证R1的条件:发烧 AND 咳嗽
- 验证发烧:匹配R3,需要体温>37.5℃,已知小明体温38℃,满足
- 验证咳嗽:已知小明咳嗽,满足
- 验证成功,推出结论:小明感冒了
-
局部二值模式LBP算子的计算原理
【详细解释】:局部二值模式(LBP)是一种用于描述图像局部纹理特征的算子。LBP算子的计算原理是:1. 以图像中每个像素为中心,考虑其周围8个邻域像素(3x3窗口);2. 将邻域像素的灰度值与中心像素的灰度值比较,大于等于中心像素的赋值为1,否则为0;3. 将8个邻域像素的比较结果按顺时针或逆时针方向排列,形成一个8位二进制数,转换为十进制数作为该中心像素的LBP值;4. 统计图像中所有LBP值的直方图,作为图像的纹理特征。LBP算子具有旋转不变性和灰度不变性的特点。
自考易错提示:注意LBP算子的邻域大小,通常使用3x3窗口;旋转不变LBP是将二进制数旋转到最小的十进制值;LBP直方图是图像的全局纹理特征,用于图像分类和识别。
【题型训练】
-
简答题1:简述LBP算子的计算步骤。
参考答案:(1)选择中心像素和邻域像素(1分);(2)比较邻域像素与中心像素的灰度值(2分);(3)生成二进制数并转换为十进制LBP值(1分);(4)统计LBP直方图(1分)。 -
简答题2:LBP算子的主要特点是什么?
参考答案:(1)旋转不变性:能识别不同方向的纹理(2分);(2)灰度不变性:对光照变化不敏感(2分);(3)计算简单:适合实时应用(1分)。 -
应用题:计算以下3x3图像块的LBP值,中心像素为5。
3 4 5 2 5 6 1 0 7解题步骤:
- 确定中心像素:5(位置(1,1))
- 确定邻域像素:3(0,0),4(0,1),5(0,2),6(1,2),7(2,2),0(2,1),1(2,0),2(1,0)
- 比较邻域像素与中心像素的灰度值(>=中心像素为1,否则为0):
- 3 < 5 → 0
- 4 < 5 → 0
- 5 = 5 → 1
- 6 > 5 → 1
- 7 > 5 → 1
- 0 < 5 → 0
- 1 < 5 → 0
- 2 < 5 → 0
- 按顺时针方向排列二进制数:从(0,0)开始,顺时针依次为3,4,5,6,7,0,1,2,对应二进制数为00111000
- 转换为十进制:00111000 → 56
- 该中心像素的LBP值为56
人脸识别的典型流程及每个步骤要达到的目标
【详细解释】:人脸识别的典型流程包括:1. 图像采集:获取人脸图像,目标是获取清晰的人脸图像;2. 人脸检测:从图像中定位人脸区域,目标是准确找到人脸的位置和大小;3. 人脸预处理:对人脸图像进行归一化、灰度化、去噪等处理,目标是提高图像质量;4. 特征提取:提取人脸的特征向量,目标是获取具有判别性的人脸特征;5. 特征匹配:将提取的特征与数据库中的特征进行比对,目标是找到最相似的人脸;6. 识别决策:根据匹配结果做出识别决策,目标是输出识别结果。
自考易错提示:注意人脸检测和人脸识别的区别,人脸检测是定位人脸,人脸识别是身份确认;特征提取是人脸识别的核心步骤,常用方法包括PCA、LBP、深度学习等。
【题型训练】
-
简答题1:简述人脸识别的典型流程。
参考答案:(1)图像采集(1分);(2)人脸检测(1分);(3)人脸预处理(1分);(4)特征提取(1分);(5)特征匹配(1分)。 -
简答题2:人脸预处理的主要目的是什么?包括哪些步骤?
参考答案:主要目的是提高图像质量,便于后续处理(2分);包括归一化(1分)、灰度化(1分)、去噪(1分)等步骤。 -
应用题:设计一个简单的人脸识别系统流程,并说明每个步骤的关键技术。
解题步骤:- 图像采集:使用摄像头获取人脸图像,关键技术:图像传感器技术
- 人脸检测:定位人脸区域,关键技术:Haar特征+Adaboost算法
- 人脸预处理:
- 灰度化:将彩色图像转换为灰度图像
- 归一化:调整图像尺寸和光照
- 去噪:使用高斯滤波去除噪声
- 特征提取:提取人脸特征,关键技术:LBP特征或卷积神经网络
- 特征匹配:与数据库特征比对,关键技术:欧氏距离或余弦相似度
- 识别决策:根据匹配分数判断身份,关键技术:阈值判断
检索式聊天机器人的系统架构,生成式聊天机器人的模型架构
【详细解释】:检索式聊天机器人的系统架构包括:1. 用户输入处理:对用户输入进行分词、词性标注等预处理;2. 意图识别:识别用户的意图;3. 检索模块:从知识库中检索最相关的回复;4. 回复生成:选择最优回复返回给用户。生成式聊天机器人的模型架构包括:1. 编码器:将用户输入转换为向量表示;2. 解码器:根据向量表示生成回复;3. 注意力机制:增强模型对输入的理解;4. 预训练语言模型:如GPT、BERT等,用于提高生成质量。
自考易错提示:检索式聊天机器人和生成式聊天机器人的区别:检索式从现有知识库中选择回复,生成式自动生成新回复;检索式回复准确但灵活性差,生成式回复灵活但可能不准确。
【题型训练】
-
简答题1:简述检索式聊天机器人的系统架构。
参考答案:(1)用户输入处理(1分);(2)意图识别(1分);(3)检索模块(2分);(4)回复生成(1分)。 -
简答题2:生成式聊天机器人的核心技术是什么?
参考答案:(1)编码器-解码器架构(2分);(2)注意力机制(1分);(3)预训练语言模型(2分)。 -
应用题:比较检索式聊天机器人和生成式聊天机器人的优缺点。
解题步骤:-
检索式聊天机器人:
- 优点:回复准确(2分),响应速度快(1分),易于控制(1分)
- 缺点:灵活性差(2分),依赖知识库大小(1分),无法处理未知问题(1分)
-
生成式聊天机器人:
- 优点:灵活性强(2分),能生成新回复(1分),处理未知问题能力强(1分)
- 缺点:回复可能不准确(2分),生成速度慢(1分),难以控制(1分)
-
基于知识图谱的问答系统设计
【详细解释】:基于知识图谱的问答系统(KBQA)是利用知识图谱中的结构化知识来回答用户问题的系统。KBQA的设计包括:1. 问题分析:对用户问题进行分词、词性标注、实体识别、关系抽取等处理;2. 查询构建:将自然语言问题转换为知识图谱的查询语言(如SPARQL);3. 知识图谱查询:在知识图谱中执行查询,获取答案;4. 答案生成:将查询结果转换为自然语言回复。知识图谱是KBQA的核心,用于存储实体、关系和属性的结构化知识。
自考易错提示:注意知识图谱的基本组成:实体(节点)、关系(边)、属性(节点的特征);SPARQL是知识图谱的查询语言,用于查询实体和关系;实体识别和关系抽取是KBQA的关键技术。
【题型训练】
-
简答题1:简述基于知识图谱的问答系统的基本流程。
参考答案:(1)问题分析(1分);(2)查询构建(2分);(3)知识图谱查询(1分);(4)答案生成(1分)。 -
简答题2:什么是知识图谱?其在问答系统中的作用是什么?
参考答案:知识图谱是存储实体、关系和属性的结构化知识库(2分);在问答系统中用于提供结构化知识(1分),支持准确的查询和推理(2分)。 -
应用题:设计一个基于知识图谱的问答系统,用于回答“姚明的出生地是哪里?”
解题步骤:- 知识图谱构建:包含实体“姚明”,属性“出生地”,值“上海”
- 问题分析:
- 实体识别:“姚明”
- 关系抽取:“出生地”
- 查询构建:转换为SPARQL查询:
SELECT ?birthplace WHERE { 姚明 :出生地 ?birthplace } - 知识图谱查询:执行SPARQL查询,获取结果“上海”
- 答案生成:返回“姚明的出生地是上海”
智能体用计分投票决策
【详细解释】:智能体用计分投票决策是指多个智能体通过投票的方式集体做出决策的过程。计分投票决策的步骤包括:1. 确定决策问题和候选方案;2. 每个智能体对候选方案进行评分;3. 计算每个候选方案的总得分;4. 选择总得分最高的方案作为集体决策。计分投票决策的优点是能充分反映每个智能体的偏好,缺点是可能受到极端评分的影响。常用的计分方法包括简单多数、加权多数、Borda计数等。
自考易错提示:注意计分投票和多数投票的区别,计分投票允许对多个方案评分,多数投票只能选择一个方案;加权多数投票中,不同智能体的投票权重可能不同,用于反映智能体的重要性。
【题型训练】
-
简答题1:简述智能体计分投票决策的基本步骤。
参考答案:(1)确定决策问题和候选方案(1分);(2)智能体对方案评分(2分);(3)计算总得分(1分);(4)选择最高得分方案(1分)。 -
简答题2:什么是加权多数投票?其作用是什么?
参考答案:加权多数投票是指不同智能体的投票具有不同权重(2分);作用是反映智能体的重要性差异(3分)。 -
应用题:三个智能体(权重分别为3、2、1)对两个候选方案(A和B)进行评分(1-5分),智能体1给A打5分,B打3分;智能体2给A打4分,B打5分;智能体3给A打3分,B打4分。计算加权总得分并确定最终方案。
解题步骤:- 确定智能体权重:W1=3, W2=2, W3=1
- 确定评分:
- 智能体1:A=5, B=3
- 智能体2:A=4, B=5
- 智能体3:A=3, B=4
- 计算加权总得分:
- 方案A:53 + 42 + 3*1 = 15 + 8 + 3 = 26
- 方案B:33 + 52 + 4*1 = 9 + 10 + 4 = 23
- 确定最终方案:方案A加权总得分26,方案B加权总得分23,选择方案A
综合应用
状态空间的图描述
【详细解释】:状态空间的图描述是将问题的状态空间表示为有向图的过程。状态空间由状态集合、操作符集合和初始状态、目标状态组成。状态图中的节点表示状态,边表示操作符,边的权重表示操作的代价。状态空间的图描述步骤包括:1. 定义状态表示;2. 定义操作符;3. 确定初始状态和目标状态;4. 绘制状态图。状态空间的图描述是搜索算法的基础,用于求解路径规划、游戏等问题。
自考易错提示:注意状态和操作符的定义要准确,状态表示要包含问题的所有关键信息;操作符是状态之间的转换规则,要明确操作的条件和结果;状态图的复杂度与问题的规模相关,规模过大时需要使用启发式搜索。
【题型训练】
-
简答题1:简述状态空间图描述的基本组成。
参考答案:(1)状态集合(1分);(2)操作符集合(2分);(3)初始状态(1分);(4)目标状态(1分)。 -
简答题2:什么是状态?什么是操作符?
参考答案:状态是问题在某一时刻的快照,包含问题的所有关键信息(2分);操作符是状态之间的转换规则,用于将一个状态转换为另一个状态(3分)。 -
应用题:用状态空间图描述“狼、羊、菜”问题,农夫要把狼、羊、菜运到对岸,每次只能运一样,狼和羊不能单独在一起,羊和菜不能单独在一起。
解题步骤:- 状态定义:用四元组(农夫,狼,羊,菜)表示,0表示在原岸,1表示在对岸
- 初始状态:(0,0,0,0)
- 目标状态:(1,1,1,1)
- 操作符:
- 农夫单独过河:(0,x,y,z)→(1,x,y,z)
- 农夫带狼过河:(0,0,y,z)→(1,1,y,z)
- 农夫带羊过河:(0,x,0,z)→(1,x,1,z)
- 农夫带菜过河:(0,x,y,0)→(1,x,y,1)
- 绘制状态图:
- 初始状态(0,0,0,0)
- 扩展操作符:只能带羊过河,得到(1,0,1,0)
- 农夫单独返回:(0,0,1,0)
- 带狼过河:(1,1,1,0)→但狼和羊在对岸,不符合条件
- 带菜过河:(1,0,1,1)→但羊和菜在对岸,不符合条件
- 正确路径:(0,0,0,0)→(1,0,1,0)→(0,0,1,0)→(1,1,1,0)→(0,1,0,0)→(1,1,0,1)→(0,1,0,1)→(1,1,1,1)
根据给定的启发函数,用启发式搜索的方法在状态图中求解
【详细解释】:启发式搜索是利用启发函数引导搜索方向的搜索方法,通过评估节点的启发值来选择最优扩展节点。常用的启发式搜索算法包括:A算法、贪婪最佳优先搜索(GBFS)、迭代加深A算法(IDA*)。A算法的评价函数f(n)=g(n)+h(n),其中g(n)是从初始节点到n的实际代价,h(n)是从n到目标节点的估计代价。启发函数h(n)必须满足可采纳性(h(n)≤h(n),h*(n)是实际代价)和单调性(h(n)≤c(n,n’)+h(n’)),才能保证A*算法找到最优路径。
自考易错提示:注意启发函数的可采纳性和单调性,可采纳性保证找到最优路径,单调性保证无需重新扩展节点;A算法和GBFS的区别,A考虑实际代价和估计代价,GBFS只考虑估计代价。
【题型训练】
-
简答题1:简述A*算法的基本思想。
参考答案:(1)使用评价函数f(n)=g(n)+h(n)评估节点(2分);(2)g(n)是实际代价,h(n)是估计代价(2分);(3)选择f(n)最小的节点扩展(1分)。 -
简答题2:什么是启发函数的可采纳性?
参考答案:启发函数的可采纳性是指h(n)≤h*(n)(2分),其中h*(n)是节点n到目标节点的实际代价(2分),保证A*算法找到最优路径(1分)。 -
应用题:用A*算法求解八数码问题,初始状态为[1,2,3;4,0,5;6,7,8],目标状态为[1,2,3;4,5,6;7,8,0],启发函数h(n)为不在位的数码个数。
解题步骤:- 状态表示:3x3矩阵,0表示空格
- 初始状态:[1,2,3;4,0,5;6,7,8],g(n)=0,h(n)=3(0、5、8不在位),f(n)=3
- 扩展节点:
- 空格右移:[1,2,3;4,5,0;6,7,8],g=1,h=2(0、8不在位),f=3
- 空格下移:[1,2,3;4,7,5;6,0,8],g=1,h=4(0、7、8、5不在位),f=5
- 选择f(n)最小的节点扩展:空格右移后的状态
- 继续扩展:
- 空格下移:[1,2,3;4,5,8;6,7,0],g=2,h=1(0不在位),f=3
- 空格左移:回到初始状态,忽略
- 选择f(n)最小的节点扩展:空格下移后的状态
- 扩展目标状态:空格左移得到目标状态,g=3,h=0,f=3
- 路径:初始状态 → 空格右移 → 空格下移 → 空格左移 → 目标状态
BP神经网络在模式识别中的应用
【详细解释】:BP神经网络在模式识别中的应用包括图像识别、语音识别、文本分类等。BP神经网络用于模式识别的步骤包括:1. 数据预处理:对输入数据进行归一化、特征提取等处理;2. 网络设计:确定输入层、隐藏层、输出层的神经元数量;3. 网络训练:使用BP算法训练网络,调整权值和阈值;4. 模式识别:将测试数据输入训练好的网络,得到识别结果。BP神经网络在模式识别中的优点是能自动学习特征,适应复杂的模式识别任务;缺点是训练时间长,容易过拟合。
自考易错提示:注意BP神经网络的结构设计,输入层神经元数量等于特征维度,输出层神经元数量等于类别数;数据预处理的重要性,归一化能提高训练效率;过拟合的解决方法包括正则化、dropout、早停等。
【题型训练】
-
简答题1:简述BP神经网络在模式识别中的应用步骤。
参考答案:(1)数据预处理(1分);(2)网络设计(2分);(3)网络训练(1分);(4)模式识别(1分)。 -
简答题2:BP神经网络在模式识别中的优点是什么?
参考答案:(1)能自动学习特征(2分);(2)适应复杂的模式识别任务(2分);(3)非线性映射能力强(1分)。 -
应用题:设计一个BP神经网络用于手写数字识别。
解题步骤:- 数据预处理:
- 输入数据:28x28像素的手写数字图像,转换为784维向量
- 归一化:将像素值从0-255转换为0-1
- 标签:使用one-hot编码,如数字0表示为[1,0,0,0,0,0,0,0,0,0]
- 网络设计:
- 输入层:784个神经元
- 隐藏层:128个神经元,激活函数ReLU
- 输出层:10个神经元,激活函数Softmax
- 网络训练:
- 损失函数:交叉熵损失
- 优化器:Adam优化器
- 训练数据:MNIST数据集
- 训练轮次:10轮
- 模式识别:
- 输入测试图像
- 前向传播计算输出
- 选择输出概率最大的类别作为识别结果
- 评估:使用测试集评估识别准确率
- 数据预处理:
根据已知的知识构建基于规则的专家系统知识库,并完成问题的推理
【详细解释】:基于规则的专家系统由知识库、综合数据库、推理机、解释器、知识获取机构和人机界面组成。构建基于规则的专家系统知识库的步骤包括:1. 知识获取:从领域专家获取知识;2. 知识表示:将知识转换为产生式规则;3. 知识存储:将规则存储到知识库中;4. 知识维护:对知识库进行更新和维护。问题推理的步骤包括:1. 输入问题;2. 匹配规则;3. 执行推理;4. 输出结果。基于规则的专家系统适合处理结构化、确定性的知识,常用于诊断、预测等领域。
自考易错提示:注意知识库和综合数据库的区别,知识库存储规则,综合数据库存储当前状态;推理机的工作原理,包括正向推理和逆向推理;知识获取是专家系统构建的瓶颈,需要与领域专家密切合作。
【题型训练】
-
简答题1:简述基于规则的专家系统的基本组成。
参考答案:(1)知识库(1分);(2)综合数据库(1分);(3)推理机(2分);(4)解释器(1分);(5)知识获取机构(1分);(6)人机界面(1分)。 -
简答题2:构建基于规则的专家系统知识库的步骤是什么?
参考答案:(1)知识获取(2分);(2)知识表示(1分);(3)知识存储(1分);(4)知识维护(1分)。 -
应用题:构建一个基于规则的专家系统,用于诊断“发烧”的原因。
解题步骤:- 知识获取:从医生处获取发烧的诊断知识
- 构建知识库:
R1: IF 发烧 AND 咳嗽 AND 喉咙痛 THEN 感冒 R2: IF 发烧 AND 头痛 AND 肌肉酸痛 THEN 流感 R3: IF 发烧 AND 腹痛 AND 腹泻 THEN 肠胃炎 R4: IF 发烧 AND 咳嗽 AND 呼吸困难 THEN 肺炎 R5: IF 体温>37.5℃ THEN 发烧 - 综合数据库:存储患者症状,如体温38℃,咳嗽,喉咙痛
- 推理过程:
- 输入症状:体温38℃,咳嗽,喉咙痛
- 匹配R5:体温>37.5℃→发烧,更新数据库:发烧,咳嗽,喉咙痛
- 匹配R1:发烧 AND 咳嗽 AND 喉咙痛→感冒
- 推理结果:患者感冒
- 解释:解释推理过程,说明为什么诊断为感冒
- 知识维护:根据新的医学知识更新规则库
13011 人工智能与大数据备考资料
简单应用
Hive的执行流程和Hive编译器的组成
Map(映射) + Reduce(归约)。
定义:它是一种分布式计算框架。它的核心思想是把一个巨大的计算任务,拆解成无数个小任务,分配给成百上千台电脑同时处理(Map 阶段),然后把结果汇总起来(Reduce 阶段)。
Hive 本身不直接干活。当你写了一条 SQL 语句给 Hive,Hive 会把这条 SQL 翻译成一系列的 MapReduce 任务,然后交给 Hadoop 去执行。
【详细解释】:Hive是基于Hadoop的数据仓库工具,将SQL语句转换为MapReduce任务执行。Hive的执行流程包括:1. 解析阶段:将SQL语句解析为抽象语法树(AST);2. 语义分析阶段:检查表、列的存在性,验证数据类型;3. 逻辑计划生成阶段:将AST转换为逻辑查询计划;4. 逻辑优化阶段:优化逻辑计划;5. 物理计划生成阶段:将优化后的逻辑计划转换为物理执行计划(MapReduce任务);6. 物理优化阶段:优化物理计划;7. 执行阶段:提交任务到Hadoop集群执行。Hive编译器由词法分析器、语法分析器、语义分析器、逻辑计划生成器、优化器、物理计划生成器组成。
自考易错提示:注意Hive执行流程的各个阶段顺序,从解析到执行;Hive编译器的组成部分,特别是逻辑优化和物理优化的区别;Hive将SQL转换为MapReduce任务,不是直接执行SQL。
【题型训练】
-
简答题1:简述Hive的执行流程。
参考答案:(1)解析阶段(1分);(2)语义分析阶段(1分);(3)逻辑计划生成阶段(1分);(4)逻辑优化阶段(1分);(5)物理计划生成阶段(1分);(6)物理优化阶段(1分);(7)执行阶段(1分)。 -
简答题2:Hive编译器由哪些部分组成?
参考答案:(1)词法分析器(1分);(2)语法分析器(1分);(3)语义分析器(1分);(4)逻辑计划生成器(1分);(5)优化器(1分);(6)物理计划生成器(1分)。 -
应用题:说明Hive如何将"SELECT COUNT(*) FROM student WHERE age > 18"转换为MapReduce任务。
解题步骤:- 解析阶段:将SQL解析为AST
- 语义分析阶段:检查student表、age列是否存在,验证age的数据类型
- 逻辑计划生成阶段:生成逻辑查询计划:扫描student表 → 过滤age>18 → 计数
- 逻辑优化阶段:将过滤操作下推,减少扫描数据量
- 物理计划生成阶段:
- Map阶段:扫描student表,过滤age>18的记录,输出键为常量,值为1
- Reduce阶段:汇总所有值,计算总数
- 物理优化阶段:选择合适的分区、排序策略
- 执行阶段:提交MapReduce任务到Hadoop集群执行,返回结果
Hbase数据的逻辑存储模型
【详细解释】:HBase是基于Hadoop的分布式列存储数据库,其逻辑存储模型是一个多维稀疏映射表,由行键(Row Key)、列族(Column Family)、列限定符(Column Qualifier)、时间戳(Timestamp)和单元格值(Value)组成。行键是唯一的,用于快速检索数据;列族是列的集合,同一列族的列存储在同一文件中;列限定符是列族中的具体列;时间戳用于版本控制,每个单元格可以存储多个版本的数据;单元格值是实际存储的数据。HBase的数据按行键字典序排列,支持随机读写和范围查询。
自考易错提示:注意HBase的逻辑存储模型组成部分,特别是行键、列族、列限定符、时间戳的作用;HBase是列存储数据库,不是行存储;行键的设计很重要,直接影响查询性能。
【题型训练】
-
简答题1:简述HBase数据的逻辑存储模型组成。
参考答案:(1)行键(Row Key)(1分);(2)列族(Column Family)(1分);(3)列限定符(Column Qualifier)(1分);(4)时间戳(Timestamp)(1分);(5)单元格值(Value)(1分)。 -
简答题2:HBase的行键有什么作用?
参考答案:(1)唯一标识一行数据(2分);(2)用于快速检索数据(2分);(3)决定数据在集群中的分布(1分)。 -
应用题:设计一个HBase表存储学生信息,包括基本信息(姓名、年龄、性别)和成绩信息(语文、数学、英语)。
解题步骤:- 表名:student
- 行键:学号(如2021001)
- 列族设计:
- basic_info:存储基本信息
- 列限定符:name(姓名)、age(年龄)、gender(性别)
- score_info:存储成绩信息
- 列限定符:chinese(语文)、math(数学)、english(英语)
- basic_info:存储基本信息
- 时间戳:自动生成,用于版本控制
- 示例数据:
Row Key: 2021001 basic_info:name → 张三 basic_info:age → 20 basic_info:gender → 男 score_info:chinese → 85 score_info:math → 90 score_info:english → 88 - 查询示例:通过学号查询学生信息,通过列族快速过滤数据
ZooKeeper集群中的五种角色和其功能
【详细解释】:ZooKeeper是分布式协调服务,集群中有五种角色:1. Leader(领导者):负责协调集群中的所有操作,处理写请求,维护集群状态;2. Follower(跟随者):处理读请求,参与投票选举Leader,转发写请求给Leader;3. Observer(观察者):处理读请求,不参与投票选举,转发写请求给Leader,用于扩展读性能;4. Client(客户端):连接到ZooKeeper服务器,发送请求;5. Ensemble(集合体):ZooKeeper服务器集合,通常由奇数个节点组成(3、5、7等)。ZooKeeper的核心功能包括:分布式锁、配置管理、命名服务、集群管理等。
自考易错提示:注意Leader、Follower、Observer的区别,Leader负责写请求和协调,Follower参与投票,Observer不参与投票;ZooKeeper集群通常由奇数个节点组成,以避免脑裂问题;Client是客户端,不是服务器角色。
【题型训练】
-
简答题1:简述ZooKeeper集群中的五种角色及其功能。
参考答案:(1)Leader:负责协调集群,处理写请求(1分);(2)Follower:处理读请求,参与投票(1分);(3)Observer:处理读请求,不参与投票(1分);(4)Client:连接服务器,发送请求(1分);(5)Ensemble:服务器集合(1分)。 -
简答题2:ZooKeeper集群为什么通常由奇数个节点组成?
参考答案:(1)避免脑裂问题(2分);(2)少数服从多数原则下,奇数个节点可以用更少的节点达成共识(3分)。 -
应用题:设计一个ZooKeeper集群架构,用于支持高读高写的分布式系统。
解题步骤:- 集群规模:7个节点(3个Leader/Follower,4个Observer)
- 角色分配:
- Leader:1个,负责协调和写请求
- Follower:2个,参与投票和处理读请求
- Observer:4个,只处理读请求,不参与投票
- 部署策略:
- Leader和Follower部署在不同机架,提高可靠性
- Observer部署在靠近客户端的节点,提高读性能
- 功能应用:
- 分布式锁:使用临时节点实现
- 配置管理:存储系统配置,实时通知变化
- 服务发现:注册服务信息,客户端查询服务地址
- 优势:奇数个Leader/Follower避免脑裂,Observer扩展读性能
HDFS中解决各类问题的方法
【详细解释】:HDFS(Hadoop分布式文件系统)用于解决大数据存储问题,针对各类问题的解决方法包括:1. 大数据存储问题:采用分布式存储,将大文件分割成块(默认128MB)存储在多个数据节点;2. 可靠性问题:数据块副本机制(默认3个副本),放置在不同节点和机架;3. 可用性问题:心跳机制,数据节点定期向名字节点发送心跳,名字节点检测节点状态;4. 一致性问题:采用WAL(Write-Ahead Log)确保数据写入的原子性;5. 性能问题:数据本地化,任务尽量在数据所在节点执行,减少网络传输;6. 扩展性问题:横向扩展,添加新数据节点即可扩展存储容量和计算能力。
自考易错提示:注意HDFS解决各类问题的具体方法,特别是数据块副本机制、心跳机制、数据本地化的作用;HDFS的块大小默认为128MB,不是越小越好;HDFS适合存储大文件,不适合存储大量小文件。
【题型训练】
-
简答题1:简述HDFS解决可靠性问题的方法。
参考答案:(1)数据块副本机制(2分);(2)默认3个副本(1分);(3)副本放置策略(1分);(4)数据校验和(1分)。 -
简答题2:HDFS如何解决性能问题?
参考答案:(1)数据本地化(2分);(2)大文件分割成块存储(1分);(3)并行处理(2分)。 -
应用题:分析HDFS如何解决数据丢失问题,并说明具体机制。
解题步骤:- 数据块副本机制:
- 默认3个副本
- 副本放置策略:一个在本地节点,一个在同机架其他节点,一个在不同机架节点
- 心跳机制:
- 数据节点每3秒向名字节点发送心跳
- 名字节点超过10分钟未收到心跳,认为节点故障
- 副本恢复机制:
- 名字节点检测到副本数量不足时,启动副本复制
- 选择合适的节点复制副本
- 数据校验和:
- 每个数据块生成校验和
- 客户端读取数据时验证校验和
- 发现损坏数据块时,请求其他副本
- 数据块副本机制:
HDFS的整体架构图描述
【详细解释】:HDFS采用主从架构,由名字节点(NameNode)、数据节点(DataNode)和客户端(Client)组成。名字节点是主节点,负责管理文件系统的命名空间,维护文件和目录的元数据,包括文件名、目录结构、文件权限、文件块列表及位置信息。数据节点是从节点,负责存储实际的数据块,执行数据块的读写操作,定期向名字节点发送心跳和块报告。客户端是用户与HDFS交互的接口,负责文件的读写请求,与名字节点交互获取元数据,与数据节点交互读写数据。HDFS的架构图通常包含:名字节点、数据节点集群、客户端,以及它们之间的通信关系。
自考易错提示:注意HDFS的主从架构组成,名字节点和数据节点的职责;名字节点存储元数据,不存储实际数据;数据节点存储实际数据块,定期向名字节点发送心跳。
【题型训练】
-
简答题1:简述HDFS的整体架构组成。
参考答案:(1)名字节点(NameNode)(2分);(2)数据节点(DataNode)(2分);(3)客户端(Client)(1分)。 -
简答题2:名字节点的主要职责是什么?
参考答案:(1)管理命名空间(1分);(2)维护元数据(2分);(3)管理数据块副本(1分);(4)处理客户端请求(1分)。 -
应用题:绘制HDFS的整体架构图,并说明各组件之间的交互关系。
解题步骤:- 架构图组件:
- 名字节点(NameNode):主节点
- 数据节点集群(DataNode Cluster):3个数据节点
- 客户端(Client):用户接口
- 交互关系:
- 客户端→名字节点:请求文件元数据、创建/删除文件等
- 名字节点→客户端:返回元数据信息
- 客户端→数据节点:读写数据块
- 数据节点→名字节点:发送心跳、块报告
- 数据流程:
- 写数据:客户端→名字节点请求上传位置→名字节点返回数据节点列表→客户端→数据节点写入数据→数据节点复制副本
- 读数据:客户端→名字节点请求文件位置→名字节点返回数据节点列表→客户端→数据节点读取数据
- 架构图组件:
MapReduce作业提交过程、任务执行过程
【详细解释】:MapReduce是Hadoop的分布式计算框架,作业提交过程包括:1. 客户端提交作业到资源管理器(ResourceManager);2. 资源管理器为作业分配应用程序管理器(ApplicationMaster);3. 应用程序管理器向资源管理器申请资源;4. 资源管理器分配容器(Container)给应用程序管理器;5. 应用程序管理器启动任务管理器(TaskManager)执行Map和Reduce任务。任务执行过程包括:Map阶段和Reduce阶段。Map阶段:1. 读取输入数据;2. 分割数据;3. 映射操作;4. 排序和分组。Reduce阶段:1. 读取Map输出;2. 合并和排序;3. 归约操作;4. 输出结果。
自考易错提示:注意MapReduce作业提交过程的各个阶段,特别是资源管理器、应用程序管理器、任务管理器的作用;Map阶段和Reduce阶段的具体步骤,包括排序和分组的位置;MapReduce的Shuffle过程,包括Map的输出排序和Reduce的输入合并。
【题型训练】
-
简答题1:简述MapReduce作业的提交过程。
参考答案:(1)客户端提交作业到资源管理器(1分);(2)资源管理器分配应用程序管理器(1分);(3)应用程序管理器申请资源(1分);(4)资源管理器分配容器(1分);(5)启动任务管理器执行任务(1分)。 -
简答题2:MapReduce任务执行过程包括哪两个主要阶段?每个阶段的主要步骤是什么?
参考答案:(1)Map阶段:读取数据、分割、映射、排序分组(2分);(2)Reduce阶段:读取Map输出、合并排序、归约、输出结果(3分)。 -
应用题:分析WordCount程序的MapReduce执行过程。
解题步骤:- 作业提交:
- 客户端提交WordCount作业到ResourceManager
- ResourceManager分配ApplicationMaster
- ApplicationMaster申请资源,启动TaskManager
- Map阶段:
- 输入:文本文件
- 分割:按块分割文件
- 映射:将每行文本分割为单词,输出<单词,1>
- 排序分组:按单词排序,相同单词的<单词,1>分组
- Shuffle过程:
- Map输出写入本地磁盘
- Reduce拉取Map输出
- Reduce阶段:
- 合并排序:合并相同单词的记录
- 归约:对每个单词的计数求和
- 输出:<单词,总次数>
- 结果:输出每个单词的出现次数
- 作业提交:
数据预处理内容和方法
【详细解释】:数据预处理是指在数据分析前对原始数据进行处理,提高数据质量和分析效果。数据预处理的内容包括:1. 数据清洗:处理缺失值、异常值、重复值;2. 数据集成:将多个数据源合并;3. 数据转换:数据类型转换、标准化、归一化、离散化;4. 数据降维:减少特征维度,如PCA、LDA;5. 数据采样:处理不平衡数据,如过采样、欠采样。常用的数据预处理方法包括:1. 缺失值处理:删除法、替换法(均值、中位数、众数)、插值法;2. 异常值处理:3σ原则、箱线图法;3. 标准化:z-score标准化;4. 归一化:min-max归一化;5. 特征选择:过滤法、包装法、嵌入法。
自考易错提示:注意数据预处理的内容和方法的区别,内容是预处理的类型,方法是具体的处理技术;缺失值处理的不同方法适用场景,如删除法适用于缺失值少的情况;标准化和归一化的区别,标准化不改变数据分布,归一化将数据映射到[0,1]区间。
【题型训练】
-
简答题1:简述数据预处理的主要内容。
参考答案:(1)数据清洗(1分);(2)数据集成(1分);(3)数据转换(1分);(4)数据降维(1分);(5)数据采样(1分)。 -
简答题2:数据清洗包括哪些处理?
参考答案:(1)处理缺失值(2分);(2)处理异常值(2分);(3)处理重复值(1分)。 -
应用题:对以下数据集进行预处理,包含缺失值、异常值和数据转换。
学生ID 年龄 成绩 性别 1 18 85 男 2 20 92 女 3 19 78 男 4 25 65 女 5 null 88 男 6 17 150 女 7 21 72 null 8 19 80 男 解题步骤:
- 数据清洗:
- 缺失值处理:
- 年龄缺失(ID=5):用均值替换,均值=(18+20+19+25+17+21+19)/7≈19.86→20
- 性别缺失(ID=7):用众数替换,众数=男
- 异常值处理:
- 成绩异常(ID=6,150分):用中位数替换,中位数=81
- 缺失值处理:
- 数据转换:
- 性别编码:男=0,女=1
- 成绩标准化:z-score标准化,z=(x-μ)/σ
- 处理后数据集:
学生ID 年龄 成绩 性别 1 18 85 0 2 20 92 1 3 19 78 0 4 25 65 1 5 20 88 0 6 17 81 1 7 21 72 0 8 19 80 0
- 数据清洗:
相关性及其计算方法
【详细解释】:相关性是指两个变量之间的关联程度,常用的相关性计算方法包括:1. 皮尔逊相关系数(Pearson Correlation Coefficient):衡量两个连续变量之间的线性相关程度,取值范围[-1,1],1表示完全正相关,-1表示完全负相关,0表示无线性相关;2. 斯皮尔曼等级相关系数(Spearman Rank Correlation):衡量两个变量的等级之间的相关程度,适用于非线性关系或有序分类变量;3. 肯德尔等级相关系数(Kendall Rank Correlation):衡量两个变量的一致性程度,适用于有序分类变量。皮尔逊相关系数的计算公式为:r = Cov(X,Y) / (σX * σY),其中Cov(X,Y)是协方差,σX和σY是标准差。
自考易错提示:注意不同相关性计算方法的适用场景,皮尔逊适用于连续变量的线性相关,斯皮尔曼适用于等级变量;相关性不等于因果关系,不能通过相关性推断因果;皮尔逊相关系数的取值范围是[-1,1],绝对值越大,相关性越强。
【题型训练】
-
简答题1:简述皮尔逊相关系数的计算方法和适用场景。
参考答案:(1)计算公式:r = Cov(X,Y) / (σX * σY)(2分);(2)适用场景:连续变量的线性相关分析(3分)。 -
简答题2:列举三种常用的相关性计算方法。
参考答案:(1)皮尔逊相关系数(2分);(2)斯皮尔曼等级相关系数(2分);(3)肯德尔等级相关系数(1分)。 -
应用题:计算以下两个变量的皮尔逊相关系数,分析它们的相关性。
X: [1, 2, 3, 4, 5]
Y: [2, 4, 6, 8, 10]解题步骤:
- 计算均值:
- μX = (1+2+3+4+5)/5 = 3
- μY = (2+4+6+8+10)/5 = 6
- 计算协方差Cov(X,Y):
- Cov(X,Y) = [(1-3)(2-6) + (2-3)(4-6) + (3-3)(6-6) + (4-3)(8-6) + (5-3)(10-6)] / (5-1)
- = [(-2)(-4) + (-1)(-2) + 00 + 12 + 2*4] / 4
- = (8 + 2 + 0 + 2 + 8) / 4 = 20 / 4 = 5
- 计算标准差σX和σY:
- σX = √[((1-3)² + (2-3)² + (3-3)² + (4-3)² + (5-3)²)/(5-1)] = √(4+1+0+1+4)/4 = √10/4 ≈ 1.581
- σY = √[((2-6)² + (4-6)² + (6-6)² + (8-6)² + (10-6)²)/(5-1)] = √(16+4+0+4+16)/4 = √40/4 ≈ 3.162
- 计算皮尔逊相关系数r:
- r = 5 / (1.581 * 3.162) ≈ 5 / 5 ≈ 1
- 结论:X和Y的皮尔逊相关系数为1,存在完全正线性相关。
- 计算均值:
灰度图像获取二值形状图像的方法
【详细解释】:灰度图像是指每个像素用0-255的灰度值表示的图像,二值图像是指像素值只有0和255(黑和白)的图像。从灰度图像获取二值形状图像的方法是阈值分割,包括:1. 全局阈值法:使用固定阈值对整个图像进行分割;2. 局部阈值法:使用局部区域的阈值对图像进行分割,适用于光照不均匀的图像;3. 自适应阈值法:根据局部区域的均值或高斯加权均值确定阈值;4. Otsu阈值法(最大类间方差法):自动选择阈值,使前景和背景的类间方差最大。阈值分割的步骤包括:1. 选择阈值;2. 将灰度值大于阈值的像素设为255(白),小于等于阈值的像素设为0(黑)。
自考易错提示:注意不同阈值分割方法的适用场景,全局阈值适用于光照均匀的图像,局部阈值适用于光照不均匀的图像;Otsu阈值法是自动选择阈值的方法,不需要人工设定;阈值分割是从灰度图像到二值图像的转换,不是彩色图像到二值图像的转换。
【题型训练】
-
简答题1:简述从灰度图像获取二值形状图像的常用方法。
参考答案:(1)全局阈值法(1分);(2)局部阈值法(1分);(3)自适应阈值法(1分);(4)Otsu阈值法(2分)。 -
简答题2:什么是Otsu阈值法?其原理是什么?
参考答案:(1)Otsu阈值法是自动选择阈值的方法(2分);(2)原理是使前景和背景的类间方差最大(3分)。 -
应用题:使用Otsu阈值法将以下灰度图像转换为二值图像。
灰度值矩阵:
[10, 20, 30, 40]
[50, 60, 150, 160]
[170, 180, 190, 200]
[210, 220, 230, 240]解题步骤:
- 统计灰度直方图:
- 0-127:8个像素(10,20,30,40,50,60)
- 128-255:8个像素(150,160,170,180,190,200,210,220,230,240)—— 修正:实际是8个像素?不,矩阵是4x4=16个像素,0-127有6个,128-255有10个
- 计算类间方差:
- 尝试不同阈值,计算类间方差
- 阈值T=127:
- 前景(>127):10个像素,均值= (150+160+170+180+190+200+210+220+230+240)/10=195
- 背景(≤127):6个像素,均值= (10+20+30+40+50+60)/6=35
- 类间方差= [610(195-35)²] / (16²) ≈ 37500
- 确定最佳阈值:
- Otsu阈值通常选择类间方差最大的阈值
- 这里阈值T=127时类间方差最大
- 二值化处理:
- 灰度值>127的像素设为255(白)
- 灰度值≤127的像素设为0(黑)
- 二值图像结果:
[0, 0, 0, 0]
[0, 0, 255, 255]
[255, 255, 255, 255]
[255, 255, 255, 255]
- 统计灰度直方图:
全连接神经网络结构
【详细解释】:全连接神经网络是最基本的神经网络结构,由输入层、隐藏层和输出层组成。全连接指的是相邻层的神经元之间全连接,每个神经元与上一层的所有神经元相连。输入层接收输入数据,每个神经元对应一个特征;隐藏层处理输入数据,提取特征,层数和神经元数量根据任务而定;输出层输出结果,神经元数量根据任务类型而定(分类任务对应类别数,回归任务对应输出维度)。全连接神经网络的训练过程包括前向传播计算输出、计算损失函数、反向传播调整权值和阈值,使用梯度下降法最小化损失函数。
自考易错提示:注意全连接神经网络的结构组成,输入层、隐藏层、输出层的作用;全连接的含义,相邻层神经元之间全连接;激活函数的作用,用于引入非线性,常用的激活函数包括Sigmoid、ReLU、Tanh等;过拟合的解决方法,包括正则化、 dropout、早停等。
【题型训练】
-
简答题1:简述全连接神经网络的基本结构。
参考答案:(1)输入层(1分);(2)隐藏层(1分);(3)输出层(1分);(4)相邻层神经元全连接(2分)。 -
简答题2:全连接神经网络中激活函数的作用是什么?
参考答案:(1)引入非线性(2分);(2)使神经网络能够学习复杂的非线性关系(3分)。 -
应用题:设计一个全连接神经网络用于手写数字识别。
解题步骤:- 网络结构:
- 输入层:784个神经元(28x28像素的灰度图像)
- 隐藏层1:128个神经元,激活函数ReLU
- 隐藏层2:64个神经元,激活函数ReLU
- 输出层:10个神经元,激活函数Softmax(对应10个数字)
- 损失函数:交叉熵损失
- 优化器:Adam优化器,学习率0.001
- 训练过程:
- 输入:28x28的灰度图像,归一化到[0,1]
- 前向传播:计算各层输出
- 计算损失:与真实标签的交叉熵损失
- 反向传播:计算梯度,调整权值和阈值
- 测试过程:
- 输入测试图像
- 前向传播计算输出
- 选择输出概率最大的神经元作为识别结果
- 性能评估:准确率、精确率、召回率、F1值
- 网络结构:
直言推理和换位法的思维推理
【详细解释】:直言推理是演绎推理的一种,由直言命题组成,包括全称肯定命题(A)、全称否定命题(E)、特称肯定命题(I)、特称否定命题(O)。直言推理的规则包括:1. 中项至少周延一次;2. 在前提中不周延的项,在结论中也不得周延;3. 两个否定前提推不出结论;4. 前提中有一个是否定的,结论必是否定的;5. 两个特称前提推不出结论;6. 前提中有一个是特称的,结论必是特称的。换位法是直言命题的直接推理,通过交换主项和谓项的位置得到新的命题。换位法的规则包括:1. 交换主项和谓项的位置;2. 不改变命题的质(肯定/否定);3. 前提中不周延的项,在结论中也不得周延。
自考易错提示:注意直言命题的四种类型(A、E、I、O);直言推理的规则,特别是中项周延的规则;换位法的规则,全称肯定命题(A)换位为特称肯定命题(I),全称否定命题(E)和特称肯定命题(I)可以直接换位,特称否定命题(O)不能换位。
【题型训练】
-
简答题1:简述直言推理的基本规则。
参考答案:(1)中项至少周延一次(1分);(2)前提中不周延的项,结论中也不得周延(1分);(3)两个否定前提推不出结论(1分);(4)前提中有一个否定,结论必否定(1分);(5)两个特称前提推不出结论(0.5分);(6)前提中有一个特称,结论必特称(0.5分)。 -
简答题2:什么是换位法?简述其规则。
参考答案:(1)换位法是交换主项和谓项位置的直接推理(2分);(2)规则:交换主项谓项位置、不改变命题质、前提中不周延的项结论中也不得周延(3分)。 -
应用题:分析以下直言推理是否有效,并说明原因。
前提1:所有计算机都是电子产品(A命题)
前提2:所有电子产品都需要电(A命题)
结论:所有计算机都需要电(A命题)解题步骤:
- 识别命题类型:
- 前提1:A命题(全称肯定)
- 前提2:A命题(全称肯定)
- 结论:A命题(全称肯定)
- 检查直言推理规则:
- 中项:电子产品,在前提1中是谓项(A命题谓项不周延),在前提2中是主项(A命题主项周延)→ 中项至少周延一次,满足规则1
- 前提中不周延的项:计算机(前提1主项周延)、需要电(前提2谓项不周延)→ 结论中需要电是谓项(A命题谓项不周延),满足规则2
- 两个前提都是肯定的,结论也是肯定的,满足规则3和4
- 前提都是全称的,结论也是全称的,满足规则5和6
- 结论:该直言推理有效,符合直言推理的所有规则。
- 识别命题类型:
人脸识别系统流程、多视角人脸检测算法、多视角人脸跟踪算法、多任务决策融合编程架构
【详细解释】:人脸识别系统流程包括:1. 图像采集:获取人脸图像;2. 人脸检测:定位人脸区域;3. 人脸预处理:灰度化、归一化、去噪;4. 特征提取:提取人脸特征;5. 特征匹配:与数据库特征比对;6. 识别决策:判断身份。多视角人脸检测算法包括:1. 基于Haar特征的Adaboost算法;2. 基于HOG特征的SVM算法;3. 基于深度学习的算法(如MTCNN)。多视角人脸跟踪算法包括:1. 基于卡尔曼滤波的跟踪算法;2. 基于MeanShift的跟踪算法;3. 基于深度学习的跟踪算法(如Siamese网络)。多任务决策融合编程架构是指将多个任务(如人脸检测、跟踪、识别)的决策结果融合,提高系统性能,包括:1. 数据级融合;2. 特征级融合;3. 决策级融合。
自考易错提示:注意人脸识别系统流程的各个步骤,特别是人脸检测和人脸识别的区别;多视角人脸检测和跟踪算法的类型,深度学习算法的优势;多任务决策融合的不同级别,数据级、特征级、决策级的区别。
【题型训练】
-
简答题1:简述人脸识别系统的基本流程。
参考答案:(1)图像采集(1分);(2)人脸检测(1分);(3)人脸预处理(1分);(4)特征提取(1分);(5)特征匹配(1分);(6)识别决策(1分)。 -
简答题2:多任务决策融合编程架构包括哪些级别?
参考答案:(1)数据级融合(2分);(2)特征级融合(2分);(3)决策级融合(1分)。 -
应用题:设计一个多视角人脸识别系统,用于监控场景中的人脸身份识别。
解题步骤:- 系统流程:
- 图像采集:使用多个摄像头获取不同视角的图像
- 人脸检测:使用MTCNN算法检测多视角人脸
- 人脸跟踪:使用卡尔曼滤波跟踪人脸,关联不同帧的人脸
- 人脸预处理:灰度化、归一化、对齐
- 特征提取:使用卷积神经网络提取人脸特征
- 特征匹配:与数据库特征比对,计算相似度
- 决策融合:融合多个视角的识别结果
- 关键算法:
- 多视角人脸检测:MTCNN
- 多视角人脸跟踪:卡尔曼滤波 + 深度学习特征关联
- 特征提取:ResNet-50
- 决策融合:加权投票法
- 编程架构:
- 模块化设计:检测模块、跟踪模块、识别模块、融合模块
- 并行处理:多线程处理多个摄像头的图像
- 实时性优化:使用GPU加速深度学习模型
- 性能评估:识别准确率、实时性、鲁棒性
- 系统流程:
各种距离度量的计算
【详细解释】:距离度量是用于衡量两个数据点之间相似性的指标,常用的距离度量包括:1. 欧氏距离(Euclidean Distance):两点之间的直线距离,适用于连续变量;2. 曼哈顿距离(Manhattan Distance):两点在坐标轴上的绝对距离之和,适用于城市街区距离;3. 切比雪夫距离(Chebyshev Distance):两点在坐标轴上的最大绝对距离,适用于棋盘距离;4. 余弦相似度(Cosine Similarity):衡量两个向量的夹角余弦值,适用于文本相似度;5. 汉明距离(Hamming Distance):两个字符串对应位置不同字符的个数,适用于分类变量;6. 马氏距离(Mahalanobis Distance):考虑数据分布的距离,适用于有协方差的数据集。
自考易错提示:注意不同距离度量的适用场景,欧氏距离适用于连续变量,余弦相似度适用于文本相似度,汉明距离适用于分类变量;余弦相似度是相似度指标,值越大越相似,距离度量是距离指标,值越小越相似;马氏距离考虑了数据的协方差,不受量纲影响。
【题型训练】
-
简答题1:列举五种常用的距离度量方法。
参考答案:(1)欧氏距离(1分);(2)曼哈顿距离(1分);(3)切比雪夫距离(1分);(4)余弦相似度(1分);(5)汉明距离(1分)。 -
简答题2:欧氏距离和曼哈顿距离的区别是什么?
参考答案:(1)欧氏距离是直线距离,曼哈顿距离是坐标轴绝对距离之和(2分);(2)欧氏距离受异常值影响大,曼哈顿距离受异常值影响小(3分)。 -
应用题:计算以下两个向量的欧氏距离、曼哈顿距离、余弦相似度。
X: [1, 2, 3]
Y: [4, 5, 6]解题步骤:
- 欧氏距离:
- d = √[(4-1)² + (5-2)² + (6-3)²] = √[9 + 9 + 9] = √27 ≈ 5.196
- 曼哈顿距离:
- d = |4-1| + |5-2| + |6-3| = 3 + 3 + 3 = 9
- 余弦相似度:
- 点积:14 + 25 + 3*6 = 4 + 10 + 18 = 32
- ||X|| = √(1² + 2² + 3²) = √14 ≈ 3.742
- ||Y|| = √(4² + 5² + 6²) = √77 ≈ 8.775
- cosθ = 32 / (3.742 * 8.775) ≈ 32 / 32.8 ≈ 0.976
- 结论:
- 欧氏距离≈5.196
- 曼哈顿距离=9
- 余弦相似度≈0.976,X和Y高度相似
- 欧氏距离:
K-均值聚类算法原理
【详细解释】:K-均值聚类是一种无监督学习算法,用于将数据集分为K个簇。K-均值聚类算法的原理包括:1. 初始化:随机选择K个数据点作为初始聚类中心;2. 分配:计算每个数据点到各聚类中心的距离,将数据点分配到距离最近的簇;3. 更新:重新计算每个簇的中心(均值);4. 重复:重复步骤2和3,直到聚类中心不再变化或达到最大迭代次数。K-均值聚类的目标是最小化簇内平方和(WCSS),即每个数据点到其簇中心的距离平方和。
自考易错提示:注意K-均值聚类的初始化步骤,随机选择初始聚类中心可能导致局部最优;K值的选择很重要,常用的方法包括肘部法则、轮廓系数;K-均值聚类适用于球形簇,对非球形簇效果不好;离群点对K-均值聚类的影响较大。
【题型训练】
-
简答题1:简述K-均值聚类算法的基本步骤。
参考答案:(1)初始化K个聚类中心(1分);(2)分配数据点到最近的簇(1分);(3)更新聚类中心为簇的均值(1分);(4)重复2-3步直到收敛(2分)。 -
简答题2:K-均值聚类的目标是什么?
参考答案:(1)最小化簇内平方和(WCSS)(2分);(2)使同一簇内的数据点尽可能相似,不同簇的数据点尽可能不同(3分)。 -
应用题:使用K-均值聚类算法对以下数据点进行聚类,K=2。
数据点:(1,2), (2,3), (3,4), (8,7), (9,8), (10,9)解题步骤:
- 初始化聚类中心:
- 随机选择两个数据点作为初始中心,假设选择(1,2)和(8,7)
- 分配数据点:
- 计算每个数据点到中心的欧氏距离:
- (1,2)到(1,2)=0,到(8,7)=√[(7)²+(5)²]=√74≈8.602 → 分配到簇1
- (2,3)到(1,2)=√2≈1.414,到(8,7)=√[(6)²+(4)²]=√52≈7.211 → 分配到簇1
- (3,4)到(1,2)=√[(2)²+(2)²]=√8≈2.828,到(8,7)=√[(5)²+(3)²]=√34≈5.831 → 分配到簇1
- (8,7)到(1,2)=√74≈8.602,到(8,7)=0 → 分配到簇2
- (9,8)到(1,2)=√[(8)²+(6)²]=√100=10,到(8,7)=√[(1)²+(1)²]=√2≈1.414 → 分配到簇2
- (10,9)到(1,2)=√[(9)²+(7)²]=√130≈11.402,到(8,7)=√[(2)²+(2)²]=√8≈2.828 → 分配到簇2
- 计算每个数据点到中心的欧氏距离:
- 更新聚类中心:
- 簇1中心:[(1+2+3)/3, (2+3+4)/3]=(2,3)
- 簇2中心:[(8+9+10)/3, (7+8+9)/3]=(9,8)
- 重复分配和更新:
- 再次分配数据点,结果与之前相同
- 聚类中心不再变化,算法收敛
- 最终簇:
- 簇1:(1,2), (2,3), (3,4)
- 簇2:(8,7), (9,8), (10,9)
- 初始化聚类中心:
综合应用
HDFS主要流程的实现:客户端到名字节点的文件与目录操作,客户端读文件,客户端端写文件,数据节点的启动和心跳
【详细解释】:HDFS的主要流程包括:1. 客户端到名字节点的文件与目录操作:客户端通过RPC调用与名字节点交互,执行创建、删除、重命名文件和目录等操作,名字节点更新元数据并返回结果。2. 客户端读文件:客户端向名字节点请求文件的块位置,名字节点返回数据块的位置信息(数据节点列表),客户端直接与数据节点交互读取数据块,按顺序合并数据块得到完整文件。3. 客户端写文件:客户端向名字节点请求创建文件,名字节点检查权限并分配块ID和数据节点,客户端将数据分成数据包写入数据节点,数据节点复制副本到其他节点,完成后向名字节点报告。4. 数据节点的启动和心跳:数据节点启动时向名字节点注册,定期(每3秒)发送心跳和块报告,名字节点通过心跳检测数据节点状态,通过块报告维护块的位置信息。
自考易错提示:注意HDFS主要流程的实现细节,特别是客户端与名字节点、数据节点的交互;客户端读文件时直接与数据节点交互,不经过名字节点;客户端写文件时的数据复制机制,默认3个副本;数据节点的心跳机制,名字节点超过10分钟未收到心跳,认为节点故障。
【题型训练】
-
简答题1:简述HDFS客户端读文件的流程。
参考答案:(1)客户端向名字节点请求文件块位置(1分);(2)名字节点返回数据块位置信息(1分);(3)客户端直接与数据节点交互读取数据块(2分);(4)合并数据块得到完整文件(1分)。 -
简答题2:HDFS数据节点的心跳机制有什么作用?
参考答案:(1)向名字节点报告节点状态(2分);(2)名字节点通过心跳检测节点是否存活(3分)。 -
应用题:详细分析HDFS客户端写文件的完整流程。
解题步骤:- 客户端请求创建文件:
- 客户端通过RPC调用向名字节点发送创建文件请求
- 名字节点检查权限、路径是否存在等
- 名字节点创建文件的元数据,返回成功
- 客户端请求分配块:
- 客户端请求名字节点分配第一个块的位置
- 名字节点根据副本放置策略选择数据节点(默认3个)
- 名字节点返回数据节点列表
- 客户端写入数据:
- 客户端将数据分成数据包,通过管道写入第一个数据节点
- 第一个数据节点接收数据,同时复制到第二个数据节点
- 第二个数据节点复制到第三个数据节点
- 每个数据节点确认接收
- 块完成确认:
- 所有副本复制完成后,数据节点向名字节点报告块的完成状态
- 名字节点更新元数据
- 写入后续块:
- 客户端请求分配下一个块,重复步骤3-4
- 完成文件写入:
- 客户端发送文件完成请求
- 名字节点更新文件的元数据,标记文件为已完成
- 客户端请求创建文件:
MapReduce的计算过程分析
【详细解释】:MapReduce的计算过程包括Map阶段、Shuffle阶段和Reduce阶段。Map阶段:1. 输入分片:将输入数据分成固定大小的分片;2. 映射:每个Map任务处理一个分片,调用map()函数生成键值对;3. 分区:将Map输出的键值对分配到不同的分区(默认使用哈希分区);4. 排序和分组:对每个分区内的键值对按键排序,相同键的键值对分组。Shuffle阶段:1. Map端输出:将Map输出写入本地磁盘;2. Reduce端拉取:Reduce任务拉取属于自己的分区数据;3. 合并:对拉取的数据进行合并和排序。Reduce阶段:1. 归约:对每个分组调用reduce()函数,生成最终键值对;2. 输出:将最终结果写入HDFS。
自考易错提示:注意MapReduce计算过程的各个阶段,特别是Shuffle阶段的作用;Map阶段的分区、排序、分组步骤;Reduce阶段的合并、归约步骤;MapReduce的并行度,Map任务数由输入分片数决定,Reduce任务数可配置。
【题型训练】
-
简答题1:简述MapReduce计算过程的主要阶段。
参考答案:(1)Map阶段(1分);(2)Shuffle阶段(2分);(3)Reduce阶段(2分)。 -
简答题2:MapReduce的Shuffle阶段包括哪些步骤?
参考答案:(1)Map端输出写入本地磁盘(1分);(2)Reduce端拉取数据(1分);(3)合并和排序(3分)。 -
应用题:分析WordCount程序的MapReduce计算过程,包括数据流向和关键操作。
解题步骤:- 输入数据:文本文件,如"Hello World\nHello Hadoop"
- Map阶段:
- 输入分片:将文件分成块,每个Map任务处理一个块
- 映射:调用map()函数,将每行文本分割为单词,输出<单词,1>
- 输出:<Hello,1>, <World,1>, <Hello,1>, <Hadoop,1>
- 分区:使用哈希分区,相同单词的键值对分配到同一分区
- 排序分组:按单词排序,相同单词的键值对分组
- 排序后:<Hadoop,1>, <Hello,1>, <Hello,1>, <World,1>
- 分组后:<Hadoop,[1]>, <Hello,[1,1]>, <World,[1]>
- Shuffle阶段:
- Map端输出:将分组后的键值对写入本地磁盘
- Reduce端拉取:Reduce任务拉取属于自己的分区数据
- 合并排序:合并多个Map的输出,保持排序
- Reduce阶段:
- 归约:调用reduce()函数,对每个分组的计数求和
- <Hadoop,1> → 1
- <Hello,[1,1]> → 2
- <World,1> → 1
- 输出:将最终结果写入HDFS
- 输出:Hello 2\nWorld 1\nHadoop 1
- 归约:调用reduce()函数,对每个分组的计数求和
人工智能对行业的综合影响分析
【详细解释】:人工智能对行业的综合影响包括:1. 生产效率提升:自动化生产、智能机器人减少人力成本,提高生产效率;2. 服务质量优化:智能客服、个性化推荐提升用户体验;3. 产品创新:智能产品、智能家居、自动驾驶等新产品不断涌现;4. 就业结构变化:部分传统岗位被替代,同时创造新的岗位(如AI工程师、数据科学家);5. 产业升级:传统产业与AI融合,实现数字化转型;6. 伦理和社会问题:隐私保护、算法偏见、失业问题等需要关注。人工智能对不同行业的影响不同,如制造业(智能工厂)、金融业(智能风控)、医疗业(辅助诊断)、零售业(智能推荐)等。
自考易错提示:注意人工智能对行业的综合影响包括正面和负面影响;不同行业的影响特点不同,需要具体分析;人工智能的伦理和社会问题,如隐私保护、算法偏见等;就业结构变化,不是简单的替代,而是创造新的岗位。
【题型训练】
-
简答题1:简述人工智能对行业的正面影响。
参考答案:(1)生产效率提升(1分);(2)服务质量优化(1分);(3)产品创新(1分);(4)产业升级(2分)。 -
简答题2:人工智能对就业结构有什么影响?
参考答案:(1)部分传统岗位被替代(2分);(2)创造新的岗位(如AI工程师、数据科学家)(3分)。 -
应用题:分析人工智能对制造业的综合影响,包括机遇和挑战。
解题步骤:- 机遇:
- 生产效率提升:智能机器人替代重复劳动,减少人力成本
- 产品质量提高:AI检测系统提高产品检测精度和速度
- 供应链优化:智能预测系统优化库存管理和物流配送
- 个性化定制:智能制造实现小批量个性化生产
- 挑战:
- 技术成本高:AI设备和系统的投资成本高
- 人才短缺:缺乏AI和制造业结合的复合型人才
- 传统企业转型困难:技术和管理转型的阻力大
- 伦理和安全问题:智能制造系统的安全性和可靠性
- 应对策略:
- 政府支持:出台政策支持制造业智能化转型
- 企业创新:加大AI技术研发和应用投入
- 人才培养:加强AI和制造业人才的培养和引进
- 标准制定:建立智能制造的标准和规范
- 机遇:
前向选择算法和后向选择算法
【详细解释】:前向选择算法和后向选择算法是特征选择的包装法,用于从候选特征集中选择最优特征子集。前向选择算法的步骤包括:1. 初始化:选择不包含任何特征的空集作为初始特征子集;2. 迭代:对于每个未选择的特征,将其加入当前特征子集,计算模型性能,选择性能最好的特征加入特征子集;3. 停止:当添加新特征不能提高模型性能或达到最大特征数时停止。后向选择算法的步骤包括:1. 初始化:选择包含所有特征的全集作为初始特征子集;2. 迭代:对于每个已选择的特征,将其从当前特征子集移除,计算模型性能,选择性能最好的特征子集(即移除该特征后性能最好);3. 停止:当移除特征不能提高模型性能或特征子集为空时停止。
自考易错提示:注意前向选择和后向选择的区别,前向选择从空集开始添加特征,后向选择从全集开始移除特征;前向选择可能陷入局部最优,后向选择计算量较大;包装法的计算量比过滤法大,但性能通常更好。
【题型训练】
-
简答题1:简述前向选择算法的基本步骤。
参考答案:(1)初始化空特征子集(1分);(2)迭代添加性能最好的特征(2分);(3)直到性能不再提高或达到最大特征数(2分)。 -
简答题2:前向选择算法和后向选择算法的主要区别是什么?
参考答案:(1)前向选择从空集开始添加特征,后向选择从全集开始移除特征(3分);(2)前向选择计算量较小,后向选择计算量较大(2分)。 -
应用题:使用前向选择算法从以下特征集中选择最优特征子集,用于预测房价,特征包括面积、卧室数、浴室数、楼层数、年龄。
模型性能(R²):- 空集:0.0
- 面积:0.75
- 卧室数:0.60
- 浴室数:0.55
- 楼层数:0.40
- 年龄:0.35
- 面积+卧室数:0.82
- 面积+浴室数:0.80
- 面积+楼层数:0.78
- 面积+年龄:0.77
解题步骤:
- 初始化:当前特征子集=空集,性能=0.0
- 第一次迭代:
- 尝试添加每个特征,计算性能:
- 面积:0.75
- 卧室数:0.60
- 浴室数:0.55
- 楼层数:0.40
- 年龄:0.35
- 选择性能最好的特征“面积”,当前特征子集={面积},性能=0.75
- 尝试添加每个特征,计算性能:
- 第二次迭代:
- 尝试添加剩余特征,计算性能:
- 面积+卧室数:0.82
- 面积+浴室数:0.80
- 面积+楼层数:0.78
- 面积+年龄:0.77
- 选择性能最好的特征“卧室数”,当前特征子集={面积,卧室数},性能=0.82
- 尝试添加剩余特征,计算性能:
- 第三次迭代:
- 尝试添加剩余特征,假设添加后性能不再提高(如面积+卧室数+浴室数=0.81<0.82)
- 停止条件:添加新特征不能提高性能
- 最优特征子集:{面积,卧室数}
基于信息增益的决策树生成
【详细解释】:基于信息增益的决策树生成是ID3算法的核心,通过选择信息增益最大的特征作为当前节点的分裂特征。信息增益的计算基于信息熵,信息熵是衡量数据集纯度的指标,熵越小,数据集越纯。信息增益的计算公式为:Gain(D,A)=Ent(D)-Ent(D|A),其中Ent(D)是数据集D的信息熵,Ent(D|A)是特征A对数据集D的条件熵。基于信息增益的决策树生成步骤包括:1. 计算数据集的信息熵;2. 计算每个特征的信息增益;3. 选择信息增益最大的特征作为分裂特征;4. 根据特征的不同取值分割数据集;5. 对每个子数据集递归调用步骤1-4,直到满足停止条件(如所有数据属于同一类别、没有剩余特征等)。
自考易错提示:注意信息增益的计算方法,基于信息熵和条件熵;ID3算法使用信息增益选择特征,C4.5算法使用信息增益比;决策树的停止条件,包括最大深度、最小样本数等;过拟合的解决方法,如剪枝。
【题型训练】
-
简答题1:简述基于信息增益的决策树生成步骤。
参考答案:(1)计算数据集的信息熵(1分);(2)计算每个特征的信息增益(2分);(3)选择信息增益最大的特征分裂(1分);(4)递归生成子树(1分)。 -
简答题2:什么是信息增益?其计算公式是什么?
参考答案:(1)信息增益是特征A对数据集D的分类不确定性减少的程度(2分);(2)公式:Gain(D,A)=Ent(D)-Ent(D|A)(3分)。 -
应用题:使用基于信息增益的决策树生成算法,根据以下数据集构建决策树,判断一个人是否会购买电脑。
年龄 收入 学生 信用 购买电脑 青年 高 否 一般 否 青年 高 否 好 否 中年 高 否 一般 是 老年 中 否 一般 是 老年 低 是 一般 是 老年 低 是 好 否 中年 低 是 好 是 青年 中 否 一般 否 青年 低 是 一般 是 老年 中 是 一般 是 青年 中 是 好 是 中年 中 否 好 是 中年 高 是 一般 是 老年 中 否 好 否 解题步骤:
- 计算数据集D的信息熵Ent(D):
- 购买电脑=是:9个,否:5个
- Ent(D)= -9/14log2(9/14) -5/14log2(5/14)≈0.940
- 计算各特征的信息增益:
- 特征A=年龄:
- 青年:5个(2是,3否),Ent= -2/5log2(2/5)-3/5log2(3/5)≈0.971
- 中年:4个(4是,0否),Ent=0
- 老年:5个(3是,2否),Ent= -3/5log2(3/5)-2/5log2(2/5)≈0.971
- Ent(D|A)=5/140.971 +4/140 +5/14*0.971≈0.694
- Gain(D,A)=0.940-0.694=0.246
- 特征A=收入:
- 高:4个(2是,2否),Ent=1
- 中:6个(4是,2否),Ent≈0.918
- 低:4个(3是,1否),Ent≈0.811
- Ent(D|A)=4/141 +6/140.918 +4/14*0.811≈0.911
- Gain(D,A)=0.940-0.911=0.029
- 特征A=学生:
- 是:6个(5是,1否),Ent≈0.650
- 否:8个(4是,4否),Ent=1
- Ent(D|A)=6/140.650 +8/141≈0.788
- Gain(D,A)=0.940-0.788=0.152
- 特征A=信用:
- 一般:8个(6是,2否),Ent≈0.811
- 好:6个(3是,3否),Ent=1
- Ent(D|A)=8/140.811 +6/141≈0.892
- Gain(D,A)=0.940-0.892=0.048
- 特征A=年龄:
- 选择信息增益最大的特征:
- 年龄的信息增益最大(0.246),选择年龄作为根节点
- 递归生成子树:
- 中年:4个都购买电脑,叶子节点标记为“是”
- 青年:5个(2是,3否),继续选择特征
- 老年:5个(3是,2否),继续选择特征
- 最终决策树:
- 根节点:年龄
- 中年→是
- 青年→进一步分裂(如学生)
- 老年→进一步分裂(如信用)
- 根节点:年龄
- 计算数据集D的信息熵Ent(D):
广东自考《软件质量保证与测试》(13008)备考资料
简单应用
错误、缺陷和失效
【详细解释】:
- 错误:人为操作失误(如程序员写错代码)
- 缺陷:代码中存在的问题(错误导致的结果)
- 失效:软件运行时出现的故障(缺陷导致的现象)
关系链:错误→缺陷→失效
区别一:存在的时间不同
错误:发生在开发过程中(写代码的时候)。
缺陷:存在于交付前和交付后(只要代码不改,缺陷一直都在,哪怕软件没运行)。
失效:只存在于运行期间(软件不跑,就不会失效)。
区别二:主体不同
错误的主体是人(程序员)。
缺陷的主体是软件产品(代码、文档)。
失效的主体是系统行为(输出结果)。
区别三:可见性不同
错误:可能只有程序员自己知道(如果他没保存的话)。
缺陷:需要通过测试才能发现(它是隐藏的 Bug)。
失效:用户一眼就能看到(软件崩了、算错数了)。
【自考易错提示】:注意三者的因果关系,不要混淆定义
【题型训练】
简答题:简述错误、缺陷和失效的关系
参考答案:
- 错误是人为操作失误(1分)
- 缺陷是错误导致的代码问题(1分)
- 失效是缺陷导致的运行故障(1分)
- 三者是因果链:错误→缺陷→失效(1分)
应用题:用户输入"001"作为年龄,系统显示"年龄无效"。请分析这一过程中的错误、缺陷和失效
参考答案:
- 错误:程序员未考虑前导零的输入处理(1分)
- 缺陷:年龄验证代码未去除前导零(1分)
- 失效:用户输入"001"时系统误判为无效(1分)
CMM软件过程成熟度等级
【详细解释】:
- 1级:初始级:过程混乱,依赖个人能力
- 2级:可重复级:基本项目管理,可重复以前的成功
- 3级:已定义级:过程标准化,文档化
- 4级:已管理级:量化管理,可预测
- 5级:优化级:持续改进,主动预防缺陷
记忆口诀:初一重(复)定(义)管(理)优(化)
【自考易错提示】:注意各级的核心特征,尤其是2-4级的区别
【题型训练】
简答题:简述CMM的5个成熟度等级
参考答案:
- 初始级:过程混乱(1分)
- 可重复级:基本项目管理(1分)
- 已定义级:过程标准化(1分)
- 已管理级:量化管理(1分)
- 优化级:持续改进(1分)
应用题:某软件公司刚成立,项目成功依赖项目经理个人能力,请问该公司处于CMM的哪个等级?应如何提升到下一级?
参考答案:
- 处于1级(初始级)(1分)
- 提升方法:建立基本项目管理流程(1分),记录项目经验(1分),确保类似项目可重复成功(1分)
六西格玛管理与零缺陷管理区别
【详细解释】:
| 项目 | 六西格玛管理 | 零缺陷管理 |
|---|---|---|
| 目标 | 缺陷率3.4/百万 | 完全无缺陷 |
| 方法 | 数据驱动,DMAIC/DFSS | 预防为主,一次做对 |
| 适用 | 成熟过程改进 | 所有过程控制 |
记忆:六西讲数据,零缺讲预防
【自考易错提示】:不要混淆两者的目标和方法
6 个西格玛:合格率达到了 99.99966%。
DMAIC 流程:
D (Define) 定义:找出客户最关心的问题。
M (Measure) 测量:收集数据,看看现在的误差有多大。
A (Analyze) 分析:找出导致误差的根本原因(Root Cause)。
I (Improve) 改进:优化流程,消除原因。
C (Control) 控制:保持成果,防止问题复发。
【题型训练】
简答题:简述六西格玛管理与零缺陷管理的主要区别
参考答案:
- 目标不同:六西3.4/百万 vs 零缺完全无缺陷(1分)
- 方法不同:六西数据驱动 vs 零缺预防为主(1分)
- 适用不同:六西成熟过程 vs 零缺所有过程(1分)
应用题:某公司刚引入质量管理,应选择六西格玛还是零缺陷管理?说明理由
参考答案:
- 选择零缺陷管理(1分)
- 理由:零缺陷适合所有过程控制(1分),强调预防为主(1分),更适合刚引入质量管理的公司建立基础(1分)
DFSS与DMAIC方法的区别
【详细解释】:
- DFSS:设计六西格玛,用于新产品/过程设计(Design for Six Sigma)
- DMAIC:用于现有产品/过程改进(Define-Measure-Analyze-Improve-Control)
记忆:DFSS管设计,DMAIC管改进
【自考易错提示】:注意适用场景的区别
【题型训练】
简答题:简述DFSS与DMAIC的区别
参考答案:
- DFSS用于新产品/过程设计(1分)
- DMAIC用于现有产品/过程改进(1分)
- DFSS是正向设计(1分),DMAIC是逆向改进(1分)
应用题:公司计划开发新的电商平台支付系统,应选择DFSS还是DMAIC方法?说明理由
参考答案:
- 选择DFSS(1分)
- 理由:DFSS适用于新产品/过程设计(1分),新支付系统是全新开发(1分),需从设计阶段就确保质量(1分)
SQA过程的实施具体活动
【详细解释】:
- 制定SQA计划
- 实施软件过程审查
- 实施软件产品审查
- 编写SQA报告
- 实施SQA度量
记忆:计划→过程审→产品审→报告→度量
【自考易错提示】:注意活动的顺序
Software quality assurance
制定质量计划:建立组织的质量方针,制定软件开发标准、规范以及评审计划。
参与技术评审:参与需求分析、系统设计、代码实现等阶段的技术评审,确保技术文档和代码符合标准。
进行过程审计:对软件开发过程进行审计,检查项目活动是否遵循既定的流程和标准(如配置管理审计)。
生成质量报告:收集和分析质量数据,记录不符合项,定期向管理层提交质量报告,并跟踪问题的解决。
【题型训练】
简答题:简述SQA过程的实施活动
参考答案:
- 制定SQA计划(1分)
- 实施软件过程审查(1分)
- 实施软件产品审查(1分)
- 编写SQA报告(1分)
- 实施SQA度量(1分)
应用题:请为某项目制定SQA实施的第一步和最后一步活动,并说明理由
参考答案:
- 第一步:制定SQA计划(1分)→ 理由:无计划则无指导(1分)
- 最后一步:实施SQA度量(1分)→ 理由:度量结果用于持续改进(1分)
软件测试的基本原则
【详细解释】:
- 所有测试追溯到用户需求
- 尽早并不断测试
- 程序员避免测试自己的程序
- 穷举测试不可能
- 充分注意群集现象(80%缺陷在20%模块)
记忆:需求追溯、尽早测试、避免自测、穷举不可能、群集现象
【自考易错提示】:群集现象是高频考点
【题型训练】
简答题:简述软件测试的两个核心原则
参考答案:
- 所有测试追溯到用户需求(1分)→ 确保测试覆盖用户关心的功能(1分)
- 尽早并不断测试(1分)→ 缺陷发现越早,修复成本越低(1分)
应用题:项目组发现80%的缺陷集中在登录模块,应如何调整测试策略?
参考答案:
- 应用群集现象原则(1分)
- 增加登录模块的测试用例(1分)
- 重点审查登录模块的代码(1分)
- 分析登录模块缺陷集中的原因(1分)
测试各工作流程对应的输入、输出及责任人
【详细解释】:
| 流程 | 输入 | 输出 | 责任人 |
|---|---|---|---|
| 测试计划 | 需求文档 | 测试计划 | 测试经理 |
| 测试设计 | 测试计划 | 测试用例 | 测试工程师 |
| 测试执行 | 测试用例 | 测试报告 | 测试工程师 |
| 缺陷管理 | 测试结果 | 缺陷报告 | 测试工程师 |
【自考易错提示】:注意各流程的责任人和输出
【题型训练】
简答题:简述测试设计流程的输入、输出及责任人
参考答案:
- 输入:测试计划(1分)
- 输出:测试用例(1分)
- 责任人:测试工程师(1分)
应用题:测试执行阶段发现缺陷,应生成什么文档?由谁负责?
参考答案:
- 生成缺陷报告(1分)
- 责任人:测试工程师(1分)
- 流程:测试执行→发现缺陷→记录缺陷报告(2分)
软件测试各模型的优缺点
【详细解释】:
- V模型:优点-简单清晰;缺点-重测试轻需求. Vrification and Validation Model(验证与确认模型). 开发完再测试再开发.
- W模型:优点-需求测试并行;缺点-仍线性,灵活性差. Double V Model(双 V 模型). 一边开发一边测试.
- H模型:优点-测试独立,灵活;缺点-对测试人员要求高. Horizontal 平行测试, 非线性. 贯穿整个软件生命周期,与开发流程没有严格的对应关系.
记忆:V简重测,W并仍线,H独灵要高
【自考易错提示】:注意各模型的核心优缺点
【题型训练】
简答题:简述V模型的优缺点
参考答案:
- 优点:简单清晰,容易理解(1分)
- 缺点:重测试轻需求,测试滞后于开发(1分)
应用题:敏捷开发项目应选择哪种测试模型?说明理由
参考答案:
- 选择H模型(1分)
- 理由:H模型测试独立、灵活(1分),适合敏捷开发的迭代特性(1分),能随时插入测试(1分)
性能测试范围
【详细解释】:
- 负载测试:模拟多用户并发
- 压力测试:极限条件测试
- 并发测试:多用户同时操作
- 响应时间测试:系统反应速度
记忆:负载、压力、并发、响应时间
【自考易错提示】:注意负载测试和压力测试的区别
【题型训练】
简答题:简述性能测试的主要范围
参考答案:
- 负载测试(1分)
- 压力测试(1分)
- 并发测试(1分)
- 响应时间测试(1分)
应用题:电商平台双11活动前,应重点进行哪种性能测试?说明理由
参考答案:
- 重点进行负载测试和压力测试(1分)
- 负载测试模拟双11多用户并发场景(1分)
- 压力测试验证系统极限处理能力(1分)
- 确保系统在峰值流量下稳定运行(1分)
黑盒测试和白盒测试的比较
【详细解释】:
| 项目 | 黑盒测试 | 白盒测试 |
|---|---|---|
| 测试依据 | 需求规格 | 源代码 |
| 测试人员 | 测试工程师 | 开发/测试工程师 |
| 测试阶段 | 系统/验收测试 | 单元/集成测试 |
| 测试重点 | 功能正确性 | 代码逻辑 |
记忆:黑盒看需求,白盒看代码
【自考易错提示】:注意适用阶段的区别
【题型训练】
简答题:简述黑盒测试和白盒测试的主要区别
参考答案:
- 测试依据不同:黑盒(需求)vs 白盒(代码)(1分)
- 测试阶段不同:黑盒(系统/验收)vs 白盒(单元/集成)(1分)
- 测试重点不同:黑盒(功能)vs 白盒(逻辑)(1分)
应用题:系统测试阶段应采用黑盒测试还是白盒测试?说明理由
参考答案:
- 采用黑盒测试(1分)
- 理由:系统测试关注整体功能(1分),依据需求规格(1分),不需要了解代码内部(1分)
黑盒测试技术的比较与选择
【详细解释】:
| 技术 | 适用场景 | 优缺点 |
|---|---|---|
| 等价类 | 输入范围广 | 简单高效 |
| 边界值 | 有边界条件 | 发现更多缺陷 |
| 判定表 | 多条件组合 | 逻辑清晰 |
| 因果图 | 因果关系复杂 | 避免遗漏 |
选择原则:根据需求复杂度和条件数量选择
【自考易错提示】:注意各技术的适用场景
等价类划分法 (Equivalence Partitioning): 只要测试了这个类中的一个代表,就认为测试了这个类中的所有数据。
边界值分析法 (Boundary Value Analysis): 测试边界条件,如最小值、最大值、临界值等。
判定表法 (Decision Table): 用于多条件组合的测试,列出所有可能的条件组合和相应的测试结果。当输入条件之间存在逻辑组合(比如 “与”、“或”、“非” 关系),且不同的组合会产生不同的结果时,等价类和边界值都不好使了,必须用表格来穷举。题目:“如果是学生且成绩> 60,则及格;如果是老师且教龄 > 10,则评优。” 这里有两个条件(身份、分数 / 教龄),组合情况很多。判定表:列出所有 2x2=4 种组合,然后看每种组合对应的结果。
因果图法 (Cause-Effect Graph): 用于分析输入条件和输出结果之间的因果关系,避免遗漏测试用例。
因果图:就像电路图。你能一眼看到哪个开关(原因)控制哪个灯泡(结果),以及它们之间是串联(与)还是并联(或)。这对于理解需求非常有帮助。
判定表:就像真值表。它是冷冰冰的数据罗列。虽然准确,但如果你不看需求文档,光看表格很难理解背后的逻辑含义。
【题型训练】
简答题:简述等价类划分和边界值分析的区别
参考答案:
- 等价类:将输入划分为等价区间(1分)
- 边界值:测试边界条件(1分)
- 边界值是等价类的补充,能发现更多缺陷(1分)
应用题:用户密码要求6-12位字母数字组合,应选择哪种黑盒测试技术?说明理由
参考答案:
- 选择等价类+边界值(1分)
- 等价类:有效(6-12位)、无效(<6位、>12位、非字母数字)(1分)
- 边界值:5位、6位、12位、13位(1分)
- 两者结合能全面测试密码规则(1分)
缺陷分类步骤
【详细解释】:
- 收集缺陷数据
- 确定分类维度(如严重程度、类型)
- 建立分类标准
- 实施分类
- 分析分类结果
记忆:收集→维度→标准→分类→分析
【自考易错提示】:注意步骤的顺序
【题型训练】
简答题:简述缺陷分类的基本步骤
参考答案:
- 收集缺陷数据(1分)
- 确定分类维度(1分)
- 建立分类标准(1分)
- 实施分类(1分)
- 分析分类结果(1分)
应用题:项目组需要对缺陷进行分类,第一步应做什么?为什么?
参考答案:
- 第一步:收集缺陷数据(1分)
- 理由:没有数据就无法进行分类(1分),数据是分类的基础(1分)
白盒测试的实施步骤;语句覆盖及其覆盖率;判定覆盖及其覆盖率;条件覆盖及其覆盖率
【详细解释】:
-
实施步骤:
- 分析源代码
- 设计测试用例
- 执行测试
- 计算覆盖率
-
语句覆盖:测试用例执行所有语句(覆盖率=执行语句数/总语句数). 最弱, 不管判断真假. 跑一遍所有可执行语句就行了.
-
判定覆盖:测试用例执行所有判定的真假分支(覆盖率=执行分支数/总分支数). 每个判断都要测试真假.
-
条件覆盖:测试用例使所有条件的真假值都出现(覆盖率=执行条件值数/总条件值数). 每个判断里的每个条件的真假都得测.
记忆:语句看行,判定看分支,条件看真假
【自考易错提示】:注意三种覆盖的计算方式
【题型训练】
简答题:简述语句覆盖和判定覆盖的区别
参考答案:
- 语句覆盖关注是否执行所有语句(1分)
- 判定覆盖关注是否执行所有判定的真假分支(1分)
- 判定覆盖的覆盖率要求高于语句覆盖(1分)
应用题:一段代码包含一个if-else语句(共3行代码),请计算语句覆盖和判定覆盖的覆盖率(假设执行了if分支)
参考答案:
- 语句覆盖:执行2行/总3行=66.7%(2分)
- 判定覆盖:执行1分支/总2分支=50%(2分)
测试管理工具功能
【详细解释】:
- 测试计划管理
- 测试用例管理
- 缺陷管理
- 测试执行管理
- 测试报告生成
记忆:计划、用例、缺陷、执行、报告
【自考易错提示】:注意核心功能的记忆
无论哪种工具,核心功能都围绕 “用例、缺陷、计划” 这三件事展开。
- 测试用例管理 (Test 0Case Management) —— 最核心
功能:
创建、编辑、删除测试用例。
对测试用例进行分类(按模块、优先级)。
版本控制:记录测试用例的修改历史。
复用:从用例库中调用已有用例。 - 缺陷 / 错误跟踪 (Defect/Bug Tracking) —— 最常用
功能:
提交缺陷:记录 Bug 的标题、步骤、截图、严重程度等。
状态流转:跟踪 Bug 的生命周期(新建→打开→修复→关闭→重开)。
关联:将缺陷与对应的测试用例或需求关联起来。 - 测试计划与进度管理 (Test Planning & Tracking)
功能:
制定测试计划(测试范围、时间表、人员分工)。
安排测试任务(谁负责测哪个模块)。
监控测试进度(已完成多少用例,通过率多少)。 - 需求管理与追溯 (Requirements Management & Traceability)
功能:
导入或录入用户需求。
需求追溯:建立 “需求 → 测试用例 → 缺陷” 之间的双向追溯关系(确保每一个需求都有测试用例覆盖,每一个缺陷都能追溯到需求)。 - 报表与统计分析 (Reporting & Analysis)
功能:
自动生成测试报告(通过率、缺陷密度、剩余工作量)。
生成各种图表(饼图、柱状图),帮助管理者做决策。
【题型训练】
简答题:简述测试管理工具的核心功能
参考答案:
- 测试用例管理(1分)
- 缺陷管理(1分)
- 测试执行管理(1分)
- 测试报告生成(1分)
应用题:项目组需要跟踪缺陷的生命周期,应使用测试管理工具的哪个功能?说明理由
参考答案:
- 使用缺陷管理功能(1分)
- 理由:缺陷管理功能可记录缺陷的状态变化(1分),跟踪缺陷的发现、修复和验证过程(1分)
使用测试执行和评估类工具的目的;关键词驱动测试自动化的主要优点
【详细解释】:
测试执行工具(如 Selenium、QTP)和测试评估 / 度量工具(如用于分析覆盖率的工具)的主要区别在于:
- 测试执行工具主要用于执行测试用例,验证系统是否按预期工作。
- 测试评估 / 度量工具主要用于分析测试执行结果,评估测试的质量和效率。
关键词驱动测试(Keyword-Driven Testing)是一种自动化测试方法,它将测试逻辑分解为 “关键词”(如 “输入”、“点击”、“验证”),测试人员只需填写关键词和数据,无需编写复杂代码。
关键词驱动测试
- 业务层(Business Layer)—— 测试人员写的
- 内容:Excel表格或测试用例管理工具中的用例。
- 形式:
关键词 | 对象 | 数据- 例:
输入 | 用户名输入框 | admin - 例:
点击 | 登录按钮 |
- 例:
- 关键词层(Keyword Layer)—— 核心大脑
- 内容:解释器(Interpreter)或引擎。
- 作用:读取业务层的关键词,判断是“输入”还是“点击”,然后去调用对应的代码。
- 操作层(Action Layer)—— 开发人员写的
- 内容:具体的代码库(函数库)。
- 作用:实现具体的操作。
def input_text(element, text): ...def click_button(element): ...
- 对象层(Object Layer)—— 地图
- 内容:对象仓库(Object Repository)。
- 作用:存储界面元素的定位信息(如
用户名输入框 = id:username)。
业务层(Excel表格)
这是测试人员看到的,非常简单:
| 步骤 | 关键词 (Keyword) | 对象 (Object) | 数据 (Data) |
|---|---|---|---|
| 1 | OpenBrowser | Chrome | |
| 2 | InputText | txt_Username | admin |
| 3 | InputText | txt_Password | 123456 |
| 4 | Click | btn_Login | |
| 5 | VerifyText | lbl_Welcome | 欢迎 admin |
主要优点(简答题考点)
- 技术门槛低:业务专家(不懂代码)可以直接设计测试用例。
- 脚本复用率极高:同一个
Click关键词可以在所有项目中使用。 - 维护成本低:
- 如果界面按钮位置变了,只改对象层。
- 如果操作逻辑变了,只改操作层。
- 业务层(测试用例)通常不需要改。
- 易于扩展:新增一个关键词(如
UploadFile),所有用例都能立刻使用。
主要缺点(了解即可)
- 前期投入大:需要开发人员编写复杂的引擎和函数库。
- 灵活性受限:对于极特殊的复杂逻辑,关键词可能无法覆盖,需要写定制代码。
- 测试执行工具目的:提高执行效率,减少人工错误
- 评估类工具目的:分析测试结果,生成报告
- 关键词驱动优点:
- 脚本与测试数据分离
- 非技术人员也能编写测试
- 维护成本低
记忆:执行提效率,评估做分析,关键词分离易维护
【自考易错提示】:注意关键词驱动的核心优点
【题型训练】
简答题:简述关键词驱动测试自动化的优点
参考答案:
- 脚本与测试数据分离(1分)
- 非技术人员可参与(1分)
- 维护成本低(1分)
应用题:公司测试团队技术水平参差不齐,应选择哪种自动化测试方法?说明理由
参考答案:
- 选择关键词驱动(1分)
- 理由:非技术人员也能编写测试(1分),维护成本低(1分),适合技术水平不一的团队(1分)
选择测试工具的流程
【详细解释】:
- 需求分析:确定测试工具需求
- 工具调研:收集候选工具
- 工具评估:测试工具功能
- 工具选型:选择合适工具
- 工具引入:采购并部署
记忆:需求→调研→评估→选型→引入
【自考易错提示】:注意流程的顺序
【题型训练】
简答题:简述选择测试工具的基本流程
参考答案:
- 需求分析(1分)
- 工具调研(1分)
- 工具评估(1分)
- 工具选型(1分)
- 工具引入(1分)
应用题:项目组需要选择自动化测试工具,第一步应做什么?为什么?
参考答案:
- 第一步:需求分析(1分)
- 理由:明确测试工具的需求(1分),避免盲目选择(1分),确保工具符合项目要求(1分)
实施软件自动化测试的优点;自动化测试的缺点;自动化测试适用性条件
【详细解释】:
-
优点:
- 提高测试效率
- 减少人工错误
- 可重复执行
- 适合回归测试
-
缺点:
- 初期成本高
- 维护成本高
- 不适合界面频繁变化的项目
-
适用条件:
- 需求稳定
- 测试用例可重复
- 回归测试频繁
记忆:优点(效高、错少、可重复);缺点(成本高、维护难);适用(需求稳、用例重复、回归多)
【自考易错提示】:注意适用条件的记忆
【题型训练】
简答题:简述自动化测试的适用条件
参考答案:
- 需求稳定(1分)
- 测试用例可重复执行(1分)
- 回归测试频繁(1分)
应用题:某项目需求每周变化一次,是否适合实施自动化测试?说明理由
参考答案:
- 不适合(1分)
- 理由:自动化测试适合需求稳定的项目(1分),该项目需求每周变化(1分),会导致测试脚本频繁修改,维护成本过高(1分)
综合应用
增量式集成测试
【详细解释】:
- 将模块分批集成测试,每次集成一个或几个模块. 增量式集成测试是指将程序模块按照一定的顺序,逐步集成到系统中进行测试。
在集成过程中,每次只增加一个(或一组)新模块,然后进行测试。如果测试通过,再增加下一个模块,直到所有模块集成为一个完整的系统。 - 类型:
- 自顶向下:从顶层模块开始
- 自底向上:从底层模块开始
- 混合:结合两者优点
优点:容易定位缺陷,降低测试复杂度
- 自顶向下增量测试 (Top-Down)
顺序:从主控模块(顶层)开始,向下逐步集成。
辅助手段:桩模块(Stub)。
解释:当你要测试上层模块时,下层模块还没写好,你就写一个 “假” 的模块(桩模块)来模拟下层的返回结果。
优点:
能尽早发现顶层架构设计的错误。
不需要驱动模块(Driver)。
缺点:
需要编写大量的桩模块。
在测试底层模块时,由于路径长,测试效率可能较低。 - 自底向上增量测试 (Bottom-Up)
顺序:从最底层的功能模块开始,向上逐步集成。
辅助手段:驱动模块(Driver)。
解释:下层模块写好了,但没人调用它。你需要写一个 “假” 的主程序(驱动模块)来传递数据,调用这些下层模块进行测试。
优点:
不需要编写桩模块。
测试用例容易设计,测试效率高。
缺点:
需要编写大量的驱动模块。
直到最后才能看到系统的整体轮廓(顶层设计的错误发现得晚)。
【自考易错提示】:注意与非增量式集成测试的区别
【题型训练】
简答题:简述增量式集成测试的优点
参考答案:
- 容易定位缺陷(1分)
- 降低测试复杂度(1分)
- 可早期发现接口问题(1分)
应用题:有A(顶层)、B、C(底层)三个模块,A调用B,B调用C。请设计自顶向下增量式集成测试的步骤
参考答案:
- 测试A模块(使用B的桩模块)(1分)
- 集成A和B(使用C的桩模块),测试A→B接口(1分)
- 集成A、B、C,测试完整功能(1分)
- 执行回归测试(1分)
数据流分析定义-使用测试
【详细解释】:
定义 (Definition):出生(赋值)。
使用 (Use):上学、工作(引用)。
数据流测试:检查是不是 “没出生就去工作了”(未定义先使用),或者 “出生了一辈子没工作过”(定义未使用,代码冗余)。
全定义覆盖的要求
目标:多个d, 一个u. 让 所有d 的值至少被使用一次。
全使用覆盖的要求
目标:1个d多个u. 让 u1 和 u2 都执行一次。
? 通常情况下,全使用覆盖更强。因为要覆盖所有的使用场景,往往需要覆盖更多的路径。
-
定义 / 使用路径覆盖 (Definition-Use Path Coverage, DU 覆盖) —— 最常用
定义:对于程序中的每一个变量 x,以及每一个对 x 的定义 d,都至少存在一条路径,从 d 出发,到达 x 的一个使用 u,且在这条路径上 x 的值没有被重新定义。
通俗说:每个变量出生后,至少要被使用一次,而且中间不能 “变性”(被重新赋值)。 -
全定义覆盖 (All Definitions Coverage)
定义:确保程序中每一个变量的所有定义都至少被覆盖一次(即至少被使用过一次)。
通俗说:每个变量出生后,至少要露一次面。 -
全使用覆盖 (All Uses Coverage)
定义:确保程序中每一个变量的每一次使用都至少被覆盖一次。
通俗说:变量的每一次出场(使用)都要被测试到。 -
全定义 - 使用路径覆盖 (All Definition-Use Paths Coverage)
定义:对于每一个变量的每一个定义 d,以及该定义的每一个使用 u,所有从 d 到 u 的路径都要被测试。
通俗说:最严格的标准,只要有路径,就必须走一遍(路径爆炸,实际很难做到)。
- 分析变量的定义(赋值)和使用(引用)位置
- 测试路径:确保变量在使用前已定义,定义后被使用
- 类型:
- 定义-使用路径(def-use path)
- 完整定义-使用路径
优点:能发现未初始化变量、变量未使用等问题
【自考易错提示】:注意定义和使用的区别
【题型训练】
简答题:简述数据流分析定义-使用测试的目的
参考答案:
- 确保变量在使用前已定义(1分)
- 确保变量定义后被使用(1分)
- 发现未初始化变量、变量未使用等问题(1分)
应用题:代码片段:
int a;
if (x>0) {
a = 1;
}
print(a);
请用定义-使用测试分析可能的问题
参考答案:
- 当x≤0时,a未定义就被使用(2分)
- 存在定义-使用路径缺陷(1分)
- 修复方法:初始化a的值(1分)
基本路径测试
如何将流程图转换为控制流图
https://www.bilibili.com/video/BV1nmibB6ERe/?spm_id_from=333.337.search-card.all.click&vd_source=b0f41d9d7ad36d30661827932df6bf16
【详细解释】:
- 基于程序控制流图,设计测试用例覆盖所有独立路径
- 步骤:
- 绘制控制流图
- 计算圈复杂度(独立路径数)
- 设计测试用例覆盖所有独立路径
圈复杂度计算:V(G) = E - N + 2(E:边数,N:节点数)
【自考易错提示】:注意圈复杂度的计算方法
【题型训练】
简答题:简述基本路径测试的步骤
参考答案:
- 绘制控制流图(1分)
- 计算圈复杂度(1分)
- 设计测试用例覆盖所有独立路径(1分)
应用题:控制流图有5个节点,7条边,计算圈复杂度并说明独立路径数
参考答案:
- 圈复杂度V(G) = E - N + 2 = 7 - 5 + 2 = 4(2分)
- 独立路径数=圈复杂度=4(2分)
基于等价类划分的边界分析法设计测试用例
【详细解释】:
- 先进行等价类划分,再对边界条件进行测试
- 步骤:
- 划分有效和无效等价类
- 确定边界值(最小值、最大值、相邻值)
- 设计测试用例覆盖等价类和边界值
优点:结合两种方法的优点,能发现更多缺陷
【自考易错提示】:注意边界值的选择(最小值-1、最小值、最大值、最大值+1)
【题型训练】
简答题:简述基于等价类划分的边界分析法的步骤
参考答案:
- 划分有效和无效等价类(1分)
- 确定边界值(1分)
- 设计测试用例覆盖等价类和边界值(1分)
应用题:用户年龄要求18-60岁(含),请用该方法设计测试用例
参考答案:
-
等价类划分:
- 有效:18≤年龄≤60
- 无效:年龄<18,年龄>60
-
边界值:17、18、60、61
-
测试用例:
- 年龄=17(无效,边界值)(1分)
- 年龄=18(有效,边界值)(1分)
- 年龄=30(有效,中间值)(1分)
- 年龄=60(有效,边界值)(1分)
- 年龄=61(无效,边界值)(1分)
更多推荐


所有评论(0)