🌙
交互式练习

LLM 练习 007

38 道题 · 选择题 + 填空题 + 简答题 + 代码实战 · 即时反馈 · 记录保存
← 返回主页
客观题
0/20
主观题
0/18
做题记录

做题记录

    暂无记录

    答题详情

    一、单选题(10 题)
    第 1 题单选题
    正则表达式最适合解决下面哪类问题?
    A 计算两个整数之和
    B 从一段文本中提取所有手机号
    C 创建 MySQL 数据库
    D 绘制折线图
    第 2 题单选题
    Python 中使用正则表达式通常需要导入哪个模块?
    A os
    B sys
    C re
    D math
    第 3 题单选题
    re.match() 的主要特点是?
    A 从字符串开头尝试匹配
    B 扫描全文并返回所有结果
    C 只能匹配数字
    D 专门用于替换字符串
    第 4 题单选题
    想从全文中找出所有 11 位数字,最适合使用哪个函数?
    A re.match()
    B re.findall()
    C print()
    D len()
    第 5 题单选题
    正则表达式中,\d 表示什么?
    A 任意空白字符
    B 任意数字
    C 任意字母
    D 字符串结尾
    第 6 题单选题
    正则表达式中,^1\d{10}$ 更适合用于校验什么?
    A 是否是完整的 11 位手机号格式
    B 是否包含任意数字
    C 是否包含空格
    D 是否是 SQL 语句
    第 7 题单选题
    .*.*? 的主要区别是?
    A .* 是非贪婪,.*? 是贪婪
    B .* 默认尽可能多匹配,.*? 尽可能少匹配
    C 二者完全一样
    D 二者都只能匹配数字
    第 8 题单选题
    SQL 中,DDL 主要负责什么?
    A 查询表中数据
    B 定义数据库和表结构
    C 控制 Python 循环
    D 清洗文本
    第 9 题单选题
    对表记录进行新增、修改、删除,主要属于哪类 SQL?
    A DDL
    B DML
    C DQL
    D DCL
    第 10 题单选题
    多表查询中,如果漏写连接条件,最容易出现什么问题?
    A 查询速度一定变快
    B 产生大量错误组合,也就是笛卡尔积
    C 自动删除重复数据
    D 自动创建外键
    二、填空题(10 题)
    第 11 题填空题
    正则表达式的核心作用是用一套规则去匹配一类()。
    第 12 题填空题
    re.search() 会扫描整个字符串,并返回第()个匹配成功的结果。
    第 13 题填空题
    re.findall() 的常见返回结果是一个()。
    第 14 题填空题
    正则表达式中,\s 表示匹配()字符。
    第 15 题填空题
    正则表达式中,{m,n} 表示前一个字符出现()到()次。
    第 16 题填空题
    在手机号完整校验中,^ 表示字符串(),$ 表示字符串()。
    第 17 题填空题
    正则表达式中,使用()可以把匹配结果中的一部分单独提取出来。
    第 18 题填空题
    SQL 中,SELECT 语句属于()语言,主要用于查询数据。
    第 19 题填空题
    更新或删除数据时,如果忘记写()条件,可能会影响整张表。
    第 20 题填空题
    多表查询的核心思想是把多张表按照关系连接成一张()结果表,再进行查询。
    三、简答题(10 题)
    第 21 题简答题
    正则表达式相比普通字符串查找强在哪里?
    查看参考答案 ▼
    普通字符串查找只能匹配固定内容,正则表达式可以描述一类规则(如所有手机号、所有邮箱、所有日期)。它支持模糊匹配字符类数量词边界定位等,这是普通字符串查找做不到的。
    第 22 题简答题
    请说明 re.match()re.search()re.findall() 的区别。
    查看参考答案 ▼
    re.match() 从字符串开头匹配,不成功返回 None;re.search() 扫描整个字符串,返回第一个匹配;re.findall() 扫描整个字符串,返回所有匹配组成的列表。
    第 23 题简答题
    为什么手机号校验不能只写 \d+
    查看参考答案 ▼
    \d+ 只表示一个或多个连续数字,不限制位数,也不限制字符串边界。12 位数字也会被匹配,含有非数字字符的字符串也会匹配出其中的数字片段。完整手机号校验需要 ^1\d{10}$
    第 24 题简答题
    什么是正则分组?它有什么用?
    查看参考答案 ▼
    分组用小括号 () 把正则的一部分规则包起来。它可以从完整匹配中单独提取子部分,例如从日期字符串 2026-06-01 中分别提取年、月、日。也便于分组引用替换
    第 25 题简答题
    贪婪模式和非贪婪模式有什么区别?
    查看参考答案 ▼
    贪婪模式在匹配成功的前提下会尽可能多地匹配字符;非贪婪模式会尽可能少匹配,只到满足匹配条件的最小长度。常见例子:.*(贪婪)vs .*?(非贪婪)。
    第 26 题简答题
    RAG 文档清洗中,正则表达式可以用来做什么?
    查看参考答案 ▼
    可以删除页码、页眉页脚、内部标记(如【内部资料】)、重复空行;也可以提取标题,时间、编号、URL 等结构化信息;还能清洗特殊符号,统一文本格式,为后续向量化和检索做准备。
    第 27 题简答题
    数据库、数据表和字段之间是什么关系?
    查看参考答案 ▼
    数据库是存储和管理数据的容器;数据表是数据库中某一类数据的结构;字段是表中的列,描述每条记录的属性。关系:数据库包含多张表,一张表包含多个字段。
    第 28 题简答题
    DDL、DML、DQL 分别负责什么?
    查看参考答案 ▼
    DDL(Data Definition Language)负责定义和管理数据库及表结构:CREATE、DROP、ALTER。DML(Data Manipulation Language)负责对表数据进行增删改:INSERT、UPDATE、DELETE。DQL(Data Query Language)负责查询数据:SELECT。
    第 29 题简答题
    为什么 UPDATEDELETE 必须谨慎使用 WHERE
    查看参考答案 ▼
    没有 WHERE 条件的 UPDATE 或 DELETE 会作用于表中所有记录,导致全部数据被修改或清空。生产环境中这是极其危险的操作,可能造成不可逆的数据损失。
    第 30 题简答题
    多表查询为什么重要?它解决什么问题?
    查看参考答案 ▼
    真实业务中,数据通常分散在多张表中(如商品表和分类表)。多表查询通过表之间的关系(外键)把数据连接起来,生成完整结果,避免数据冗余和一致性问题。
    四、代码实战(8 题)
    第 31 题代码实战
    提取手机号(模仿)
    使用正则表达式从文本中提取所有 11 位手机号。
    查看参考答案 ▼
    import re text = "联系人A: 13800138000, 联系人B: 13900139000, 编号: A1001" phones = re.findall(r"\\d{11}", text) print(phones)
    第 32 题代码实战
    创建学生表(模仿)
    创建 student 表,包含 id(主键自增)、name(非空字符串)、age(整数)、score(decimal)。
    查看参考答案 ▼
    CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT, score DECIMAL(5, 2) );
    第 33 题代码实战
    查询指定列(模仿)
    从 product 表中查询商品名称 name 和价格 price。
    查看参考答案 ▼
    SELECT name, price FROM product;
    第 34 题代码实战
    提取订单号(变体)
    从文本中提取所有以 P 开头、后面跟 4 位数字的订单号。
    查看参考答案 ▼
    import re text = "订单号: P1001, P2030, X999, P8888" orders = re.findall(r"P\\d{4}", text) print(orders)
    第 35 题代码实战
    完整校验手机号(变体)
    判断列表中哪些是完整合法的 11 位手机号格式。
    查看参考答案 ▼
    import re phones = ["13800138000", "电话13800138000", "13800138000123", "13900139000"] for phone in phones: if re.match(r"^1\\d{10}$", phone): print(phone)
    第 36 题代码实战
    条件查询加排序(变体)
    查询 product 表中价格大于 100 的商品,并按价格从高到低排序。
    查看参考答案 ▼
    SELECT * FROM product WHERE price > 100 ORDER BY price DESC;
    第 37 题代码实战
    RAG 文档清洗(综合)
    提取手机号、删除页码、内部标记、页脚,压缩重复空行。
    查看参考答案 ▼
    import re raw = <span class="str">"""第 1 页\ 【内部资料】课程答疑记录\ \ 学生手机号:13800138000\ 问题:re.match 和 re.search 有什么区别?\ \ \ 页脚:仅供学习"""</span> phones = re.findall(r"\\d{11}", raw) cleaned = re.sub(r"第\\s*\\d+\\s*页", "", raw) cleaned = re.sub(r"【.*?】", "", cleaned) cleaned = re.sub(r"页脚:.*", "", cleaned) cleaned = re.sub(r"\ {2,}", "\ ", cleaned).strip() print(phones) print(cleaned)
    第 38 题代码实战
    电商商品数据查询(综合)
    基于 category 和 product 表完成:1.商品名称+价格+分类名;2.价格>平均价的商品;3.每个分类商品数量;4.库存最低的前3个商品。
    查看参考答案 ▼
    -- 1. 商品名称、价格、分类名称(INNER JOINSELECT p.name, p.price, c.name FROM product p INNER JOIN category c ON p.category_id = c.id; -- 2. 价格高于平均价的商品(子查询) SELECT * FROM product WHERE price > (SELECT AVG(price) FROM product); -- 3. 每个分类商品数量(GROUP BYSELECT category_id, COUNT(*) AS product_count FROM product GROUP BY category_id; -- 4. 库存最低的前3个商品(ORDER BY + LIMITSELECT * FROM product ORDER BY stock ASC LIMIT 0, 3;