资讯详情 大厂AI面试经典试题拆解:题型映射、手算步骤与避坑
📅 2026/10/27 20:14:12
简介这份《百度人工智能的几份经典考试试题》面向备考人工智能课程、准备笔试面试或考研复试的学习者用于系统梳理核心概念并开展题型训练。压缩包内仅1个doc文档约279KB内容集中便于打印批注和反复复习。试题按选择题、填空题、简答计算题、应用题四类编排覆盖语义网络、归结推理、产生式系统、可信度CF、谓词逻辑与MGU、知识表示、机器学习及自然语言处理等考点并附参考答案和知识点总结。已有1586人学习读者可用于限时自测、对照答案定位薄弱环节再按语义网络、推理与知识表示等模块回补概念适合需要把零散知识串成考试框架的课程学习者与面试准备者。1. 一套大厂 AI 经典试题的拆解价值从选择题到应用题的覆盖边界如果你正在找大厂人工智能面试题或者想把 AI 经典考试试题按题型系统刷一遍这套 A/B 卷值得先看结构而不是急着背答案。它把选择题、填空题、简答计算题、应用题按 15、30、25、30 分排开覆盖语义网络、归结推理、产生式系统、可信度 CF、α-β 剪枝、专家系统、搜索策略。适合课程期末复盘、面试前查漏、带学生做习题课的人。它不负责教你从零学 AI负责把“手算步骤”和“概念边界”压成可检查的题面。用它的正确姿势是先做知识点映射再挑三类计算题手算最后用错题反查教材定义。这套题的价值不在答案本身而在它把容易混的概念放进了同一张卷子逼你区分“会背”和“会算”。2. 题型与知识点映射A/B 卷 15302530 的分值怎么用2.1 题型分布与分值权重这套题库的 A/B 卷结构很稳定选择题 15 题共 15 分填空题约 20 个空共 30 分简答及计算题 5 题共 25 分应用题 3 题共 30 分。很多人一上来从选择题开始刷刷完觉得“都会”结果填空题一写就漏字应用题一画就乱。选择题的分值低但它负责暴露概念边界填空题分值高考的是术语和公式的精确复现简答计算题考步骤应用题考建模和图示。复习时不要把四类题当成同一种题它们的丢分机制完全不同。题型分值题量主要考点建议动作选择题1515AI 缩写、归结、产生式、语义网络、搜索、专家系统限时 12 分钟错题只标知识点填空题30约 20 空不确定性类型、删除策略、CF、图、MGU、产生式、AI 目标闭卷默写按空给分简答计算255三值逻辑、产生式语义、子句集 8 步、MGU、归结证明每道写完整步骤不跳步应用题303语义网络、α-β 剪枝、谓词逻辑祖孙关系先定义谓词再画表或图从分权看填空题和简答计算合计 55 分是这套题的主战场。选择题里的“AI 英文缩写”“或图称为什么图”“不属于 AI 学派的是哪个”属于记忆型题错一次记一次就够填空题里的“不确定性类型按性质分”“删除策略删除哪些子句”“CF 的三个关系式”则是典型的一错一串必须手写。我的建议是先把填空题拆成 20 个独立空每个空写一行“题干触发词 → 答案 → 易错写法”再回到选择题。选择题可以猜填空题猜不了。A/B 卷之间有重复知识点比如归结式为空子句、产生式推理方式、语义网络的继承性、α-β 剪枝条件、专家系统组成。重复不是冗余是二刷的锚点。第一遍做 A 卷时把重复点标出来第二遍做 B 卷时只做标出来的题第三遍再全卷限时。三轮之间不要隔太久隔太久会变成重新学。2.2 知识点映射表从选择题到应用题把这套题拆成知识点后会发现它其实围绕六条线知识表示、归结推理、产生式系统、不确定性推理、搜索与博弈、专家系统与 AI 基础。每条线在四类题型里都有落点。下面这张表是按题面内容整理的映射不按原卷顺序方便你按线复习。知识线选择题落点填空题落点简答计算落点应用题落点知识表示语义网络 AKO/ISA、或图图的节点与有向边、与或图产生式语义语义网络表示人物、公司、比赛归结推理归结式、空子句、假言推理删除策略、子句集子句集 8 步、MGU、归结证明祖孙关系证明与求解产生式系统正向推理、可触发规则被触发规则产生式组成数字序列产生式描述不确定性推理可信度 CF 含义CF 补、合取、析取公式模糊性知识解释无搜索与博弈或图、最优解搜索状态空间图、启发函数α-β 剪枝条件博弈树剪枝专家系统与基础AI 学派、AI 目标、机器智能测试专家系统组成、知识表示方法专家系统开发步骤无这张表的作用是防止“刷题刷散”。比如你在选择题里看到“语义网络有向弧 AKO 链、ISA 链用来表达节点知识的什么性质”答案落在继承性到了应用题你要用 ISA 把个体连到类用 AKO 把子类连到父类。同一个概念选择题考定义应用题考画法。如果只背“继承性”三个字画图时仍然会把 ISA 和 AKO 画反。再比如 CF。选择题问 C(B|A) 表示什么填空题问 CF(~A)、CF(A1∧A2)、CF(A1∨A2) 怎么算简答题可能让你解释模糊性知识。这三类题必须用同一套公式口径否则会出现“选择题选对了填空题写错公式”的情况。这套资料里 CF 公式存在两套写法第 5 章会展开这里先记住做题前先确认你用的教材版本。2.3 怎么用这套题做三轮复习第一轮只做“概念映射”不追求限时。拿一张 A4 纸左边写题号右边写它考的知识线和触发词。比如“归结式为空子句”对应“反证法结束条件”“MGU”对应“差异集与置换合成”“α-β 剪枝”对应“MAX 层 α、MIN 层 β”。这一轮允许翻书但每翻一次书就在题号旁画一个正字最后统计哪条知识线翻书最多。翻书最多的那条线就是第二轮的重点。第二轮只做“计算题手写”。从简答计算题里挑四类子句集 8 步、MGU、归结证明、α-β 剪枝。每类找两道题不写答案只写步骤。子句集 8 步要写出每一步的中间公式MGU 要写出差异集、置换、合成后的子句集归结证明要写出每条子句的来源和置换α-β 剪枝要在边上标 α、β 和剪枝符号。写完再对照答案重点看“哪一步被跳过”。很多人不是不会是跳步导致置换方向写反。第三轮做“错题回读”。错题本不要抄整道题只记三个字段触发条件、我错的步骤、正确口径。比如“触发条件看到‘结论否定’我错的步骤直接否定结论后忘了最后要看置换正确口径证明存在用否定结论求解用重言式”。这三个字段写满一页比抄十页答案有用。提示这套题的填空题按空给分术语多写一个字少写一个字都可能丢分。默写时用“空位编号 答案”的格式不要写成一段话。如果要把这套题用于面试复盘建议把应用题当口头题练。语义网络题用 30 秒说清节点和弧α-β 剪枝题用 60 秒说清剪枝条件祖孙关系题用 90 秒说清谓词定义、已知事实、结论否定、置换和结果。面试里没人等你画完一整棵树能说清触发条件就够了。3. 归结推理与 MGU用差异集把 8 步子句集和置换算清楚3.1 子句集转换的八个步骤谓词公式转子句集是这套题里最容易“看着会、写着错”的部分。试卷答案给了 8 步消去蕴含和等价、缩小否定词作用范围、适当改名使量词间不含同名指导变元和约束变元、消去存在量词、消去全称量词、化成合取范式、适当改名使子句间无同名变元、消去合取词并用逗号代替。每一步都有具体的检查点不能只背标题。第一步消去蕴含和等价常见写法是 A→B 换成 ¬A∨BA↔B 换成 (A→B)∧(B→A)。第二步把否定推到原子公式前用德摩根律和量词否定规则。第三步改名是为了防止量词辖域里的变量撞名尤其是多个全称量词和存在量词混在一起时。第四步消去存在量词如果存在量词不在任何全称量词辖域内就用一个新常量如果在全称量词辖域内就用一个依赖全称变量的函数。这里不要写“Skolem”字样记成“存在量词消去函数”更稳。第五步消去全称量词直接去掉全称量词保留变量。第六步化成合取范式用分配律把∨分配到∧上。第七步子句间改名防止不同子句用同一个变量名。第八步去掉∧用子句集合表示。手算时建议在每一步后面写“当前公式”不要只写“第 1 步、第 2 步”。因为错误往往发生在第 3 步改名和第 7 步子句改名之间。改名不是形式主义它决定后面归结时置换会不会撞车。我的习惯是每消去一个量词就在旁边标注“此变量后面对应哪个函数/常量”最后检查子句集里有没有同名变元跨子句出现。注意子句集转换的 8 步不是固定死顺序但“消去存在量词”必须在“消去全称量词”之前否则存在量词的依赖关系会丢。3.2 MGU 求法差异集、置换合成与终止条件MGU 是“最一般合一”的缩写。求 MGU 的核心动作是找差异集、选变量、做置换、合成置换、检查是否变成单元素集。这套题里给了一个典型例子S{P(f(x),y,g(y)), P(f(x),z,g(x))}。手算过程可以拆成下面四步。先令 k0S0Sδ0ε。S0 不是单元素集找差异集 D0{y,z}。y 是变元z 是项且 y 不在 z 中出现所以可以做置换 {z/y}意思是把 y 替换成 z。令 δ1δ0·{z/y}{z/y}S1S0·{z/y}{P(f(x),z,g(z)), P(f(x),z,g(x))}。S1 仍然不是单元素集找差异集 D1{z,x}。z 和 x 都是变元可以做置换 {z/x}意思是把 x 替换成 z。令 δ2δ1·{z/x}{z/y, z/x}S2S1·{z/x}{P(f(z),z,g(z))}。S2 是单元素集算法终止MGUδ2。这里最容易错的不是差异集而是置换方向。{z/x} 表示 x 换成 z不是 z 换成 x。写成 δ2{z/y, z/x} 时读法是 y→z、x→z。最后实例化时两个原子公式都变成 P(f(z),z,g(z))检查一遍就能确认方向没反。第二道 MGU 题是 W{P(f(x,g(A,y)),z), P(f(x,z),z)}。差异集先取 {g(A,y), z}z 是变元g(A,y) 是项且 z 不在 g(A,y) 中出现所以做置换 {g(A,y)/z}。置换后 S1{P(f(x,g(A,y)),g(A,y))}已经是单元素集MGU{g(A,y)/z}。这道题的关键是“z 不在 g(A,y) 中出现”如果出现就要做 occurs check不能直接置换。手算 MGU 时建议用“三列法”左列写当前子句集中列写差异集右列写置换和合成结果。每做一次置换就把新子句集重新抄一遍不要在原式上涂改。抄一遍虽然慢但能避免置换没作用到所有参数上的错误。3.3 用 Python 写一个最小 MGU 验算器手算完之后可以用一个很小的 Python 脚本验算置换。这个脚本不依赖第三方库变量用小写单字母表示函数用元组表示常量用大写字符串表示。脚本只做三件事解析置换链、检查变量是否出现、逐个参数合一。def is_var(t): # 变量约定小写单字母字符串如 x、y、z return isinstance(t, str) and t.islower() def walk(t, subst): # 沿着置换链一直解析直到不是变量或没有映射 while is_var(t) and t in subst: t subst[t] return t def occurs(v, t, subst): # occurs check防止把变量映射到包含自己的项 t walk(t, subst) if t v: return True if isinstance(t, tuple): return any(occurs(v, arg, subst) for arg in t[1:]) return False def unify_term(a, b, subst): a walk(a, subst) b walk(b, subst) if a b: return subst if is_var(a): if occurs(a, b, subst): return None new_subst subst.copy() new_subst[a] b return new_subst if is_var(b): if occurs(b, a, subst): return None new_subst subst.copy() new_subst[b] a return new_subst if isinstance(a, tuple) and isinstance(b, tuple): if a[0] ! b[0] or len(a) ! len(b): return None for x, y in zip(a[1:], b[1:]): subst unify_term(x, y, subst) if subst is None: return None return subst return None def unify_atoms(a, b, subst): # 原子公式格式(P, 参数1, 参数2, ...) if a[0] ! b[0] or len(a) ! len(b): return None for x, y in zip(a[1:], b[1:]): subst unify_term(x, y, subst) if subst is None: return None return subst def apply_term(t, subst): t walk(t, subst) if isinstance(t, tuple): return (t[0],) tuple(apply_term(arg, subst) for arg in t[1:]) return t if __name__ __main__: # 对应试题 S{P(f(x),y,g(y)), P(f(x),z,g(x))} atoms [ (P, (f, x), y, (g, y)), (P, (f, x), z, (g, x)) ] subst {} for atom in atoms[1:]: subst unify_atoms(atoms[0], atom, subst) if subst is None: break print(MGU:, subst) print(实例化:, [apply_term(a, subst) for a in atoms])这段代码的逻辑不复杂。is_var负责判断变量walk负责把置换链解析到底比如{y:z, z:x}里y最终要走成xoccurs做出现检查防止x-f(x)这种循环unify_term处理变量、函数和常量三类项unify_atoms先检查谓词名和参数个数再逐个参数合一。运行结果的置换写法可能和手算答案方向不同比如输出{y:z,z:x}手算写{z/y, z/x}但两者实例化后都得到同一个原子公式等价。参数说明要记清变量必须是小写单字母函数必须写成元组第一项是函数名常量用大写字符串避免和变量混淆。如果题目里的项更复杂比如带下标或多字母变量先把变量名改写成单字母再跑脚本不要直接改判断逻辑。脚本只用于验算不替代手算步骤考试时还是要写差异集和置换合成。4. 语义网络与知识表示把应用题画成节点表、弧表和检查清单4.1 语义网络三件套节点、有向弧、继承链语义网络不是“随便画几个框连箭头”。它有三个必须说清的东西节点表示概念、实体或事件有向弧表示关系弧上的标签表示关系类型。这套题反复考 AKO 链和 ISA 链原因就是它们决定继承性。ISA 表示“是一个实例”或“是一个子类”AKO 表示“是一种”两者都参与继承但方向不能乱。更稳的记法是ISA 连接个体和类比如“甲 ISA 人”AKO 连接子类和父类比如“经理 AKO 员工”。有些教材把 ISA 也用于子类到父类这时要看题目约定。这套题的选择题问“有向弧 AKO 链、ISA 链是用来表达节点知识的什么”答案落在继承性说明它把两者都当作继承链。做题时先按题目约定不要拿另一本教材的约定硬套。语义网络里还有属性弧比如“年龄”“地址”“比分”。属性弧不是继承链它挂的是具体值。画应用题时先建节点表再建弧表最后按弧表回读成一句人话。回读不通说明弧名或方向有问题。4.2 把“某人是某公司经理”拆成 ISA/AKO/属性弧拿应用题里的第一问做模板甲是乙公司的经理35 岁住在丙地址。不要一上来画图先列节点。节点包括甲人物、乙公司组织、35年龄值、丙地址地址值。如果题目要求表达“经理”这个身份还可以加一个“经理”类节点。然后列弧起点弧标签终点说明甲ISA人个体到类甲ManagerOf乙公司任职关系甲Age35属性弧甲Address丙地址属性弧经理AKO员工子类到父类可选如果题目只要求表达事实不要求表达类层次经理 AKO 员工可以不加如果题目明确考 AKO/ISA就要把类层次补上。这里最容易犯的错是把“甲是乙公司的经理”画成“甲 ISA 乙公司”读起来变成“甲是一个乙公司”明显不通。正确读法是“甲 ManagerOf 乙公司”ISA 只连到“人”或“经理”类。第二问是 A 校与 B 校进行篮球比赛比分 89:102。这里不要把比分直接挂在 A 校或 B 校下面要建一个“比赛事件”节点。节点表A 校、B 校、比赛事件、89、102。弧表起点弧标签终点说明A 校ISA学校个体到类B 校ISA学校个体到类比赛事件HomeTeamA 校主队比赛事件AwayTeamB 校客队比赛事件ScoreA89得分比赛事件ScoreB102得分这样画的好处是比分有归属不会出现“A 校得分 89、B 校得分 102”两条弧互相打架。事件节点是语义网络里常用的建模手法比赛、考试、交易这类有时序和参与者的概念都适合单独建节点。4.3 用表格代替手绘图节点表 弧表 检查清单手绘图在纸上好看但复习时不好检查。我一般要求学生先交节点表和弧表再画图。节点表至少三列节点名、节点类型、备注。弧表至少四列起点、弧标签、终点、读法。检查清单用五个问题检查项通过标准常见错误节点是否有类型每个节点能说出是人物、组织、事件还是值把“35”和“甲”画成同一类节点弧是否有方向每条弧从起点读到终点能成句ISA 和 AKO 画反继承链是否只用于分类ISA/AKO 不用于任职、地址、比分把 ManagerOf 写成 ISA属性弧是否带值Age、Address、Score 都连到具体值属性弧悬空事件是否单独建节点比赛、考试等有参与者的事件独立成节点比分挂在参赛方下面谓词逻辑表达也要和语义网络对齐。题目“某个学生读过某本古典小说”可以形式化为存在 xStudent(x) 且 Read(x, Book)。语义网络里就是“学生节点 —Read→ 书节点”再加一个存在量词标记。不要把“某个”画成全称也不要把“读过”画成 ISA。谓词公式和语义网络是两种表示检查时看它们能不能互相翻译。提示语义网络题先写弧表再画图比直接画图快。弧表里每条弧读成“主语—关系—宾语”读不通就改。5. 避坑与排查这套经典试题里最容易翻车的五个点5.1 先做一张排查总表这套题年代久、版本多答案和题干之间有几处口径不一致。直接背答案最容易在填空题和证明题上翻车。下面先把五个高频坑列成总表后面逐条拆现象、原因和解决。坑位现象根因解决动作归结结束条件把“永真式”当成定理得证混淆反证法结束条件和子句删除条件证明最后一行必须是空子句CF 公式同一套资料出现两套 CF 写法不同教材的确定性因子定义不同先锁定教材口径再做边界测试结论否定与求解证明出存在祖孙关系却给不出具体人反证法证明存在性和求解是两种模式求具体解时用重言式保留变量语义网络弧名ISA 和 AKO 画反把个体到类、子类到父类混为一谈每条弧读成一句人话再检查α-β 剪枝在 MAX 层用 β 剪枝α、β 的层归属记反先序标 α/β倒推时更新5.2 逐条拆现象、原因、解决坑一归结式为空子句不是永真式。现象是有些整理稿在选择题里写“当前归结式是永真式时定理得证”照着背就会选错。原因是把“子句集里可以删除永真式”和“反证法证明结束”混在一起。归结证明是反证法把结论否定加入子句集不断归结直到推出空子句 □才说明原子句集不可满足定理得证。永真式只能说明该子句对矛盾没有贡献可以删掉不能结束证明。解决动作很简单每做完一道归结证明看最后一行是不是 □如果不是检查结论否定有没有加、置换有没有作用到所有文字。坑二CF 公式有两套写法不能混用。现象是同一套资料里一处写 CF(~A)-CF(A)、CF(A1∧A2)min{CF(A1),CF(A2)}、CF(A1∨A2)max{CF(A1),CF(A2)}另一处整理稿写 CF(~A)1-CF(A)、合取取乘积、析取用和减积。原因是确定性因子在不同教材里有不同定义有的用 [-1,1]有的用 [0,1]补运算和合成公式自然不同。解决动作做题前先翻目标教材的目录或符号表确认 CF 的取值范围和三条公式做边界测试取 CF(A)0.8如果公式写 -CF(A) 得 -0.8写 1-CF(A) 得 0.2结果差很多一眼就能发现混用。考试时按试卷答案的口径写复习笔记里注明“此公式对应哪本教材”不要两边都抄。坑三证明存在性和求具体解最后一步不一样。现象是祖孙关系题用结论否定做归结最后得到 □只能说明“存在祖孙关系”题目却问“谁和谁是祖孙关系”。原因是反证法证明存在性时结论否定会消掉变量要求具体解需要保留变量。解决动作证明存在性时结论否定写成 ¬G(u,v)归结到 □ 即可求具体解时把结论否定换成重言式 ¬G(u,v)∨G(u,v)这个子句恒真不会破坏矛盾但保留了 u、v最后归结得到 G(甲,丙)就能读出甲是丙的祖父。排查时看最后一行是 □ 还是带变量的结论。坑四ISA 和 AKO 画反。现象是画语义网络时把“甲 ISA 人”写成“人 ISA 甲”或者把“经理 AKO 员工”写成“员工 AKO 经理”。原因是只记了“继承”两个字没记方向。解决动作每条弧读成“起点—关系—终点”。ISA 读“甲是一个人”通读“人是一个甲”不通。AKO 读“经理是一种员工”通读“员工是一种经理”不通。属性弧也要读比如“甲 Age 35”读“甲的年龄是 35”通“35 Age 甲”不通。画完先读一遍读不通就改方向。坑五α-β 剪枝的层归属记反。现象是在 MAX 层用 β 剪枝或者在 MIN 层用 α 剪枝。原因是 α 是 MAX 节点的当前下界β 是 MIN 节点的当前上界剪枝发生在“后继层”而不是“当前层”。解决动作先序给节点标 α 或 β。α 剪枝发生在 MIN 节点之下如果任一先辈 MAX 节点的 α 值大于或等于当前 MIN 节点的 β 值即 α(先辈 MAX)≥β(MIN)就剪掉这个 MIN 节点以下的分支。β 剪枝发生在 MAX 节点之下如果当前 MAX 节点的 α 值大于或等于任一先辈 MIN 节点的 β 值即 α(MAX)≥β(先辈 MIN)就剪掉这个 MAX 节点以下的分支。手算时不要背句子直接在边上写“α≥β剪”倒推值时只更新被保留的节点。这五个坑里前三个是资料口径问题后两个是概念方向问题。排查顺序建议从“最后一行”开始归结证明看最后一行是不是 □CF 计算看取值范围语义网络看弧的读法α-β 剪枝看剪枝发生在哪一层。每次只查一个变量不要同时改公式和改图。6. 把题库变成错题本三个验证动作和一个手算习惯这套 A/B 卷我后来不再按“做完对答案”的方式用而是按“三个验证动作”用。第一个动作是置换实例化任何 MGU 或归结置换都把它代回原子公式检查两个子句是否变成同一个项。手算写{z/y, z/x}就用脚本或手算代回去看是不是P(f(z),z,g(z))。代不回去置换方向一定有问题。第二个动作是 CF 边界测试做题前先取 CF(A)0.8、CF(A)0.2 各算一遍确认自己用的是-CF(A)还是1-CF(A)是min/max还是乘积/和减积。公式口径没锁定填空题写满也拿不到分。第三个动作是语义网络弧表回读画完图不看图先看弧表每条弧读成“起点—关系—终点”读不通就改方向。一个手算习惯是错题本只记“触发条件”和“最后一步”不抄整道题。比如“看到‘结论否定’求具体解最后一步要换成重言式”“看到‘归结式’问定理得证最后一行必须是空子句”“看到‘α-β 剪枝’先标 MAX/MIN 再写条件”。这个习惯来自一次带习题课的经历我图省事直接拿整理稿里的 CF 公式讲结果和试卷答案对不上现场被问住。从那以后我每次讲这套题都先强制跑一遍公式对照和置换实例化再开口。希望帮到你。资料包里保留了 A/B 卷、答案和一张知识点映射表入口放在文末拿到后先做第 2 章的三轮标记再开刷不要从第一题开始背。本文还有配套的精品资源点击获取